当前位置:主页 > TB交易开拓者策略 >

期货软件TB系统源代码解读:双均线交易系统完善

时间: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


 

(责任编辑:admin)

十年专业期货服务平台,全国最低手续费保证金开户,咨询微信:cclk88

您可能感兴趣的文章:

相关文章