高频短线交易系统——均线多(空)排列

论坛 期权论坛 期权     
期权匿名问答   2022-4-15 23:59   9931   0
大家好,上篇文章我们对20日均线突破买入策略进行了量化回测,结果显示在大周期是可以盈利的。但是对于我们大多数人来说,都比较偏向于在小周期交易,所以这一篇文章主要研究一下有没有小周期(5分钟)的交易方法。
开始之前,我们先来说一个概念:不管多空行情,自古以来都是涨到顶了就要反转下跌,下跌到底了就要反转上涨。那么我们如何把握好进场的条件呢?首先我发现一段行情对应的均线有5个阶段:
1、上涨初期,快、中、长三条均线朝上发散。这里我定义的三条均线取值为5、10、23,分别对应5天、一星期、一个月。(这个值可以自己决定,5、10、23不一定是最优的)
2、发散完之后,快线会与中线交叉。说明有卖盘了,但是这个卖盘不一定是反转,它有可能是上涨中继,买方还没有完全离场。
3、快线与长线交叉。说明买方已经开始变弱了,我们散户是谁赢跟谁,当我们分不清谁强时,就该考虑离场了。
4、盘整或者不盘整。这一步不是必须的,它有可能会发生,也有可能不会发生。
5、反转成功,均线开始朝下发散,形成下跌趋势。
具体体现在图中是这样的


所以我们发现,一个行情在入场的最佳位置是第一步,也就是均线发散的时候。离场的位置是在第三步,快线与长线交叉的时候,虽然没在最高点位离场,却是在最合理的点位离场。
基于上述理论,我们先把策略代码写出来:
Params
Numeric Length1(5);
Numeric Length2(10);
Numeric Length3(23);
Vars
Series<Numeric> MA5;
Series<Numeric> MA10;
Series<Numeric> MA23;
Events
OnBar(ArrayRef<Integer> indexs)
{
MA5=Average(CLOSE,5);
MA10=Average(CLOSE,10);
MA23=Average(CLOSE,23);
PlotNumeric("MA5",MA5);
PlotNumeric("MA10",MA10);
PlotNumeric("MA23",MA23);
If(MarketPosition<>1 And MA5[1]>MA5[2] And MA10[1]>MA10[2] And MA23[1]>MA23[2]) Buy(1,Open);
If(MarketPosition==1 And MA5[1]<ma10[1] And MA5[1]<MA23[1]) Sell(1,Close);
else If(MarketPosition<>-1 And MA5[1]<MA5[2] And MA10[1]<MA10[2] And MA23[1]<MA23[2]) SellShort(1,Open);
If(MarketPosition==-1 And MA5[1]>Ma10[1] And MA5[1]>MA23[1]) BuyToCover(1,Close);
}
该代码表示,当三条均线的前一个值大于前前一个值时,就在下一根k线的开盘多头买入。反之当三条均线的前一个值低于前前一个值时,就在下一根k线的开盘空头卖出,平仓条件是5日线与23日线交叉。为什么是“前”和“前前”,我上一篇文章说过,我们是为了避免事后诸葛,当根K线收在哪儿我们并不知道,但是我能确定的是前一根和前前一根K线,所以大家必须要记住,程序里面绝对不能出现当根K线的参数。
此次回测了三个品种,分别是甲醇209、纯碱209、螺纹2210,本金为10000,时间是该品种从上市到今天,周期为5分钟。测试结果如下:



甲醇209亏损80%



纯碱209盈利135%



螺纹2210亏损53%

通过上面的量化交易回测,发现该策略并不是对所有品种都通用。对纯碱效果较好,一年的收益能达到135%。但是对其它两个品种就很不友好了,我们打开交易K线查看,就能发现甲醇和螺纹这两个品种亏损的原因。




图中不难发现,亏损的2个原因:
1、K线没有趋势,上涨后马上又下跌了,下跌之后马上又上涨了。
2、大多时候开盘低开高走,高开低走,这样会造成这个策略反方向开仓。
对于这样的走势,说明我们的策略还需要优化,由于精力有限,优化的具体研究就放在下篇文章叙说。如果有什么疑问或需求,可以点击微信公众号【Tbear部落】右下方联系我。
(投资有风险,入市须谨慎,上述内容仅供交流与学习,不作为入市依据)
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:400157
帖子:80032
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP