时间:2020-04-14 | 栏目:TB交易开拓者策略 | 点击:次
双均线交易系统在第一篇的时候,就解读了,而且我一直用的就是这个系统,当然,它的缺陷还是存在的,开仓过多,后来我给改了,添加了一条200均线,限制多空方向的开仓,但在过均线200时,又没法去掉延迟,那时,我也还不知道怎么改,就留着了,随着自己解读的代码越多,现在才知道把它给完善。也不废话了,我直接附上这个自己修改完善后的代码吧,解读如下:
Params
Numeric FastLength(5);//声明数值参数FastLength,初值5.//
Numeric SlowLength(20);//声明数值参数SlowLength,初值20.//
Numeric DslowLength(200);//声明数值参数DslowLength,初值200.//
Vars
NumericSeries AvgValue1; //声明数值序列变量AvgValue1.//
NumericSeries AvgValue2;//声明数值序列变量AvgValue2.//
NumericSeries AvgValue3;//声明数值序列变量AvgValue3.//
Begin
AvgValue1 = AverageFC(Close,FastLength);//求5日均线了。//
AvgValue2 = AverageFC(Close,SlowLength);//求20日均线了。//
AvgValue3 = AverageFC(Close,DslowLength);//求200日均线了。//
PlotNumeric("MA1",AvgValue1);//画5日均线。//
PlotNumeric("MA2",AvgValue2); //画20日均线。//
PlotNumeric("MA3",AvgValue3); //画200日均线。//
If(!CallAuctionFilter()) Return;// 集合竞价和小节休息过滤。//
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1] && High >= AvgValue3[1]) //假如当前没用持多单,且前一5日均线大于前一20日均线,且当前高价大于或等于200日均线。//
{
Buy(1,Max(Open , AvgValue3 ));//开仓买入,这里的细节处理就是把200日均线与当前k线开盘价比较,取较大值。//
}
If(MarketPosition ==1 && AvgValue1[1] < AvgValue2[1]) //假如当前持有多仓,且前一5日均线小于前一20日均线。//
{
Sell(1,Open);//平仓。//
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1] && Low <= AvgValue3[1]) //假如当前没有持空单,且前一5日均线小于前一20日均线,且当前低价小于前一200日均线。//
{
SellShort(1,Min(Open , AvgValue3 ));//开仓卖出,细节处理就是把当前k线的开盘价与200日均线值比较,取较小值即可。//
}
If(MarketPosition ==-1 && AvgValue1[1] > AvgValue2[1])//当前持有空单,且前一5日均线大于前一20日均线的。//
{
BuyToCover(1,open);//平仓。//
}
End
上面的系统是我修改的,下面是TB里自带写好的双均线系统,源代码及结果如下:
Params
Numeric FastLength(5);
Numeric SlowLength(20);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
// 集合竞价和小节休息过滤
If(!CallAuctionFilter()) Return;
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(1,Open);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
SellShort(1,Open);
}
End
十年专业期货服务平台,全国最低手续费保证金开户,咨询微信:cclk88