예제 #1
0
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    # me.addGateway(secGateway)
    me.addGateway(ctpGateway)
    # me.addGateway(ctpsecGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(optionMaster)

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #2
0
def runChildProcess():
    """子进程运行函数"""
    print('-' * 20)

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()

    le.info('启动行情记录运行子进程')

    ee = EventEngine2()
    le.info('事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(ctpGateway)

    me.addApp(dataRecorder)
    le.info('主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    le.info('注册日志事件监听')

    me.connect('CTP')
    le.info('连接CTP接口')
    while True:
        sleep(1)
예제 #3
0
파일: run.py 프로젝트: young66/futuquant
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(futuGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    me.addApp(spreadTrading)

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #4
0
파일: run.py 프로젝트: GenesisOrg/vnpy
def main():
    """主程序入口"""
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()
    
    le.info(u'启动JAQS服务进程')
    
    ee = EventEngine()
    le.info(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(jaqsService)
    le.info(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_JS_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')    
    
    me.connect('CTP')
    le.info(u'连接CTP接口')    
    
    while True:
        sleep(1)
예제 #5
0
def runChildProcess():
    """子进程运行函数"""
    print '-' * 20
    printLog(u'启动CTA策略运行子进程')

    ee = EventEngine2()
    printLog(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(ctaStrategy)
    printLog(u'主引擎创建成功')

    ee.register(EVENT_LOG, processLogEvent)
    ee.register(EVENT_CTA_LOG, processCtaLogEvent)
    printLog(u'注册日志事件监听')

    me.connect('CTP')
    printLog(u'连接CTP接口')

    sleep(5)  # 等待CTP接口初始化

    cta = me.appDict[ctaStrategy.appName]

    cta.loadSetting()
    printLog(u'CTA策略载入成功')

    cta.initAll()
    printLog(u'CTA策略初始化成功')

    cta.startAll()
    printLog(u'CTA策略启动成功')

    while True:
        sleep(1)
예제 #6
0
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    # me.addGateway(ccxtGateway)
    # me.addGateway(coinbaseGateway)
    # me.addGateway(lbankGateway)
    # me.addGateway(bigoneGateway)
    # me.addGateway(fcoinGateway)
    # me.addGateway(bitmexGateway)
    me.addGateway(huobiGateway)
    me.addGateway(okexfGateway)
    me.addGateway(binanceGateway)
    # me.addGateway(bitfinexGateway)
    
    # 添加上层应用
    me.addApp(algoTrading)
    me.addApp(ctaStrategy)
    
    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #7
0
파일: run.py 프로젝트: QuantFeng/vnpy
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(ctpGateway)
    # me.addGateway(oandaGateway)
    # me.addGateway(ibGateway)
    # me.addGateway(huobiGateway)
    # me.addGateway(okcoinGateway)

    # if system == 'Windows':
    #     me.addGateway(femasGateway)
    #     me.addGateway(xspeedGateway)
    #     me.addGateway(sgitGateway)
    #     me.addGateway(shzdGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    me.addApp(spreadTrading)

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #8
0
def main():
    global me

    ee = EventEngine()
    me = MainEngine(ee)
    ee.register(EVENT_TICK, on_tick_update)

    me.addGateway(ctpGateway)
    me.getGateway('CTP').filePath = os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        'CTP_connect.simnow.mock.json')
    me.connect('CTP')

    # 等待 1 秒是为了避免订阅时机 bug
    import time
    time.sleep(1)

    # vt_symbols = ['SR901C5300.CZCE', 'SR901C5200.CZCE']
    vt_symbols = ['ru1908.SHFE', 'rb1908.SHFE']
    symbols, exchanges = zip(
        *[vs.split('.') if '.' in vs else (vs, '') for vs in vt_symbols])
    for s, e in zip(symbols, exchanges):
        req = VtSubscribeReq()
        req.symbol, req.exchange = s, e
        me.subscribe(req, 'CTP')
    print('Futures subscribed.')
예제 #9
0
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()
    
    # 创建事件引擎
    ee = EventEngine()
    
    # 创建主引擎
    me = MainEngine(ee)
    
    # 添加交易接口
    me.addGateway(futuGateway)
    me.addGateway(tradeDllAShareGateway)

    # 添加上层应用
    #me.addApp(riskManager)
    # me.addApp(ctaStrategy)
    # me.addApp(spreadTrading)
    me.addApp(stopOrder)
    # me.addApp(slipperyGrid)
    me.addApp(optionSelector)
    me.addApp(optionSprites)
    me.addApp(catchLimitUp)
    
    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #10
0
def runChildProcess():
    """子进程运行函数"""
    print '-'*20
    printLog(u'启动CTA策略运行子进程')
    
    ee = EventEngine2()
    printLog(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(ctaStrategy)
    printLog(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, processLogEvent)
    ee.register(EVENT_CTA_LOG, processCtaLogEvent)
    printLog(u'注册日志事件监听')
    
    me.connect('CTP')
    printLog(u'连接CTP接口')
    
    sleep(5)    # 等待CTP接口初始化
    
    cta = me.appDict[ctaStrategy.appName]
    
    cta.loadSetting()
    printLog(u'CTA策略载入成功')
    
    cta.initAll()
    printLog(u'CTA策略初始化成功')
    
    cta.startAll()
    printLog(u'CTA策略启动成功')
    
    while True:
        sleep(1)
예제 #11
0
파일: run.py 프로젝트: uniwin/vnpydjv
def main():
    """主程序入口"""

    logger = setup_logger(filename='logs/vnpy.log', debug=False)

    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine2()

    # 初始化主引擎和主窗口对象
    mainEngine = MainEngine(ee)

    mainEngine.logger = logger

    # 添加Gatway
    for gw_name in init_gateway_names['CTP']:
        print('add {0}'.format(gw_name))
        mainEngine.addGateway(ctpGateway, gw_name)

    # 添加应用
    mainEngine.addApp(ctaStrategy)
    mainEngine.addApp(riskManager)
    mainEngine.addApp(spreadTrading)

    mainWindow = MainWindow(mainEngine, ee)
    mainWindow.showMaximized()
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #12
0
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(ctpGateway)


    if system == 'Windows':
        me.addGateway(femasGateway)
        me.addGateway(xspeedGateway)
        me.addGateway(secGateway)

    if system == 'Linux':
        me.addGateway(xtpGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    me.addApp(spreadTrading)
    me.addApp(algoTrading)

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #13
0
파일: server.py 프로젝트: KobeZhao/vnpy
def main():
    """主程序入口"""    
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'服务器进程启动')
    
    # 创建事件引擎
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    # 创建主引擎
    me = MainEngine(ee)
    
    # 添加交易接口
    me.addGateway(ctpGateway)
    
    # 添加上层应用
    me.addApp(ctaStrategy)
    me.addApp(rpcService)
    
    le.info(u'主引擎创建成功')
    
    # 阻塞运行
    le.info(u'服务器启动成功')
    while 1:
        sleep(1)
예제 #14
0
def main():
    """主程序入口"""

    logger = setup_logger(filename='logs/vnpy.log', debug=False)

    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine2()

    # 初始化主引擎和主窗口对象
    mainEngine = MainEngine(ee)

    mainEngine.logger = logger

    # 添加Gatway
    for gw_name in init_gateway_names['CTP']:
        print('add {0}'.format(gw_name))
        mainEngine.addGateway(ctpGateway, gw_name)

    # 添加应用
    mainEngine.addApp(ctaStrategy)
    mainEngine.addApp(riskManager)
    mainEngine.addApp(spreadTrading)

    mainWindow = MainWindow(mainEngine, ee)
    mainWindow.showMaximized()
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #15
0
def runChildProcess():
    """子进程运行函数"""
    print('-' * 20)

    # 创建日志引擎
    le = setup_logger(filename='logs/vnpy.log', debug=False)
    # le.setLogLevel(le.LEVEL_INFO)
    # le.addConsoleHandler()
    le.info(u'启动行情记录运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processErrorEvent)
    le.info(u'注册日志事件监听')

    me.connect('CTP')
    le.info(u'连接CTP接口')

    while True:
        sleep(1)
예제 #16
0
def main():
    """主程序入口"""

    logger = setup_logger(filename='logs/vnpy', debug=True)

    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine2()

    # 初始化主引擎和主窗口对象
    mainEngine = MainEngine(ee)

    mainEngine.logger = logger

    # 添加Gatway
    for gw_name in init_gateway_names.keys():
        for gw_conf in init_gateway_names[gw_name]:
            print('add {}'.format(gw_conf))
            mainEngine.addGateway(gateway_model_dict[gw_name], gw_conf)
            # 自动连接
            # mainEngine.connect(gw_conf)

    # 添加应用
    mainEngine.addApp(ctaStrategy)
    #mainEngine.addApp(riskManager)
    mainEngine.addApp(spreadTrading)

    mainWindow = MainWindow(mainEngine, ee)
    mainWindow.showMaximized()
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #17
0
def main():
    """主程序入口"""
    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(stubNullGateway)

    # 添加上层应用
    me.addApp(riskManager)

    print("1111111")
    me.addApp(stubStrategy)

    me.addApp(dataRecorder)
    print("22222")

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    qApp.exec_()
    sys.exit(0)
예제 #18
0
def runChildProcess():
    """子进程运行函数"""
    print '-' * 20

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.info(u'启动行情记录运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(okexGateway)
    me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processErrorEvent)
    le.info(u'注册日志事件监听')

    me.connect('OKEX')
    le.info(u'连接OKEX接口')

    while True:
        sleep(1)
예제 #19
0
파일: run.py 프로젝트: GenesisOrg/vnpy
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()
    
    # 创建事件引擎
    ee = EventEngine()
    
    # 创建主引擎
    me = MainEngine(ee)
    
    # 添加交易接口
    me.addGateway(secGateway)
    me.addGateway(ctpGateway)
    me.addGateway(ctpsecGateway)
        
    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(optionMaster)
    
    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()
    
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #20
0
def main():
    """主程序入口"""
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info('服务器进程启动')

    # 创建事件引擎
    ee = EventEngine2()
    le.info('事件引擎创建成功')

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(ctpGateway)

    # 添加上层应用
    me.addApp(ctaStrategy)
    me.addApp(rpcService)

    le.info('主引擎创建成功')

    # 阻塞运行
    le.info('服务器启动成功')
    while 1:
        sleep(1)
예제 #21
0
파일: run.py 프로젝트: yuchou/futuquant
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()
    
    # 创建事件引擎
    ee = EventEngine()
    
    # 创建主引擎
    me = MainEngine(ee)
    
    # 添加交易接口
    me.addGateway(futuGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    me.addApp(spreadTrading)
    
    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()
    
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #22
0
def runChildProcess():
    """子进程运行函数"""
    print '-'*20

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.info(u'启动行情记录运行子进程')
    
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')

    me.connect('CTP')
    le.info(u'连接CTP接口')

    while True:
        sleep(1)
def runChildProcess():
    """子进程运行函数"""

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.info(u'启动行情记录运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')

    me.connect('CTP')
    le.info(u'连接CTP接口')

    has_recorder_day = False
    while True:
        sleep(1)
        if has_recorder_day == False:
            time_now = datetime.now()
            if time_now.time().hour > 15 and time_now.time().minute > 5:
                event1 = Event(type_=EVENT_RECORDER_DAY)
                ee.put(event1)
                has_recorder_day = True
예제 #24
0
파일: run.py 프로젝트: lixs5/vn173
def main():
    """主程序入口"""
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'启动JAQS服务进程')

    ee = EventEngine()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(jaqsService)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_JS_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')

    me.connect('CTP')
    le.info(u'连接CTP接口')

    while True:
        sleep(1)
예제 #25
0
파일: vtServer.py 프로젝트: uniwin/vnpydjv
class VtServer(RpcServer):
    """vn.trader服务器"""

    #----------------------------------------------------------------------
    def __init__(self, repAddress, pubAddress):
        """Constructor"""
        super(VtServer, self).__init__(repAddress, pubAddress)
        self.usePickle()
        
        # 创建主引擎对象
        self.engine = MainEngine()

        for gw_name in init_gateway_names['CTP']:
            print( 'add {0}'.format(gw_name))
            self.engine.addGateway(ctpGateway, gw_name)

        # 注册主引擎的方法到服务器的RPC函数
        self.register(self.engine.connect)
        self.register(self.engine.disconnect)
        self.register(self.engine.subscribe)
        self.register(self.engine.sendOrder)
        self.register(self.engine.cancelOrder)
        self.register(self.engine.qryAccount)
        self.register(self.engine.qryPosition)
        self.register(self.engine.checkGatewayStatus)               # 检测gateway的连接状态
        self.register(self.engine.qryStatus)                        # 检测ctaEngine的状态
        self.register(self.engine.exit)
        self.register(self.engine.writeLog)
        self.register(self.engine.dbConnect)
        self.register(self.engine.dbInsert)
        self.register(self.engine.dbQuery)
        self.register(self.engine.dbUpdate)
        self.register(self.engine.getContract)
        self.register(self.engine.getAllContracts)
        self.register(self.engine.getOrder)
        self.register(self.engine.getAllWorkingOrders)
        self.register(self.engine.getAllGatewayNames)
        self.register(self.engine.saveData)
        
        # 注册事件引擎发送的事件处理监听
        self.engine.eventEngine.registerGeneralHandler(self.eventHandler)
        
    #----------------------------------------------------------------------
    def eventHandler(self, event):
        """事件处理"""
        self.publish(event.type_, event)
        
    #----------------------------------------------------------------------
    def stopServer(self):
        """停止服务器"""
        # 关闭引擎
        self.engine.exit()
        
        # 停止服务器线程
        self.stop()
예제 #26
0
파일: vtServer.py 프로젝트: fswzb/vnpy20
class VtServer(RpcServer):
    """vn.trader服务器"""

    #----------------------------------------------------------------------
    def __init__(self, repAddress, pubAddress):
        """Constructor"""
        super(VtServer, self).__init__(repAddress, pubAddress)
        self.usePickle()

        # 创建主引擎对象
        self.engine = MainEngine()

        for gw_name in init_gateway_names['CTP']:
            print('add {0}'.format(gw_name))
            self.engine.addGateway(ctpGateway, gw_name)

        # 注册主引擎的方法到服务器的RPC函数
        self.register(self.engine.connect)
        self.register(self.engine.disconnect)
        self.register(self.engine.subscribe)
        self.register(self.engine.sendOrder)
        self.register(self.engine.cancelOrder)
        self.register(self.engine.qryAccount)
        self.register(self.engine.qryPosition)
        self.register(self.engine.checkGatewayStatus)  # 检测gateway的连接状态
        self.register(self.engine.qryStatus)  # 检测ctaEngine的状态
        self.register(self.engine.exit)
        self.register(self.engine.writeLog)
        self.register(self.engine.dbConnect)
        self.register(self.engine.dbInsert)
        self.register(self.engine.dbQuery)
        self.register(self.engine.dbUpdate)
        self.register(self.engine.getContract)
        self.register(self.engine.getAllContracts)
        self.register(self.engine.getOrder)
        self.register(self.engine.getAllWorkingOrders)
        self.register(self.engine.getAllGatewayNames)
        self.register(self.engine.saveData)

        # 注册事件引擎发送的事件处理监听
        self.engine.eventEngine.registerGeneralHandler(self.eventHandler)

    #----------------------------------------------------------------------
    def eventHandler(self, event):
        """事件处理"""
        self.publish(event.type_, event)

    #----------------------------------------------------------------------
    def stopServer(self):
        """停止服务器"""
        # 关闭引擎
        self.engine.exit()

        # 停止服务器线程
        self.stop()
예제 #27
0
def main():
    global me

    ee = EventEngine()
    me = MainEngine(ee)
    ee.register(EVENT_CONTRACT, on_contract)

    me.addGateway(ctpGateway)
    me.getGateway('CTP').filePath = os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        'CTP_connect.simnow.mock.json')
    me.connect('CTP')
예제 #28
0
def runChildProcess():
    """子进程运行函数"""
    print('-'*20)
    
    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()
    
    le.info(u'启动CTA策略运行子进程')
    
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    me = MainEngine(ee)

    le.info(u'bbbbbbbbbbbbbbbbbbbbbbbbbbbbb')
    me.addGateway(ctpGateway)

    sleep(10)                       # 等待CTP接口初始化
    le.info(u'aaaaaaaaaaaaaaaaaaaaaaaaaaa')

    me.addApp(ctaStrategy)
    me.addApp(weixinRecorder)
    le.info(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processErrorEvent)
    le.info(u'注册日志事件监听')
    

    me.connect('CTP')
    le.info(u'连接CTP接口')
    
    sleep(10)                       # 等待CTP接口初始化
    me.dataEngine.saveContracts()   # 保存合约信息到文件
    
    cta = me.getApp(ctaStrategy.appName)
    
    cta.loadSetting()
    le.info(u'CTA策略载入成功')
    
    cta.initAll()
    le.info(u'CTA策略初始化成功')
    
    cta.startAll()
    le.info(u'CTA策略启动成功')
    
    while True:
        sleep(1)
예제 #29
0
def runChildProcess():
    """子进程运行函数"""
    # print('-'*20)

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_WARN)
    # le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'启动CTA策略运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)

    me.addGateway(ctpGateway)
    me.addGateway(ibGateway)

    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    # me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')

    me.connect('IB')
    le.info(u'连接IB接口')
    sleep(5)  # 等待接口初始化
    me.connect('CTP')
    le.info(u'连接CTP接口')

    # sleep(10)    # 等待接口初始化
    can_done1 = Event()
    can_done1.wait(timeout=10)
    cta = me.getApp(ctaStrategy.appName)
    cta.loadSetting()
    le.info(u'CTA策略载入成功')

    cta.initAll()
    le.info(u'CTA策略初始化成功')

    cta.startAll()
    le.info(u'CTA策略启动成功')

    while True:
        can_done2 = Event()
        can_done2.wait(timeout=1)
예제 #30
0
def runChildProcess():
    """子进程运行函数"""
    print('-' * 20)

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'启动CTA策略运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)

    le.info(u'bbbbbbbbbbbbbbbbbbbbbbbbbbbbb')
    me.addGateway(ctpGateway)

    sleep(10)  # 等待CTP接口初始化
    le.info(u'aaaaaaaaaaaaaaaaaaaaaaaaaaa')

    me.addApp(ctaStrategy)
    me.addApp(weixinRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processErrorEvent)
    le.info(u'注册日志事件监听')

    me.connect('CTP')
    le.info(u'连接CTP接口')

    sleep(10)  # 等待CTP接口初始化
    me.dataEngine.saveContracts()  # 保存合约信息到文件

    cta = me.getApp(ctaStrategy.appName)

    cta.loadSetting()
    le.info(u'CTA策略载入成功')

    cta.initAll()
    le.info(u'CTA策略初始化成功')

    cta.startAll()
    le.info(u'CTA策略启动成功')

    while True:
        sleep(1)
예제 #31
0
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(okexGateway)
    me.addGateway(huobiGateway)
    me.addGateway(binanceGateway)
    me.addGateway(bitfinexGateway)

    # 添加上层应用
    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    #me.addApp(algoTrading)
    # me.addApp(dataRecorder)
    # me.addApp(spreadTrading)
    # me.addApp(optionMaster)
    # me.addApp(jaqsService)
    # me.addApp(rpcService)


    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #32
0
파일: run.py 프로젝트: dxcv/Trader-VNPY
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(okexfGateway)

    me.addGateway(hbdmGateway)
    me.addGateway(huobiGateway)
    me.addGateway(okexGateway)

    # 添加上层应用
    me.addApp(algoTrading)
    me.addApp(CryptoData)

    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #33
0
파일: run.py 프로젝트: yvonnawu/wuzhishan
    def run(self):
        print('-' * 30)
        self.running = True
        # 创建日志引擎
        le = LogEngine()
        self.le = le
        le.setLogLevel(le.LEVEL_INFO)
        # le.addConsoleHandler()
        # le.addFileHandler()

        le.info(u'启动CTA策略运行子进程')

        ee = EventEngine2()
        self.ee = ee
        le.info(u'事件引擎创建成功')

        me = MainEngine(ee)
        self.me = me
        me.addGateway(okexfGateway)
        me.addGateway(huobiGateway)
        me.addGateway(binanceGateway)
        me.addGateway(bitmexGateway)
        me.addGateway(oandaGateway)

        if is_windows:
            me.addGateway(ctpGateway)

        me.addApp(ctaStrategy)
        le.info(u'主引擎创建成功')

        ee.register(EVENT_LOG, le.processLogEvent)
        ee.register(EVENT_CTA_LOG, le.processLogEvent)
        ee.register(EVENT_ERROR, processErrorEvent)
        le.info(u'注册日志事件监听')

        for gw in self.get_gateways(me):
            le.info(u'连接Gateway[%s]的行情和交易接口' % gw)
            me.connect(gw)
        sleep(5)  # 等待接口初始化
        me.dataEngine.saveContracts()  # 保存合约信息到文件

        cta = me.getApp(ctaStrategy.appName)
        self.cta = cta
        le.info(u"读取策略配置")
        cta.loadSetting()
        le.info(u"初始化所有策略")
        cta.initAll()
        le.info(u"开始所有策略")
        cta.startAll()
예제 #34
0
def runChildProcess():
    """子进程运行函数"""
    print '*' * 50

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'tab childProcess is working')

    ee = EventEngine2()

    me = MainEngine(ee)
    le.info(u'MainEngine has been established')
    me.addGateway(binanceGateway)
    le.info(u'binanceGateway has been established')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processError)
    ee.register(EVENT_TABTRADING_LOG, le.processLogEvent)
    ee.register(EVENT_TABTRADING_ALGOLOG, le.processLogEvent)
    le.info(u'register log event monitor')

    me.connect('BINANCE')
    le.info(u'connect binanceGateway')

    sleep(5)  # 等待CTP接口初始化

    # for k,v in me.dataEngine.contractDict.items():
    #     print '%s:%s' % (k,v.__dict__)

    me.addApp(tabStrategy_binance)

    tab = me.getApp(tabStrategy_binance.appName)
    tab.init()
    le.info(u'tabEngine_binance has been inited')

    # tab.algoEngine.startAlgo()
    # le.info(u'tabAlgo已启动')

    # tab.startAll()
    # le.info(u'CTA策略启动成功')

    while True:
        sleep(10)
예제 #35
0
def runChildProcess():
    """子进程运行函数"""
    print '*' * 50

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'marketMaker childProcess is working')

    ee = EventEngine2()

    me = MainEngine(ee)
    le.info(u'MainEngine has been established')
    me.addGateway(huobiGateway)
    le.info(u'huobiGateway has been established')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_MMK_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processError)
    le.info(u'register log event monitor')

    me.connect('HUOBI')
    le.info(u'connect huobiGateway')

    sleep(5)  # 等待CTP接口初始化

    # for k,v in me.dataEngine.contractDict.items():
    #     print '%s:%s' % (k,v.__dict__)

    me.addApp(mmkStrategy)

    mmk = me.getApp(mmkStrategy.appName)

    mmk.loadSetting()
    # le.info(u'MMK策略载入成功')

    mmk.initAll()
    # le.info(u'MMK策略初始化成功')

    mmk.startAll()
    # le.info(u'MMK策略启动成功')

    while True:
        sleep(10)
예제 #36
0
def runChildProcess():
    """子进程运行函数"""
    print '-' * 20

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'启动CTA策略运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(futuGateway)
    me.addApp(ctaStrategy)
    le.info(u'主引擎创建成功')

    def process_error(event):
        error = event.dict_['data']
        le.error(error.errorMsg)

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, process_error)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')

    me.connect('FUTU')
    le.info(u'连接CTP接口')

    sleep(5)  # 等待CTP接口初始化

    cta = me.getApp(ctaStrategy.appName)

    cta.loadSetting()
    le.info(u'CTA策略载入成功')

    cta.initAll()
    le.info(u'CTA策略初始化成功')

    cta.startAll()
    le.info(u'CTA策略启动成功')

    while True:
        sleep(1)
