期货程序化交易日志分析_问题定位与优化
免责声明本文基于个人使用体验与任何厂商无商业关系。内容仅供技术交流参考不构成投资建议。一、前言程序化交易运行中会产生大量日志合理的日志设计和分析能快速定位问题、优化策略。做了二十年期货交易我积累了一些日志分析和问题定位的经验。今天分享期货程序化交易日志的设计方法和问题定位技巧。二、日志设计要点importloggingfromdatetimeimportdatetimedefsetup_trading_logger():配置交易日志loggerlogging.getLogger(trading)logger.setLevel(logging.INFO)fhlogging.FileHandler(flogs/trading_{datetime.now():%Y%m%d}.log)fh.setFormatter(logging.Formatter(%(asctime)s [%(levelname)s] %(message)s))logger.addHandler(fh)returnlogger# 关键事件记录# - 开平仓# - 订单状态变化# - 异常和错误# - 策略信号三、关键日志内容log_events{信号:策略产生信号时记录品种、方向、价格、理由,下单:下单时记录品种、方向、数量、价格,成交:成交时记录成交价、数量、手续费,异常:异常时记录异常类型、堆栈、上下文,账户:定期记录权益、持仓、浮动盈亏}四、TqSdk中的日志实践fromtqsdkimportTqApi,TqAuth,TqAccountimportlogging loggerlogging.getLogger(trading)defrun_with_logging(api):带日志的策略运行klinesapi.get_kline_serial(SHFE.rb2510,300,500)positionapi.get_position(SHFE.rb2510)whileTrue:api.wait_update()ifapi.is_changing(klines):closeklines[close].iloc[-1]ma20klines[close].rolling(20).mean().iloc[-1]ifclosema20andposition.pos_long0:logger.info(f信号: 开多 SHFE.rb2510 价格{close}ma20{ma20})orderapi.insert_order(SHFE.rb2510,BUY,OPEN,1)iforder:logger.info(f下单: BUY OPEN 1)elifclosema20andposition.pos_long0:logger.info(f信号: 平多 SHFE.rb2510)api.insert_order(SHFE.rb2510,SELL,CLOSE,position.pos_long)五、问题定位技巧troubleshooting_tips[按时间戳排查异常前后几分钟的日志,按品种排查某品种异常时过滤该品种日志,按类型排查搜索ERROR、WARN关键词,日志轮转避免单文件过大按天切分]六、总结程序化交易日志应记录信号、下单、成交、异常、账户等关键事件。合理设计便于问题定位和策略优化。建议按天轮转、分级别记录重要操作务必留痕。量化交易有风险日志是排查问题的基础不能替代风控。声明本文基于个人学习经验整理仅供技术交流参考不构成任何投资建议。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2408699.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!