阳江市网站建设_网站建设公司_Node.js_seo优化
2025/12/25 17:37:59 网站建设 项目流程

重修vn.py笔记 之 五 : CTP

我们重点研究的是Ctp, 那么,把ctp单独拿出来,跑一次。 

主体框架有参数管理、图形处理等大量繁杂的系统工作,这里没有用主体框架,需要预先设置参数。 

import multiprocessing
import sys
from time import sleep
from datetime import datetime, timefrom vnpy.event import EventEngine
from vnpy.trader.setting import SETTINGS
from vnpy.trader.engine import MainEngine, LogEngine
from vnpy.trader.logger import INFO, loggerfrom vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp, CtaEngine
from vnpy_ctastrategy.base import EVENT_CTA_LOGSETTINGS["log.active"] = True
SETTINGS["log.level"] = INFO
SETTINGS["log.console"] = Truectp_setting = {"用户名": "05555","密码": "xxxxxxx","经纪商代码": "9999","交易服务器": "182.254.243.31:30001","行情服务器": "182.254.243.31:30011","产品名称": "simnow_client_test","授权编码": "0000000000000000","产品信息": "","柜台环境": "实盘",
}# Chinese futures market trading period (day/night)
DAY_START = time(8, 45)
DAY_END = time(15, 0)NIGHT_START = time(20, 45)
NIGHT_END = time(2, 45)def check_trading_period() -> bool:""""""current_time = datetime.now().time()trading = Falseif ((current_time >= DAY_START and current_time <= DAY_END)or (current_time >= NIGHT_START)or (current_time <= NIGHT_END)):trading = Truereturn tradingdef run() -> None:"""Running in the child process."""SETTINGS["log.file"] = Trueevent_engine: EventEngine = EventEngine()main_engine: MainEngine = MainEngine(event_engine)main_engine.add_gateway(CtpGateway)cta_engine: CtaEngine = main_engine.add_app(CtaStrategyApp)logger.info("主引擎创建成功")log_engine: LogEngine = main_engine.get_engine("log")       # type: ignoreevent_engine.register(EVENT_CTA_LOG, log_engine.process_log_event)logger.info("注册日志事件监听")main_engine.connect(ctp_setting, "CTP")logger.info("连接CTP接口")sleep(10)cta_engine.init_engine()logger.info("CTA策略初始化完成")cta_engine.init_all_strategies()sleep(60)   # 在模拟环境中,这一步可能会很慢,需要等待策略初始化完成logger.info("CTA策略全部初始化")cta_engine.start_all_strategies()logger.info("CTA策略全部启动")while True:sleep(10)trading = check_trading_period()if not trading:logger.info("关闭子进程")main_engine.close()sys.exit(0)if __name__ == "__main__":    run()

  值得关注的是这一句:

event_engine.register(EVENT_CTA_LOG, log_engine.process_log_event), 将cta的log 处理注册到主引擎的log 事件处理程序上了。 这样,cta 的日志就由主引擎的日志系统函数管理了。 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询