예제 #37
0
def runChildProcess():
    """子进程运行函数"""
    print '-'*20
    
    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()
    
    le.info(u'启动CTA策略运行子进程')
    
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(ctaStrategy)
    le.info(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR, processErrorEvent)
    le.info(u'注册日志事件监听')
    
    me.connect('CTP')
    le.info(u'连接CTP接口')
    
    sleep(10)    # 等待CTP接口初始化
    print("hehe")
    me.updateDominant()
    
    cta = me.getApp(ctaStrategy.appName)
    
    cta.loadSetting()
    le.info(u'CTA策略载入成功')
    
    cta.initAll()
    le.info(u'CTA策略初始化成功')
    
    cta.startAll()
    le.info(u'CTA策略启动成功')
    
    while True:
        sleep(1)
예제 #38
0
def runChildProcess():
    """子进程运行函数"""
    print '-'*20
    
    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()
    
    le.info(u'启动CTA策略运行子进程')
    
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(dailyStrategy)
    #me.addApp(rpcService)  ##先不加
    le.info(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_DAILY_LOG, le.processLogEvent)
    ee.register(EVENT_ERROR,le.processErrorEvent)
    le.info(u'注册日志事件监听')
    
    me.connect('CTP')
    le.info(u'连接CTP接口')
    le.setMysqlClient(me.mysqlClient)  ##日志写数据库
    
    sleep(5)    # 等待CTP接口初始化
    
    cta = me.getApp(dailyStrategy.appName)
    
    cta.loadSetting()
    le.info(u'CTA策略载入成功')
    
    cta.initAll()
    le.info(u'CTA策略初始化成功')
    
    cta.startAll()
    le.info(u'CTA策略启动成功')
    
    while True:
        sleep(1)
