def __init__(self): """Constructor""" self.eventEngine = EventEngine() # 创建事件驱动引擎 self.md = DemoMdApi(self.eventEngine) # 创建API接口 # self.md = DemoL2Api(self.ee) # 如果使用L2行情就改为这行 self.td = DemoTdApi(self.eventEngine) self.eventEngine.start() # 启动事件驱动引擎 self.dataEngine = DataEngine(self, self.eventEngine) # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 self.eventEngine.register(EVENT_TDLOGIN, self.initGet) # 登录成功后开始初始化查询 # 合约储存相关 # self.dictInstrument = {} # 字典(保存合约查询数据) # self.eventEngine.register(EVENT_INSTRUMENT, self.insertInstrument) # 接口实例 self.gatewayDict = OrderedDict() self.gatewayDetailList = [] # 应用模块实例 self.appDict = OrderedDict() self.appDetailList = [] # 风控引擎实例(特殊独立对象) self.rmEngine = None
def __init__(self): """Constructor :type self: object """ self.ee = EventEngine() # 创建事件驱动引擎 self.md = DemoMdApi(self.ee) # 创建API接口 self.td = DemoTdApi(self.ee) self.ee.start() # 启动事件驱动引擎 self.havedposi = False self.position = {} self.todayposition = {} self.__orders = {} self.__retry = 0 # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 self.ee.register(EVENT_TDLOGIN, self.initGet) # 登录成功后开始初始化查询 # 合约储存相关 self.dictInstrument = {} # 字典(保存合约查询数据) self.ee.register(EVENT_INSTRUMENT, self.insertInstrument) self.ee.register(EVENT_TRADE_DATA, self.get_trade) self.ee.register(EVENT_ORDER_DATA, self.get_order) self.ee.register(EVENT_ERROR, self.get_error) self.ee.register(EVENT_MARKETDATA_DATA, self.get_data) self.ee.register(EVENT_POSITION_DATA, self.get_position)
def __init__(self, event_engine:EventEngine=None): if event_engine: self.event_engine = event_engine else: self.event_engine = EventEngine() self.event_engine.start() self.gateways: dict[str, BaseGateway] = {} self.engines: dict[str, BaseEngine] = {}
def main(argv): ee = EventEngine() me = MainEngine(ee) me.add_gateway(Mt4Gateway) me.connect("Mt4Gateway") #ee.register("tick", debug_print) myEngine = me.add_engine(MyTestEngine) myEngine.init_engine() print("main...")
def __init__(self): """Constructor""" self.ee = EventEngine() # 创建事件驱动引擎 self.ee.start() # 启动事件驱动引擎 # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 # 合约储存相关 self.dictInstrument = {} # 字典(保存合约查询数据)
def __init__(self): """Constructor""" self.ee = EventEngine() # 创建事件驱动引擎 self.md = DemoMdApi(self.ee) # 创建API接口 self.td = DemoTdApi(self.ee) self.ee.start() # 启动事件驱动引擎 # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 self.ee.register(EVENT_TDLOGIN, self.initGet) # 登录成功后开始初始化查询 # 合约储存相关 self.dictInstrument = {} # 字典(保存合约查询数据) self.ee.register(EVENT_INSTRUMENT, self.insertInstrument)
def __init__(self): """Constructor""" self.ee = EventEngine() # 创建事件驱动引擎 self.dsa = DemoStockApi(('192.168.16.59', 9991), self.ee) # 现货报单 self.dma = DemoMarketApi(('10.10.1.186', 9101), self.ee) # 现货报单 # self.md = DemoL2Api(self.ee) # 如果使用L2行情就改为这行 # self.td = DemoTdApi(self.ee) self.ee.start() # 启动事件驱动引擎 # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 # self.ee.register(EVENT_TDLOGIN, self.initGet) # 登录成功后开始初始化查询 # 合约储存相关 self.dictInstrument = {} # 字典(保存合约查询数据)
def __init__(self, ws, account, _plus_path, justCopySignal=False, useZmq=False, zmqServer="tcp://192.168.1.234:9999"): """Constructor :type self: object """ self.ee = EventEngine(account) # 创建事件驱动引擎 self.justCopySignal = justCopySignal self.userid = str(account['userid']) self.password = str(account['password']) self.brokerid = str(account['brokerid']) self.mdaddress = str(account['mdfront']) self.tdaddress = str(account['tdfront']) self.pluspath = _plus_path self.symbol = None self.socket = None self.websocket = ws # websocket list to send msg if useZmq: context = zmq.Context() socket = context.socket(zmq.REQ) socket.connect(zmqServer) self.socket = socket self.ee.start() # 启动事件驱动引擎 self.havedposi = False self.position = {} self.todayposition = {} self.lastError = 0 self.lastTodo = 0 self.__timer = time() + 60 self.__orders = {} self.__retry = 0 self.__maxRetry = 5 # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 self.ee.register(EVENT_TDLOGIN, self.initGet) # 登录成功后开始初始化查询 # 合约储存相关 self.dictInstrument = {} # 字典(保存合约查询数据) self.dictProduct = {} # 字典(保存合约查询数据) self.dictExchange = {} self.volInstrument = {} self.subInstrument = set() self.subedInst = set() self.todo = 0 self.ee.register(EVENT_ERROR, self.get_error) self.ee.register(EVENT_INSTRUMENT, self.insertInstrument) self.ee.register(EVENT_TIMER, self.getAccountPosition) self.ee.register(EVENT_TRADE, self.get_trade) self.ee.register(EVENT_ORDER, self.get_order) self.ee.register(EVENT_TICK, self.get_tick) self.ee.register(EVENT_POSITION, self.get_position) import eventType for k, v in eventType.__dict__.items(): if 'EVENT_' in k and v[0] != '_': self.ee.register(v, self.websocket_send) self.md = DemoMdApi(self.ee, self.mdaddress, self.userid, self.password, self.brokerid, plus_path=_plus_path) # 创建API接口 self.td = DemoTdApi(self.ee, self.tdaddress, self.userid, self.password, self.brokerid, plus_path=_plus_path)
def __init__(self, account, _plus_path, bg): self.ee = EventEngine(account) # 创建事件驱动引擎 self.bridge = bg self.__lock = Lock() self.userid = str(account['userid']) self.password = str(account['password']) self.brokerid = str(account['brokerid']) self.mdaddress = str(account['mdfront']) self.tdaddress = str(account['tdfront']) self.instrument = account['instrument'] # sub list str self.pluspath = _plus_path self.dictInstrument = {} # 字典(保存合约查询数据) self.dictProduct = {} # 字典(保存合约查询数据) self.dictExchange = {} self.tmpInstrument = {} # 字典(保存合约查询数据) self.tmpProduct = {} # 字典(保存合约查询数据) self.tmpExchange = {} self.dictUpdate = None self.subInstrument = set() self.subedInstrument = set() self.master = {} # 记录主力合约对应关系 self.masterSubed = False self.subedMaster = {} self.tickpass = set() self.now = datetime.now() self.socket = None self.coreServer = str(account['zmqserver']) self.corefunc = passit if int(account['usezmq']) > 0: if self.coreServer[:4] == 'tcp:': context = zmq.Context() socket = context.socket(zmq.REQ) socket.connect(self.coreServer) self.socket = socket self.corefunc = tcpfunc elif self.coreServer[:5] == 'http:': self.socket = True self.corefunc = httpfunc self.ee.start() # 启动事件驱动引擎 self.som = {} self.lastError = 0 self.lastTodo = 0 self.eq = 0 # 循环查询持仓和账户相关 self.countGet = 0 # 查询延时计数 self.lastGet = 'Account' # 上次查询的性质 self.ee.register(EVENT_TDLOGIN, self.initGet, True) # 登录成功后开始初始化查询 self.__timer = time() + 3 self.__readySubscribe = {} # 合约储存相关 self.get_instrument() self.get_subscribe(self.instrument) self.ee.register(EVENT_MDLOGIN, self.ready_subscribe, True) self.ee.register(EVENT_TDLOGIN, self.ready_subscribe, True) self.ee.register(EVENT_ERROR, self.get_error, False) self.ee.register(EVENT_INSTRUMENT, self.insertInstrument, True) self.ee.register(EVENT_TIMER, self.getAccountPosition, False) self.ee.register(EVENT_TRADE, self.get_trade, False) self.ee.register(EVENT_ORDER, self.get_order, False) self.ee.register(EVENT_TICK, self.get_tick, True) self.ee.register(EVENT_POSITION, self.get_position, True) self.ee.register(EVENT_ACCOUNT, self.get_account, False) self.ee.register(EVENT_TICK, self.check_timer, False) import eventType for k, v in eventType.__dict__.items(): if 'EVENT_' in k and v[0] != '_': self.ee.register(v, self.websocket_send, False) self.md = ctpMdApi(self, self.mdaddress, self.userid, self.password, self.brokerid, plus_path=_plus_path) # 创建API接口 self.td = ctpTdApi(self, self.tdaddress, self.userid, self.password, self.brokerid, plus_path=_plus_path)
from eventType import * from eventEngine import EventEngine import os import tdxApi def timer_fun(event): print("test_func:{}".format(event.type_)) if __name__ == "__main__": engine = EventEngine() engine.register(EVENT_TIMER, timer_fun) engine.start()