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_())
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)
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_())
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)
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)
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_())
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_())
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.')
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_())
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)
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_())
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_())
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)
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)
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_())
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)
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)
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_())
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)
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
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()
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()
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')
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)
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)
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)
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_())
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_())
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()
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)
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)
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)
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)
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)
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()
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)
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)
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)
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)
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)
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_())
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()
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_())