예제 #39
0
def run_strategy():
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    ee = EventEngine2()
    me = MainEngine(ee)
    me.addGateway(gateway)
    me.addApp(ctaStrategy)
    # ee.register(EVENT_LOG, le.processLogEvent)
    # ee.register(EVENT_CTA_LOG, le.processLogEvent)
    me.connect(gateway.gatewayName)
    gw = me.getGateway(gateway.gatewayName)

    cta = me.getApp(ctaStrategy.appName)
    cta.settingfilePath = "CTA_setting.json"

    cta.loadSetting()
    cta.initAll()
    cta.startAll()
예제 #40
0
def runChildProcess():
    """子进程运行函数"""
    # print('-'*20)

    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_WARN)
    # le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'启动CTA策略运行子进程')

    ee = EventEngine2()
    le.info(u'事件引擎创建成功')

    me = MainEngine(ee)
    me.addGateway(onetokenGateway)

    me.addApp(riskManager)
    me.addApp(ctaStrategy)
    # me.addApp(dataRecorder)
    le.info(u'主引擎创建成功')

    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')

    me.connect('ONETOKEN')
    le.info(u'连接1token接口')

    sleep(5)  # 等待接口初始化

    cta = me.getApp(ctaStrategy.appName)
    cta.loadSetting()
    le.info(u'CTA策略载入成功')

    cta.initAll()
    le.info(u'CTA策略初始化成功')

    cta.startAll()
    le.info(u'CTA策略启动成功')

    while True:
        sleep(1)
