更新夜盘日期错误问题
This commit is contained in:
parent
5f5227ec21
commit
766fe6f266
@ -49,6 +49,7 @@ exchangeMap[EXCHANGE_SHFE] = 'SHFE'
|
||||
exchangeMap[EXCHANGE_CZCE] = 'CZCE'
|
||||
exchangeMap[EXCHANGE_DCE] = 'DCE'
|
||||
exchangeMap[EXCHANGE_SSE] = 'SSE'
|
||||
exchangeMap[EXCHANGE_SZSE] = 'SZSE'
|
||||
exchangeMap[EXCHANGE_INE] = 'INE'
|
||||
exchangeMap[EXCHANGE_UNKNOWN] = ''
|
||||
exchangeMapReverse = {v:k for k,v in exchangeMap.items()}
|
||||
@ -66,6 +67,8 @@ productClassMap[PRODUCT_FUTURES] = defineDict["THOST_FTDC_PC_Futures"]
|
||||
productClassMap[PRODUCT_OPTION] = defineDict["THOST_FTDC_PC_Options"]
|
||||
productClassMap[PRODUCT_COMBINATION] = defineDict["THOST_FTDC_PC_Combination"]
|
||||
productClassMapReverse = {v:k for k,v in productClassMap.items()}
|
||||
productClassMapReverse[defineDict["THOST_FTDC_PC_ETFOption"]] = PRODUCT_OPTION
|
||||
productClassMapReverse[defineDict["THOST_FTDC_PC_Stock"]] = PRODUCT_EQUITY
|
||||
|
||||
# 委托状态映射
|
||||
statusMap = {}
|
||||
@ -75,6 +78,12 @@ statusMap[STATUS_NOTTRADED] = defineDict["THOST_FTDC_OST_NoTradeQueueing"]
|
||||
statusMap[STATUS_CANCELLED] = defineDict["THOST_FTDC_OST_Canceled"]
|
||||
statusMapReverse = {v:k for k,v in statusMap.items()}
|
||||
|
||||
# 全局字典, key:symbol, value:exchange
|
||||
symbolExchangeDict = {}
|
||||
|
||||
# 夜盘交易时间段分隔判断
|
||||
NIGHT_TRADING = datetime(1900, 1, 1, 20).time()
|
||||
|
||||
|
||||
########################################################################
|
||||
class CtpGateway(VtGateway):
|
||||
@ -407,37 +416,40 @@ class CtpMdApi(MdApi):
|
||||
#tick.time = '.'.join([data['UpdateTime'], str(data['UpdateMillisec']/100)])
|
||||
# =》 Python 3
|
||||
tick.time = '.'.join([data['UpdateTime'], str(data['UpdateMillisec'])])
|
||||
# 上期所和郑商所可以直接使用,大商所需要转换
|
||||
tick.date = data['ActionDay']
|
||||
# 大商所日期转换
|
||||
if tick.exchange is EXCHANGE_DCE:
|
||||
tick.date = datetime.now().strftime('%Y%m%d')
|
||||
|
||||
#tick.date = data['TradingDay']
|
||||
# 取当前时间
|
||||
dt = datetime.now()
|
||||
|
||||
# add by Incense Lee
|
||||
tick.tradingDay = data['TradingDay']
|
||||
if len(tick.tradingDay) == 8:
|
||||
tradingDay = tick.tradingDay
|
||||
tick.tradingDay = "{}-{}-{}".format(tradingDay[:4], tradingDay[4:6], tradingDay[6:])
|
||||
# 先根据交易日期,生成时间
|
||||
tick.datetime = datetime.strptime(tick.date + ' ' + tick.time, '%Y%m%d %H:%M:%S.%f')
|
||||
# 修正时间
|
||||
# 不处理开盘前的tick数据
|
||||
if dt.hour in [8,20] and dt.minute < 59:
|
||||
return
|
||||
if tick.exchange is EXCHANGE_CFFEX and dt.hour ==9 and dt.minute < 14:
|
||||
return
|
||||
|
||||
# 日期,取系统时间的日期
|
||||
tick.date = dt.strftime('%Y-%m-%d')
|
||||
# 生成dateteime
|
||||
tick.datetime = datetime.strptime(tick.date + ' ' + tick.time, '%Y-%m-%d %H:%M:%S.%f')
|
||||
# 生成TradingDay
|
||||
|
||||
# 正常日盘时间
|
||||
tick.tradingDay = tick.date
|
||||
|
||||
# 修正夜盘的tradingDay
|
||||
if tick.datetime.hour >= 20:
|
||||
if tick.datetime.isoweekday() == 1:
|
||||
# 交易日是星期一,实际时间应该是星期五
|
||||
tick.datetime = tick.datetime - timedelta(days=3)
|
||||
tick.date = tick.datetime.strftime('%Y-%m-%d')
|
||||
else:
|
||||
# 第二天
|
||||
tick.datetime = tick.datetime - timedelta(days=1)
|
||||
tick.date = tick.datetime.strftime('%Y-%m-%d')
|
||||
elif tick.datetime.hour < 8 and tick.datetime.isoweekday() == 1:
|
||||
# 如果交易日是星期一,并且时间是早上8点前 => 星期六
|
||||
tick.datetime = tick.datetime + timedelta(days=2)
|
||||
tick.date = tick.datetime.strftime('%Y-%m-%d')
|
||||
|
||||
tick.date = tick.datetime.strftime('%Y-%m-%d')
|
||||
# 周一~周四晚上20点之后的tick,交易日属于第二天
|
||||
if tick.datetime.isoweekday() in [1,2,3,4]:
|
||||
trading_day = tick.datetime + timedelta(days=1)
|
||||
tick.tradingDay = trading_day.strftime('%Y-%m-%d')
|
||||
# 周五晚上20点之后的tick,交易日属于下周一
|
||||
elif tick.datetime.isoweekday() == 5:
|
||||
trading_day = tick.datetime + timedelta(days=3)
|
||||
tick.tradingDay = trading_day.strftime('%Y-%m-%d')
|
||||
elif tick.datetime.hour < 3:
|
||||
# 周六凌晨的tick,交易日属于下周一
|
||||
if tick.datetime.isoweekday() == 6:
|
||||
trading_day = tick.datetime + timedelta(days=2)
|
||||
tick.tradingDay = trading_day.strftime('%Y-%m-%d')
|
||||
|
||||
tick.openPrice = data['OpenPrice']
|
||||
tick.highPrice = data['HighestPrice']
|
||||
|
Loading…
Reference in New Issue
Block a user