工具推荐
· Ai帮你编写策略
ˇ
大家好!SF系列策略推出以来累计阅读量8万,是备受粉丝喜欢的量化系列,有很多老策略因为年代久远、软件更新等原因无法正常使用。我们决定对SF系列重制、优化代码结构、工作区重制使策略能够开箱即用。
SF系列与算法系列源码已经全部重制完成(可以打包):
1.tb重做了工作区888合约,部分代码重写。
2.增加了python代码。
3.文华8代码更新。
本期策略将以图文的方式讲解如何构建一个“高胜率”“短线”的商品策略,以螺纹钢5分钟为数据样本开发,策略也可以用于其他品种,但是因为品种之间的点价值,波动率,交易成本,活跃程度的不同需要调整参数。这里要特别说明一下,不一定要用统一的参数组来适用于所有品种,这是传统教条的理念,往往负作用大于正作用。
关于参数优化这一块儿:
第一个是交易条件设置的合理性;
第二个是样本数据多样性;
第三个是参数范围的科学性;
第四个是使用平原参数;
以上4点,我们不在这里一一展开,因为本期内容是如何构建一个高胜率的短线策略,如果读者有兴趣探究参数优化的内容,可以在评论区或者公众号后台留言,我们会根据人数多少考虑出一期参数优化的专题贴。
策略结构:
指标计算部分;
过滤条件设定;
开仓条件;
移动出场及分段止盈;
1.指标计算:采用昨收,昨高,昨低,今开,并称为菲阿里四价。它由日本期货冠军菲阿里实盘采用的主要突破交易参照系,我们这里只是使用这四个价格,并非完全按照非阿里交易的规则;
图中就是得到的Band_up和Band_dn俩条上下轨线。如果直接用于开平仓,会赔的很惨。
2.过滤条件设定:有意思的部分来了,我们通过观察发现每一天的区间宽窄程度不一样,通过数据统计我们发现较窄的区间往往意味着震荡,如果这时突破上轨开多,下轨开空就会产生穿头破脚的亏损交易,也就是假突破信号。那么,我们想过滤掉这些信号,就需要定义出哪些是“窄区间”。
图中我们用红色虚线和绿色虚线表示出上一个区间的上下轨道;
过滤原理:新区间宽度<上一个区间的宽度;
代码实现:
√知识点:这里需要注意的是不能直接使用DATE这个系统函数,自从有了夜盘以来,一日BAR线是从作晚的夜盘开始,而不是今早9点开始。所以我们使用用户函数TrueDate来取得完整的数据日期;
计算出新区间的宽度和上一个区间的宽度,分别赋值到变量HL_band和RHL_band里面。我们等等构建开仓条件时要使用;
3.开仓条件:
交易条件非常简单,就是本区间上下轨突破+过滤条件;
√知识点:简单,但是有效。这就是我们前面提到的交易条件的合理性,过多的条件组合效果不一定好,还有可能存在条件过度拟合。
4.移动出场及分段止盈:
移动出场:
lastprice是开仓价格;
HL_band是区间幅度;
N是系数;
√知识点:这里的lastprcie可以使用lowafter和Highafter,或者HL_band拿ATR代替,总之效果就是一个吊灯或者阶梯状的出场线,很简单也很实用。
分段止盈:
关于这一段的代码,网上有现成的代码模块。是一个简单的功能模块,没有什么特殊的写法,大家可以拿来参考使用。
接下来我们看一下交易信号:
我们看到图中红色框是震荡部分,通过以上代码的编写,实现了比较好的震荡过滤效果;
√知识点:那么是不是百分百过滤呢?当然不是,世界上也不存在这种算法,震荡是行情的一部分,所有的过滤都是相对的。
例如下图:也有过滤不了和交易亏损的部分,或者是判断错误的信号。这也是策略真实性的表现;
√知识点:亏损是交易的一部分,是一种试错成本。只要是在风险可控的前提下,模型长时间产生的是正期望收益,那就OK。
防迷路
微 信|小松鼠-松鼠Quant
微信号|viquant01