예제 #41
0
파일: run.py 프로젝트: xclxxl414/vnpy
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(ctpGateway)
    me.addGateway(ibGateway)

    if system == 'Windows':
        me.addGateway(femasGateway)
        me.addGateway(xspeedGateway)
        me.addGateway(secGateway)
예제 #42
0
def runChildProcess():
    """子进程运行函数"""
    print '-'*20
    
    # 创建日志引擎
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()
    
    le.info(u'启动CTA策略运行子进程')
    
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(ctaStrategy)
    le.info(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, le.processLogEvent)
    ee.register(EVENT_CTA_LOG, le.processLogEvent)
    le.info(u'注册日志事件监听')
    
    me.connect('CTP')
    le.info(u'连接CTP接口')
    
    sleep(10)    # 等待CTP接口初始化
    
    cta = me.getApp(ctaStrategy.appName)
    
    cta.loadSetting()
    le.info(u'CTA策略载入成功')
    
    cta.initAll()
    le.info(u'CTA策略初始化成功')
    
    cta.startAll()
    le.info(u'CTA策略启动成功')
    
    while True:
        sleep(1)
예제 #43
0
def runChildProcess():
    """子进程运行函数"""
    print '-'*20
    printLog(u'启动行情记录运行子进程')
    
    ee = EventEngine2()
    printLog(u'事件引擎创建成功')
    
    me = MainEngine(ee)
    me.addGateway(ctpGateway)
    me.addApp(dataRecorder)
    printLog(u'主引擎创建成功')
    
    ee.register(EVENT_LOG, processLogEvent)
    printLog(u'注册日志事件监听')
    
    me.connect('CTP')
    printLog(u'连接CTP接口')
    
    while True:
        sleep(1)
