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 runChildProcess(): """子进程运行函数""" print('-' * 20) # 创建日志引擎 le = LogEngine() le.setLogLevel(le.LEVEL_INFO) le.addConsoleHandler() le.info(u'启动行情记录运行子进程') ee = EventEngine() le.info(u'事件引擎创建成功') me = MainEngine(ee) me.addGateway(BitmexGateway) 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 run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) recorder_engine = main_engine.add_app(DataRecorderApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_RECORDER_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(2) main_engine.write_log("数据下载开始") while True: sleep(1)
def main_terminal(): """""" event_engine = EventEngine() event_engine.register(EVENT_LOG, process_log_event) event_engine.register(EVENT_RPC_LOG, process_log_event) main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) rpc_engine = main_engine.add_app(RpcServiceApp) setting = { " username ": "", " password ": "", " brokers code ": "9999", " transaction server ": "180.168.146.187:10101", " quotes server ": "180.168.146.187:10111", " product name ": "simnow_client_test", " authorized coding ": "0000000000000000", " product information ": "" } main_engine.connect(setting, "CTP") sleep(10) rep_address = "tcp://127.0.0.1:2014" pub_address = "tcp://127.0.0.1:4102" rpc_engine.start(rep_address, pub_address) while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.write_log("主引擎创建成功") main_engine.add_app(DataRecorderApp) log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") #sleep(10) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() #sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) st_engine = main_engine.add_app(SpreadTradingApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_SPREAD_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(10) st_engine.start() main_engine.write_log("Arb引擎启动") st_engine.strategy_engine.init_all_strategies() # # sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("Arb策略全部初始化") # st_engine.strategy_engine.start_all_strategies() main_engine.write_log("Arb策略全部启动") print('ok')
def run_child(): SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) cta_engine = main_engine.add_app(CtaStrategyAppPro) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") # sleep(20) sleep(5) # 开发用 cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() sleep(5) # 开发用 # sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") cta_engine.send_run_report_email("账号1监控报表") # 完成启动后,发送监控报表 close_time1 = time(15, 32) close_time2 = time(15, 35) close_time3 = time(15, 36) lock1 = False lock2 = False lock3 = False while True: current_time = datetime.now().time() # 实例交易数据保存;资金曲线&策略评估指标更新 if current_time == close_time1 and not lock1: cta_engine.save_all_trade_data() main_engine.write_log("实例交易数据保存成功") cta_engine.update_all_daily_results() main_engine.write_log("实例资金曲线&策略评估指标更新成功") lock1 = True # 发送实例评估报表 if current_time == close_time2 and not lock2: cta_engine.send_evaluate_report_email("账号1实例评估报表") lock2 = True # 发送实例评估报表 if current_time == close_time3 and not lock3: cta_engine.update_all_k_line() main_engine.write_log("CTA更新K线图完毕") lock3 = True sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.write_log(" main engine created successfully ") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log(" register an event listener log ") main_engine.connect(ctp_setting, "CTP") main_engine.write_log(" connection CTP interface ") sleep(10) cta_engine.init_engine() main_engine.write_log("CTA strategy initialization is complete ") cta_engine.init_all_strategies() sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA all initialization strategy ") cta_engine.start_all_strategies() main_engine.write_log("CTA policy start all ") while True: sleep(1)
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 main(): event_engine = EventEngine() event_engine.register(EVENT_LOG,printLog) main_engine = MainEngine(event_engine) # geteway = XtpGateway(event_engine) # # default_setting: Dict[str, Any] = { # "账号": "53191000704", # "密码": "vj6JDKlq", # "客户号": 1, # "行情地址": "120.27.164.138", # "行情端口": 6002, # "交易地址": "120.27.164.69", # "交易端口": 6001, # "行情协议": "TCP", # "授权码": "b8aa7173bba3470e390d787219b2112e" # } # geteway.connect(default_setting) geteway = CtpGateway(event_engine) default_setting: Dict[str, Any] = { "用户名": "161239", "密码": "Asdf4321", "经纪商代码": "9999", "交易服务器": "218.202.237.33:10102", "行情服务器": "218.202.237.33:10112", "产品名称": "", "授权编码": "", "产品信息": "" } geteway.connect(default_setting)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) main_engine.write_log("主引擎创建成功") # 记录引擎 log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(CTP_SETTING, "CTP") main_engine.write_log("连接CTP接口") whole_market_recorder = WholeMarketRecorder(main_engine, event_engine) main_engine.write_log("开始录制数据") oms_engine = main_engine.get_engine("oms") while True: sleep(1)
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 main_terminal(): """""" event_engine = EventEngine() event_engine.register(EVENT_LOG, process_log_event) event_engine.register(EVENT_RPC_LOG, process_log_event) main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) rpc_engine = main_engine.add_app(RpcServiceApp) setting = { "用户名": "", "密码": "", "经纪商代码": "9999", "交易服务器": "180.168.146.187:10101", "行情服务器": "180.168.146.187:10111", "产品名称": "simnow_client_test", "授权编码": "0000000000000000", "产品信息": "" } main_engine.connect(setting, "CTP") sleep(10) rep_address = "tcp://127.0.0.1:2014" pub_address = "tcp://127.0.0.1:4102" rpc_engine.start(rep_address, pub_address) while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) huobi = main_engine.add_gateway(HuobiGateway) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") filename = f"connect_{huobi.gateway_name.lower()}.json" setting = load_json(filename) main_engine.connect(setting, huobi.gateway_name) main_engine.write_log("连接HUOBI接口") sleep(10) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() sleep(10) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") while True: sleep(1)
def main_terminal(): """""" event_engine = EventEngine() event_engine.register(EVENT_LOG, process_log_event) event_engine.register(EVENT_RPC_LOG, process_log_event) main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) rpc_engine = main_engine.add_app(RpcServiceApp) setting = { "用户名": "25500029", "密码": "20140602", "经纪商代码": "6010", "交易服务器": "180.169.75.194:41305", "行情服务器": "180.166.1.17:41313", "产品名称": "vntech_vnpy_2.0", "授权编码": "0Y1J5UIMY79BFL7S", "产品信息": "" } main_engine.connect(setting, "CTP") sleep(10) rep_address = "tcp://127.0.0.1:2014" pub_address = "tcp://127.0.0.1:4102" rpc_engine.start(rep_address, pub_address) while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True # 控制是否要将日志输出到文件中,建议设置为True,否则无法记录生成的日志。 event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) main_engine.add_app(DataRecorderApp) main_engine.write_log("行情记录引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_RECORDER_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(15) main_engine.write_log("开始记录行情数据……") while True: sleep(1)
def run_child(): """ Running in the child process. """ event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(BinancesGateway) # rpc_engine = main_engine.add_app(RpcServiceApp) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.add_app(RiskManagerApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") binances_setting = load_json("connect_binances.json") gateway_name = "BINANCES" main_engine.connect(binances_setting, gateway_name) # connect_data = load_json("proxy_connect_status.json") # connect_data.update({gateway_name: True}) # save_json("proxy_connect_status.json", connect_data) main_engine.write_log("连接BINANCES接口") sleep(10) # rpc_engine.start() cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() sleep(10) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") try: while True: # connect_data = load_json("proxy_connect_status.json") # if not connect_data.get(gateway_name): # main_engine.connect(binances_setting, gateway_name) # connect_data.update(gateway_name, True) # save_json("proxy_connect_status.json", connect_data) # print("重连接口") sleep(10) except KeyboardInterrupt: main_engine.write_log("CTA策略正在退出") cta_engine.close() # rpc_engine.close() main_engine.close()
def main(): event_engine = EventEngine() event_engine.register("test", handle) event_engine.start() evt = Event("test") evt.data = "df" print("recei22:" + evt.__str__()) event_engine.put(evt) sleep(1) event_engine.stop()
def main(): """""" qapp = create_qapp() event_engine = EventEngine() main_engine = MainEngine(event_engine) log_engine = main_engine.get_engine("log") event_engine.register(EVENT_FOLLOW_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") # main_engine.add_gateway(BinanceGateway) main_engine.add_gateway(CtpGateway) # main_engine.add_gateway(CtptestGateway) # main_engine.add_gateway(MiniGateway) # main_engine.add_gateway(SoptGateway) # main_engine.add_gateway(MinitestGateway) # main_engine.add_gateway(FemasGateway) # main_engine.add_gateway(IbGateway) # main_engine.add_gateway(FutuGateway) # main_engine.add_gateway(BitmexGateway) # main_engine.add_gateway(TigerGateway) # main_engine.add_gateway(OesGateway) # main_engine.add_gateway(OkexGateway) # main_engine.add_gateway(HuobiGateway) # main_engine.add_gateway(BitfinexGateway) # main_engine.add_gateway(OnetokenGateway) # main_engine.add_gateway(OkexfGateway) # main_engine.add_gateway(HbdmGateway) # main_engine.add_gateway(XtpGateway) # main_engine.add_gateway(TapGateway) # main_engine.add_gateway(ToraGateway) # main_engine.add_gateway(AlpacaGateway) # main_engine.add_gateway(OkexsGateway) # main_engine.add_gateway(DaGateway) # main_engine.add_gateway(CoinbaseGateway) # main_engine.add_gateway(RpcGateway) main_engine.add_gateway(TqdataGateway) main_engine.add_app(CtaStrategyApp) # main_engine.add_app(CtaBacktesterApp) # main_engine.add_app(CsvLoaderApp) # main_engine.add_app(AlgoTradingApp) # main_engine.add_app(DataRecorderApp) # main_engine.add_app(RiskManagerApp) # main_engine.add_app(ScriptTraderApp) # main_engine.add_app(RpcServiceApp) # main_engine.add_app(SpreadTradingApp) # main_engine.add_app(FollowTradingApp) main_window = MainWindow(main_engine, event_engine) main_window.showMaximized() qapp.exec()
def run_child(): """ Running in the child process. """ event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(BinancesGateway) rpc_engine = main_engine.add_app(RpcServiceApp) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.add_app(RiskManagerApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") binances_setting = load_json("connect_binances.json") gateway_name = "BINANCES" main_engine.connect(binances_setting, gateway_name) main_engine.write_log("连接BINANCES接口") sleep(10) rpc_setting = load_json("rpc_service_setting.json") rpc_engine.start(rpc_setting['rep_address'], rpc_setting['pub_address']) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies(True) # sleep(10) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") # cta_engine.start_all_strategies() # main_engine.write_log("CTA策略全部启动") def ctrl_handler(signum, frame): cta_engine.stop_all_strategies() cta_engine.close() rpc_engine.close() main_engine.close() sys.exit(0) signal.signal(signal.SIGINT, ctrl_handler) while True: # connect_data = load_json("proxy_connect_status.json") # if not connect_data.get(gateway_name): # main_engine.connect(binances_setting, gateway_name) # connect_data.update(gateway_name, True) # save_json("proxy_connect_status.json", connect_data) # print("重连接口") sleep(10)
def run_child(): """ Running in the child process. """ # 全局配置文件机制 # 如果想开发自己的程序,可以把全局配置文件加载成自己的 SETTINGS["log.file"] = True # 创建事件引擎 event_engine = EventEngine() # 创建主引擎 main_engine = MainEngine(event_engine) # 添加交易接口,就是UI界面进入时的左边选择项 main_engine.add_gateway(CtpGateway) # 添加应用程序,就是UI界面进入时的右边选择项 cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.write_log("主引擎创建成功") # 取主引擎的事件引擎 # 向事件引擎注册日志事件监听函数 # 注意主引擎在创建日志引擎的时候,由日志引擎自动向事件引擎注册了主引擎的事件EVENT_LOG -> LogEngine.__init__ log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") # 连接交易接口,相当于UI界面的连接交易接口 main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") # 等待交易接口连接成功 sleep(10) # 接下来是CtaEngine的操作了 cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") while True: sleep(10) trading = check_trading_period() if not trading: print("关闭子进程") main_engine.close() sys.exit(0)
def init_cli_trading(gateways: Sequence[Type[BaseGateway]]): """""" event_engine = EventEngine() event_engine.register(EVENT_LOG, process_log_event) main_engine = MainEngine(event_engine) for gateway in gateways: main_engine.add_gateway(gateway) script_engine = main_engine.add_engine(ScriptEngine) return script_engine
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 main(): """""" # 创建 QApplication 对象 并进行初始化 # 事件引擎 event_engine = EventEngine() # 把事件引擎附加到主引擎里 main_engine = MainEngine(event_engine) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") # 添加火币的交互通道 # main_engine.add_gateway(HuobiGateway) # sleep(1) # main_engine.add_gateway(BitfinexGateway) # main_engine.add_gateway(OnetokenGateway) main_engine.add_gateway(OkexGateway) sleep(1) main_engine.add_gateway(OkexfGateway) # main_engine.add_gateway(HbdmGateway) # 把 app 保存到 apps 和 engines 里 sleep(1) data_recorder_app = main_engine.add_app(DataRecorderApp) sleep(2) # 获取所有交易通道 gateway_names = main_engine.get_all_gateway_names() for name in gateway_names: # 连接火币平台 connect = ConnectNoDialog(main_engine=main_engine, gateway_name=name) connect.connect() sleep(2) sleep(20) for tick in data_recorder_app.tick_recordings.keys(): data_recorder_app.add_tick_recording(tick) for bar in data_recorder_app.bar_recordings.keys(): data_recorder_app.add_bar_recording(bar) while True: # 一天 sleep(100000000)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True # 控制是否要将日志输出到文件中,建议设置为True,否则无法记录生成的日志。 event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(30) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") send_weixin("CTA策略全部启动") # send_dingding("CTA策略全部启动") while True: # main_engine.save_commission_margin_ratio() # 每5分钟保存一次手续费率、保证金率数据 trading = check_trading_period() if not trading: print("关闭子进程") main_engine.close() sys.exit(0) sleep(300)
def run_child(): """ Running in the child process. """ event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(CtpGateway) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") ctp_setting = load_json("connect_ctp.json") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(10) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() # sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") def ctrl_handler(signum, frame): cta_engine.stop_all_strategies() cta_engine.close() main_engine.close() sys.exit() signal.signal(signal.SIGINT, ctrl_handler) while True: sleep(10) trading = check_trading_period() if not trading: print("关闭子进程") main_engine.close() sys.exit(0)
class StrategyApp: def __init__(self): self.event_engine = EventEngine() self.main_engine = MainEngine(self.event_engine) self.main_engine.add_gateway(HbdmGateway) self.main_engine.add_gateway(BitmexGateway) log_engine = self.main_engine.get_engine("log") self.event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) self.main_engine.write_log("注册日志事件监听") self.main_engine.add_app(CtaStrategyApp) self.main_engine.add_app(AlgoTradingApp) def start_algo(self, setting): self.algo_engine.start_algo(setting) def run(self): pass
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) # main_engine.add_gateway(CtpGateway) main_engine.add_gateway(XtpGateway, gateway_name='Xtp_test') print(58, main_engine.gateways) print(main_engine.get_all_gateway_names()) print(main_engine.get_all_gateway_status()) for gateway_name in main_engine.gateways: xtp_setting = json.load( open(f"./connect_{gateway_name}.json", "r", encoding="utf8")) main_engine.connect(xtp_setting, gateway_name) sleep(2) print(main_engine.get_all_gateway_status()) print(59) cta_engine = main_engine.add_app(CtaStrategyApp) main_engine.add_app(RiskManagerApp) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") # main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(10) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_all_strategies() sleep(60) # Leave enough time to complete strategy initialization main_engine.write_log("CTA策略全部初始化") cta_engine.start_all_strategies() main_engine.write_log("CTA策略全部启动") while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.add_gateway(OkexfGateway) while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True event_engine = EventEngine() print(event_engine.__module__) # 把event和处理函数联系起来 main_engine = MainEngine(event_engine) # 一个大的类来把策略、ctp行情、事件引擎和实盘引擎结合起来。 # 把事件引擎加载进去主引擎 main_engine.add_gateway(CtpGateway) # 最终是返回CtpGateway接口,把行情接口和交易接口添加进去 cta_engine = main_engine.add_app(CtaStrategyApp) # 把CtaEngine这个实盘引擎加载进来,类似回测中的backtesting # 使用的具体策略在CTAEngine里面加载了。 # 返回CtaEngine main_engine.write_log("主引擎创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(1) main_engine.get_all_contracts() sleep(2) cta_engine.init_engine() main_engine.write_log("CTA策略初始化完成") cta_engine.init_strategy('AtrRsiStrategy') # 给策略初始化留足时间 sleep(1) main_engine.write_log("CTA策略全部初始化") cta_engine.start_strategy('AtrRsiStrategy') main_engine.write_log("CTA策略全部启动") while True: sleep(1)
def run_child(): """ Running in the child process. """ SETTINGS["log.file"] = True # 控制是否要将日志输出到文件中,建议设置为True,否则无法记录生成的日志。 event_engine = EventEngine() main_engine = MainEngine(event_engine) main_engine.add_gateway(SugarGateway) main_engine.add_gateway(CtpGateway) record_engine = main_engine.add_app(DataRecorderApp) spread_engine = main_engine.add_app(SpreadTradingApp) main_engine.write_log("行情记录及价差交易APP创建成功") log_engine = main_engine.get_engine("log") event_engine.register(EVENT_RECORDER_LOG, log_engine.process_log_event) main_engine.write_log("注册日志事件监听") main_engine.connect(sugar_setting, "SUGAR") main_engine.write_log("连接SUGAR接口") sleep(5) main_engine.connect(ctp_setting, "CTP") main_engine.write_log("连接CTP接口") sleep(15) spread_engine.start() main_engine.write_log("价差交易引擎启动成功") main_engine.write_log("开始记录行情数据……") while True: sleep(5) trading = check_trading_period() if not trading: print(f"{datetime.now()}\t关闭子进程") main_engine.close() sys.exit(0)