Example #1
0
    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
Example #2
0
    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)
Example #3
0
    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] = {}
Example #4
0
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...")
Example #5
0
    def __init__(self):
        """Constructor"""
        self.ee = EventEngine()  # 创建事件驱动引擎

        self.ee.start()  # 启动事件驱动引擎

        # 循环查询持仓和账户相关
        self.countGet = 0  # 查询延时计数
        self.lastGet = 'Account'  # 上次查询的性质

        # 合约储存相关
        self.dictInstrument = {}  # 字典(保存合约查询数据)
Example #6
0
    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)
Example #7
0
    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 = {}        # 字典(保存合约查询数据)
Example #8
0
    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)
Example #10
0
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()