예제 #44
0
def main():
    """主程序入口"""    
    le = LogEngine()
    le.setLogLevel(le.LEVEL_INFO)
    le.addConsoleHandler()
    le.addFileHandler()

    le.info(u'服务器进程启动')
    
    # 创建事件引擎
    ee = EventEngine2()
    le.info(u'事件引擎创建成功')
    
    # 创建主引擎
    me = MainEngine(ee)
    
    # 安全退出机制
    def shutdown(signal, frame):
        le.info(u'安全关闭进程')
        me.exit()
        sys.exit()
    
    for sig in [signal.SIGINT, signal.SIGTERM]:
        signal.signal(sig, shutdown)
    
    # 添加交易接口
    me.addGateway(ctpGateway)
    
    # 添加上层应用
    me.addApp(ctaStrategy)
    me.addApp(rpcService)
    
    le.info(u'主引擎创建成功')
    
    # 阻塞运行
    le.info(u'服务器启动成功')
    while 1:
        sleep(1)
예제 #45
0
파일: runUI.py 프로젝트: GenesisOrg/vnpy
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()
    
    # 创建事件引擎
    ee = EventEngine()
    
    # 创建主引擎
    me = MainEngine(ee)
    
    # 添加交易接口
    me.addGateway(ctpGateway)
    
    # 添加上层应用
    me.addApp(jaqsService)
    
    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()
    
    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())
