def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 主力合约代码映射字典,key为具体的合约代码(如IF1604),value为主力合约代码(如IF0000) self.activeSymbolDict = {} # Tick对象字典 self.tickDict = {} # K线对象字典 self.barDict = {} self.m5barDict = {} self.daybarDict = {} #负责执行数据库插入的单独线程相关 self.active = False #工作状态 self.queue = Queue() #队列 self.thread = Thread(target=self.run) #线程 # 交易时间字典 self.timeDict = {} # 每分钟的的第一个tick的成交量 self.firstvolumes = {} # 载入设置,订阅行情 self.loadSetting()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 是否登录CTP self.ctpConnected = False # 数据库客户端 self.dbClient = None # 主力合约检查 self.contractsOK = False # 期货账号 self.userID = '' # 当前日期 self.today = todayDate() # 主力合约代码映射字典,key为具体的合约代码(如IF1604),value为主力合约代码(如IF0000) self.activeSymbolDict = {} # Tick对象字典 self.tickDict = {} # K线对象字典 self.barDict = {} # 负责执行数据库插入的单独线程相关 self.active = False # 工作状态 self.queue = Queue() # 队列 self.thread = Thread(target=self.run) # 线程
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 注册事件监听 self.registerEvent()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 # Date of today self.today = todayDate() # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 # Dictionary: record strategy instances # key: name of strategies, value: strategy instance, notice that the names of strategies cannot repeat self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list # Dictionary: record market systems (combination of vtSymbol and strategies) (to push tick data) # key: vtSymbol, more than one strategies can be used to trade one vtSymbol # value: list the contains all the strategies self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 # Dictionary: record combination of vtOrderID and strategy (to push order and trade information) # key: vtOrderID; value: strategy instance self.orderStrategyDict = {} # 本地停止单编号计数 # count local stop orders self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 # Dictionary: local stop order # key: StopOrderID; value: stopOrder instence self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 持仓缓存字典 # key为vtSymbol,value为PositionBuffer对象 # Dictionary: buffer position # key: vtSymbol, value: PositionBuffer self.posBufferDict = {} # 引擎类型为实盘 # set engine type to real trading self.engineType = ENGINETYPE_TRADING # 注册事件监听 # register event self.registerEvent()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 保存策略名称和委托号列表的字典 # key为name,value为保存orderID(限价+本地停止)的集合 self.strategyOrderDict = {} # 成交号集合,用来过滤已经收到过的成交推送 self.tradeSet = set() # 引擎类型为实盘 self.engineType = ENGINETYPE_TRADING # RQData数据服务 self.rq = None # RQData能获取的合约代码列表 self.rqSymbolSet = set() # 初始化RQData服务 self.initRqData() # 注册日式事件类型 self.mainEngine.registerLogEvent(EVENT_CTA_LOG) # 注册事件监听 self.registerEvent()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine # 指向主引擎 self.eventEngine = eventEngine # 指向事件引擎 # 当前日期 self.today = todayDate() # 主力合约代码映射字典,key为具体的合约代码(如IF1604),value为主力合约代码(如IF0000) self.activeSymbolDict = {} # 合约代码映射字典,key为vtSymbol(如IF1604),value为字典对象,包括该vtSymbol的各种属性以及生成后的合约对象 # {'EUR.USD':{'currency':'USD','contract':contract }} # self.vtSymbolContractDict = { } # vtSymbol 和合约对照表,载入时生成 key 为 vtSymbol,value为列表,合约和历史数据接口 # Tick对象字典 self.tickDict = {} # K线对象字典 self.barDict = {} # Timer计时器 self.sbTimerCount = 0 self.sbTimerTrigger = 60 # 每秒都会收到一次Timer事件,60秒检查一次 self.minute_timer_counter = 0 # 每一次加载模块 self.pre_minute = 0 self.pre_hour = 0 self.pre_day = 0 # 当前day变化。也要同时检查一下EST 的day 是不是也变了。 self.initForStrategyDays = 5 # 策略载入时,自动下载 5 天数据给策略初始化。 self.fromStrategyInit = True # 是否来自策略请求,是:只处理该合约,否则处理全部json的合约 # tickerId下载对应的参数 self.tickerIdKwargsDict = { } # 请求历史数据时把 tickerId及参数存入此字典中。回调收到后再删除。最后再检查一下是否还有内容。如有则表示下载不成功。 self.missingDataReDownloadTimes = 0 # # 载入设置,生成合约 self.loadSetting() # 历史数据不必订阅,因为不需要实时行情 # 补全json中设置合约的历史数据 thread = Thread(target=self.downLoadAllDataManager, kwargs=({ 'days': 500, })) #补全最近500天的。只要补一次就行,平时策略启动就自动补5天 thread.start()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 持仓缓存字典 # key为vtSymbol,value为PositionBuffer对象 self.posBufferDict = {} # 引擎类型为实盘 self.engineType = ENGINETYPE_TRADING # 注册事件监听 self.eventEngine.register(EVENT_GATEWAY, self.processGatewayEvent) self.positionDict_inf2={} self.positionDict_inf1={} self.posGatwayDict_inf2={} self.posGatwayDict_inf1={} self.dbCon = rwDbConnection() self.gatewayNameDict={}
def __init__(self, mainEngine, eventEngine, context=' '): """Constructor""" self.context = context self.doCheck() self.mainEngine = mainEngine self.eventEngine = eventEngine #================================================================= self.posFileName = "PositionInfo.json" self.mPosInfo = {} self.loadPosInfo() #================================================================= # 当前日期 self.today = todayDate() self.dbtype = 'mongodb' # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 持仓缓存字典 # key为vtSymbol,value为PositionBuffer对象 self.posBufferDict = {} # 引擎类型为实盘 self.engineType = ENGINETYPE_TRADING # 注册事件监听 self.registerEvent()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 主力合约代码映射字典,key为具体的合约代码(如IF1604),value为主力合约代码(如IF0000) self.activeSymbolDict = {} # Tick对象字典 self.tickDict = {} # K线对象字典 self.barDict = {} # 载入设置,订阅行情 self.loadSetting()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 持仓缓存字典 # key为vtSymbol,value为PositionBuffer对象 self.posBufferDict = {} # 成交号集合,用来过滤已经收到过的成交推送 self.tradeSet = set() # 引擎类型为实盘 self.engineType = ENGINETYPE_TRADING # 注册事件监听 self.registerEvent()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 主力合约代码映射字典,key为具体的合约代码(如IF1703),value为主力合约代码(如IF0000) self.activeSymbolDict = {} # Tick对象字典 self.tickDict = {} # K线对象字典 self.barDict = {} # 负责执行数据库插入的单独线程相关 self.active = False # 工作状态 self.queue = Queue() # 队列 self.thread = Thread(target=self.run) # 线程
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() #数据库类型mysql/mongodb by hw self.dbtype = 'mysql' #mysql连接标志 self.__mysqlConnected = False # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 持仓缓存字典 # key为vtSymbol,value为PositionBuffer对象 self.posBufferDict = {} # 注册事件监听 self.registerEvent()
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 主力合约代码映射字典,key为具体的合约代码(如IF1604),value为主力合约代码(如IF0000) self.activeSymbolDict = {} # Tick对象字典 self.tickDict = {} # K线对象字典 self.barDict = {} # 负责执行数据库插入的单独线程相关 self.active = False # 工作状态 self.queue = Queue() # 队列 self.thread = Thread(target=self.run) # 线程 # 载入设置,订阅行情 self.loadSetting()
def __init__(self, mainEngine, eventEngine): self.mainEngine = mainEngine self.ctaEngine = mainEngine.ctaEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # Order 对象字典 self.orderDict = {} # Trade 对象字典 self.tradeDict = {} # 复制执行数据库插入的单独线程相关 self.active = False #工作状态 self.queue = Queue() #队列 self.thread = Thread(target=self.run) #线程 # 载入设置 self.loadSetting() # vtSymbol_pmColletionName_map self.vtSymbol_pmColletionName_map = {}
def __init__(self, mainEngine, eventEngine): """Constructor""" self.mainEngine = mainEngine self.eventEngine = eventEngine # 当前日期 self.today = todayDate() # 保存策略实例的字典 # key为策略名称,value为策略实例,注意策略名称不允许重复 self.strategyDict = {} # 保存vtSymbol和策略实例映射的字典(用于推送tick数据) # 由于可能多个strategy交易同一个vtSymbol,因此key为vtSymbol # value为包含所有相关strategy对象的list self.tickStrategyDict = {} # 保存vtOrderID和strategy对象映射的字典(用于推送order和trade数据) # key为vtOrderID,value为strategy对象 self.orderStrategyDict = {} # 保存vtOrderID和在order上关联的信息 (发单时任意填写的信息,用于保存到数据库,方便分析) self.orderAppendInfoDict = {} #保存gatewayName和strategy对象映射的字典,用于推送balance数据 self.gatewayNameStrategyDict = {} #保存task和strategy对象映射的字典,用于推送task数据 self.taskStrategyDict = {} # 本地停止单编号计数 self.stopOrderCount = 0 # stopOrderID = STOPORDERPREFIX + str(stopOrderCount) # 本地停止单字典 # key为stopOrderID,value为stopOrder对象 self.stopOrderDict = {} # 停止单撤销后不会从本字典中删除 self.workingStopOrderDict = {} # 停止单撤销后会从本字典中删除 # 预埋单集合 self.parkedOrderSet = set() self.workingParkedOrderSet = set() # key为parkedOrderID, value为vtOrderID self.parkedOrderMap = {} # 持仓缓存字典 # key为vtSymbol,value为PositionBuffer对象 self.posBufferDict = {} # 成交号集合,用来过滤已经收到过的成交推送 self.tradeSet = set() # 引擎类型为实盘 self.engineType = ENGINETYPE_TRADING # 注册事件监听 self.eventEngine.register(EVENT_TICK, self.processTickEvent) self.eventEngine.register(EVENT_ORDER, self.processOrderEvent) self.eventEngine.register(EVENT_TRADE, self.processTradeEvent) self.eventEngine.register(EVENT_BALANCE, self.processBalanceEvent) self.eventEngine.register(EVENT_POSITION, self.processPositionEvent) self.eventEngine.register(EVENT_CTA_TASK, self.processTaskEvent)