量化百科

基于python的螺纹钢28分钟策略

由polll创建,最终由polll 被浏览 16 用户

自己的一个小团队, 用python从头到尾搭了一个交易平台, 从数据到回测,到模拟仿真到实盘交易, 折腾了大半年, 基本该填的坑都填上了。 小团队做自动化交易,不容易,跟大家分享一下:

  • 先别想着策略, 先把平台搭好。 最好的平台,还是自己搭的平台。为啥?你自己得对里面的所有细节有把握, 自己做一遍最清楚。 同时未来想扩展, 自己可以改。 人家做的好系统, 一方面是不会给你用的, 另一方面或多或少很多地方是跟你的要求不相符合的。
  • 先可以试试用掘金量化的平台, 有免费版, 不能交易, 可以实盘模拟。 平台做的不错, 能想到的,人家都想到了。 我们玩儿熟了, 然后做了自己的python平台, 很多地方参考了掘金
  • 找一个开源的项目, zipline, algotrader什么的, 作为开发的基础。 原则是, 第一这个项目一定要active, 有人一直在维护, 里面的功能设计要全面, 同时可扩展性强。有一天你要增加新的功能的时候, 就会发现当初选用一个很难扩展的框架是多痛苦。 第二就是性能, 你要用这个系统来做回测, 一定要快快快!!! 一个策略, 从想法诞生, 到测试买入卖出点的合理性, 到你开始样本外的移动测试, 蒙特卡洛模拟, 单就一个策略idea, 你起码测试10-100K次。 如果你要把这个idea不断演化, 回测测试起码再乘上个n倍吧。 如果一次回测超过半分钟, 你自己算算测一个策略要多久吧 。 结果是, 我们自己做了3个回测系统: 初级回测系统基于vectorized的方法, 忽略一些复杂交易要素,极大提高运算速度。回测速度在秒级(针对>100K数据点)。 中级回测系统考虑了所有交易要素, 模拟精准度很高, 回测速度在分钟级, 主要用于筛选过后的策略。 最后高级回测系统其实就是交易系统, 可以用历史数据回测, 或者直接切换到实盘。 这个主要用于模拟实盘交易跟踪策略。 我们的策略可以用简易的脚本构建 ,可以在3个回测系统里面自如的切换
  • 实盘交易系统: 这个其实没有必要说太多, 前面的回测系统做好了, 才是第一步。 基于世面上有的CTP接口, 就可以搭一个实盘交易系统。 问题是, 一定要确保几件事儿。 1. 你的回测系统跟交易系统的误差要小, 要极小。 抛开下单成交问题, 两个系统所有的单据, 统计, 买卖点触发时间, 等等这些地方, 一定要一致。 这些可以缩减的误差一定要去除。 2. 成交, 模拟环境不可能达到实际交易情况, 如果你用限价单,止损单的话, 在模拟情况下成交,在真实情况为未必成交。 我们的回测系统要尽可能贴近交易系统。
  • 数据: 是个大坑。 1分钟bar历史数据, 大家可以去交易开拓者上下载, 免费而且质量很好。 实时数据我们一直自己在下载着, tick数据生成bar数据, 里面的小坑无数。 不过细心解决不是大问题。我们自己实时生成的1分钟bar数据跟开拓者的一致,。
  • 交易回测系统的基础打好了, 问题没有了。 我们才能慢慢开始做策略系统, 做风控系统。
  • 给大家上一个我最近做的螺纹钢策略吧: 基于28分钟bar, 历史回测结果很好。 移动窗口优化分析结果比全样本内优化还好,为啥呢?因为这个策略几乎没有参数。 策略基本概念是基于区间突破, 当前close突破n天前的均值+m倍的标准差,就long或short。加了一个过滤器,CCI >0。 然后利用移动止损, n天前的ATR。 策略的概念其实很简单, 核心是回望窗口n天。 n不是固定值, 是实时根据当前市场的状态(波动性等等)计算的。 为啥用28分钟,不用30分钟, 或者20分钟? 我们发现螺纹钢到30分钟,1小时的时候波动很大, 应该有不少专门针对自动化交易(通常在30分钟,1小时出触发买卖交易)的特性, 拉动市场造成自动化交易止损,然后价格马上平复(我们过去吃了不少亏, 几个策略都是在这些时候被止损了)。

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1502' height='1068'></svg>)

只交易一手螺纹钢, 最大回撤2602块。 如果按照一手最大手续费3000, 加上2倍最大回撤5200, 本金需要大约8500块。 从2009到2016一共7.5年, 净收益75531, 900%收益。 交易次数不算频繁, 平均3天一次交易, 一次交易2天左右。 所以手续费不算大。

当然, 如果考虑到Position sizing, 这个策略收益可以放大很多, 当然风险也就很高了。大家都懂的。

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1220' height='1036'></svg>)

策略2017年1月开始实盘交易(做了一手, 留出1万元本金),到3月2日, 净收益1590元, 以1万元本金记, 15.9%的收益(一共5周, 12次交易, 8次盈利)。 未来会陆续定期贴出该策略的实盘表现。

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1594' height='136'></svg>)

![](data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='2332' height='1016'></svg>)

标签

回测实盘交易自动化交易Python