예제 #46
0
파일: runServer.py 프로젝트: uniwin/vnpydjv
class VtServer(RpcServer):
    """vn.trader 无界面服务器"""

    # ----------------------------------------------------------------------
    def __init__(self, repAddress, pubAddress):
        """Constructor"""
        super(VtServer, self).__init__(repAddress, pubAddress)
        #self.usePickle()

        # gateway 是否连接
        self.connected = False
        # gateway 的连接名称,在vtEngine.initGateway()里面定义,对应的配置文件是 "连接名称_connect.json",
        self.gateway_name = AUTO_CONNCET_GW
        # 启动的策略实例,须在catStrategy/CtaSetting.json 里面定义  [u'S28_RB1001', u'S28_TFT', u'S28_HCRB',u'atr_rsi']
        self.strategies = [u'S30_RB0510', u'S30_HCRB05']
        self.g_count = 0
        self.disconnect_signal = 0
        self.last_dt = datetime.now()

        # 创建事件引擎
        ee = EventEngine2()

        # 创建主引擎对象
        print( u'instance mainengine')
        self.engine = MainEngine(ee)

        # 添加CTP Gateway,配置文件为 CTP_Post
        self.engine.addGateway(ctpGateway, self.gateway_name)

        # 添加应用
        self.engine.addApp(ctaStrategy)
        self.engine.addApp(riskManager)


        # 注册主引擎的方法到服务器的RPC函数
        self.register(self.engine.connect)
        self.register(self.engine.disconnect)
        self.register(self.engine.subscribe)
        self.register(self.engine.sendOrder)
        self.register(self.engine.cancelOrder)
        self.register(self.engine.qryAccount)
        self.register(self.engine.qryPosition)
        self.register(self.engine.checkGatewayStatus)  # 检测gateway的连接状态
        self.register(self.engine.qryStatus)  # 检测ctaEngine的状态
        self.register(self.engine.exit)
        self.register(self.engine.writeLog)
        self.register(self.engine.dbConnect)
        self.register(self.engine.dbInsert)
        self.register(self.engine.dbQuery)
        self.register(self.engine.dbUpdate)
        self.register(self.engine.getContract)
        self.register(self.engine.getAllContracts)
        self.register(self.engine.getOrder)
        self.register(self.engine.getAllWorkingOrders)
        self.register(self.engine.getAllGatewayNames)
        self.register(self.engine.saveData)
        self.register(self.engine.initStrategy)
        self.register(self.engine.startStrategy)
        self.register(self.engine.stopStrategy)

        # 注册事件引擎发送的事件处理监听
        self.engine.eventEngine.registerGeneralHandler(self.eventHandler)


    def trade_off(self):
        """检查现在是否为非交易时间"""
        now = datetime.now()
        a = datetime.now().replace(hour=2, minute=35, second=0, microsecond=0)
        b = datetime.now().replace(hour=8, minute=55, second=0, microsecond=0)
        c = datetime.now().replace(hour=15, minute=30, second=0, microsecond=0)
        d = datetime.now().replace(hour=20, minute=55, second=0, microsecond=0)
        weekend = (now.isoweekday() == 6 and now >= a) or (now.isoweekday() == 7) or (now.isoweekday() == 1 and now <=b)
        off = (a <= now <= b) or (c <= now <= d) or weekend
        return off

    def disconnect(self):
        """"断开底层gateway的连接"""
        if self.engine:
            self.engine.disconnect(self.gateway_name)
            self.connected = False

    def onTimer(self, event):
        """定时器执行逻辑,每十秒执行一次"""

        # 十秒才执行一次检查
        self.g_count += 1
        if self.g_count <= 30:
            return
        self.g_count = 0
        dt = datetime.now()
        self.engine.qryStatus()
        if dt.hour != self.last_dt.hour:
            self.last_dt = dt
            print(u'noUiMain.py checkpoint:{0}'.format(dt))
            self.engine.writeLog( u'noUiMain.py checkpoint:{0}'.format(dt))

        # 定时断开
        if self.trade_off():
            """非交易时间"""
            if self.connected:
                self.engine.writeLog(u'断开连接{0}'.format(self.gateway_name))
                self.disconnect()
                self.engine.writeLog(u'清空数据引擎')
                self.engine.clearData()
                self.connected = False
                self.engine.writeNotification(u'非交易时间{0},断开连接{1}'.format(dt, self.gateway_name))
            return

        # 交易时间内,定时重连和检查
        if not self.connected:
            self.engine.writeLog(u'启动连接{0}'.format(self.gateway_name))
            self.engine.writeLog(u'清空数据引擎')
            self.engine.clearData()
            self.engine.writeLog(u'重新连接{0}'.format(self.gateway_name))
            self.engine.connect(self.gateway_name)
            self.connected = True
            self.disconnect_signal = 0
            self.engine.writeNotification(u'{0},重新连接{1}'.format(dt, self.gateway_name))
            return
        else:
            if not self.engine.checkGatewayStatus(self.gateway_name):
                self.disconnect_signal += 1

                if self.disconnect_signal >= 5:
                    self.engine.writeWarning(u'检查连接{0}异常,超过{1}次'.format(self.gateway_name,self.disconnect_signal))
                    sys.exit(0)
            else:
                self.disconnect_signal = 0

    def start(self):
        """启动"""
        super(VtServer, self).start()

        # 若需要连接数据库,则启动
        # self.mainEngine.dbConnect()

        # 加载cta的配置
        print( u'load cta setting')
        self.engine.ctaEngine.loadSetting()

        print(u'initialize all strategies')
        # 初始化策略,如果多个,则需要逐一初始化多个
        for s in self.strategies:
            print( 'init trategy {0}'.format(s))
            self.engine.ctaEngine.initStrategy(s)
            # 逐一启动策略
            print( 'start strategy {0}'.format(s))
            self.engine.ctaEngine.startStrategy(s)

        # 指定的连接配置
        if not self.trade_off():
            print( u'connect gateway:{0}'.format(self.gateway_name))
            self.engine.connect(self.gateway_name)
            self.connected = True

        # 注册定时器,用于判断重连
        self.engine.eventEngine.register(EVENT_TIMER, self.onTimer)

        # 所有的日志监控
        self.logM = LogMonitor(self.engine.eventEngine)
        self.errorM = ErrorMonitor(self.engine.eventEngine)
        self.tradeM = TradeMonitor(self.engine.eventEngine)
        self.orderM = OrderMonitor(self.engine.eventEngine, self.engine)
        self.positionM = PositionMonitor(self.engine.eventEngine)
        self.accountM = AccountMonitor(self.engine.eventEngine)

        self.engine.writeNotification(u'{0},服务启动{1}'.format(datetime.now(),self. gateway_name))

    # ----------------------------------------------------------------------
    def eventHandler(self, event):
        """事件处理"""
        try:
            # 调用RpcServer.publish()
            if isinstance(event.type_, str):
                self.publish(event.type_, event)
            else:
                self.publish(event.type_.encode('utf-8'), event)

        except Exception as ex:
            print( u'event Handler exception:{0}'.format(str(ex)))

    # ----------------------------------------------------------------------
    def stopServer(self):
        """停止服务器"""
        print( 'stopServer')
        # 关闭引擎
        self.engine.exit()
        # 停止服务器线程
        self.stop()
예제 #47
0
파일: run.py 프로젝트: aaront2000/vnpy
def main():
    """主程序入口"""
    # 创建Qt应用对象
    qApp = createQApp()

    # 创建事件引擎
    ee = EventEngine()

    # 创建主引擎
    me = MainEngine(ee)

    # 添加交易接口
    me.addGateway(ccxtGateway)
    me.addGateway(coinbaseGateway)
    me.addGateway(lbankGateway)
    me.addGateway(bigoneGateway)
    me.addGateway(fcoinGateway)
    me.addGateway(bitmexGateway)
    me.addGateway(huobiGateway)
    me.addGateway(okexGateway)
    me.addGateway(binanceGateway)
    me.addGateway(bitfinexGateway)
    
    # 添加上层应用
    me.addApp(algoTrading)
    
    # 创建主窗口
    mw = MainWindow(me, ee)
    mw.showMaximized()

    # 在主线程中启动Qt事件循环
    sys.exit(qApp.exec_())