期货软件TB系统源代码解读系列65-价格与均线的相关差

策略说明:

1.系统将当前价格和MA之差定义为DRD

2.计算RDV: N天DRD的加和除以DRD绝对值的加和  

入场条件:

1.设置ETLong为入市阈值,如果RDV>ETLong,则入场做多

2.设置ETShort为入市阈值,如果RDV<ETShort,则入场做空

出场条件: 

1.如果RDV下穿0, 多头平仓

2.如果RDV上穿0, 空头平仓

做多系统代码及解读如下:

Params

Numeric ETLong(5); //声明数值参数ETLong,初值5,设置做多参数。//

Numeric RMALen(15);//声明数值参数RMALen,初值15.//

Vars

NumericSeries RDV(0); //声明数值序列变量RDV,初值0,NDV和TDV的比值(全在均值之上100,全之下-100,围绕均线趋近0)。//

NumericSeries TDV(0); //声明数值序列变量TDV,初值0,收盘价与15周期均值的差值绝对值的合计。//

NumericSeries NDV(0); //声明数值序列变量NDV,初值0,收盘价与15周期均值的差值的合计。//

NumericSeries RMA(0); //声明数值序列变量RMA,初值0,即15周期均值。//

NumericSeries DRD(0); //声明数值序列变量DRD,初值0,即收盘价与15周期均值的差值  。//

Begin

If(!CallAuctionFilter()) Return;// 集合竞价和小节休息过滤。//

//初始设置。//

RMA = Average(Close, RMALen); //15周期均值计算。//

DRD = Close - RMA; //  收盘价与15周期均值的差值  。//      

NDV = Summation(DRD, RMALen); //15周期的差值求和。//

TDV = Summation(Abs(DRD), RMALen); //15周期的差值绝对值,求和。//

If(TDV > 0)//假如TDV值大于0.//

RDV = 100 * NDV/TDV; //NDV和TDV的比值。//

//多头开仓。//

If (MarketPosition==0 And RDV[1] > ETLong And Vol > 0)//当前没有持仓,且前一个RDV[1]值大于5,且成交量大于0.//

Buy(0,Open);//开盘价买入。//

//多头平仓。//

If (MarketPosition==1 And BarsSinceEntry>0 And RDV[1]<0 And Vol > 0)//当前持有多单,且建仓数位大于0,且前一个RDV[1]小于0,且成交量大于0.//

Sell(0,Open);//平仓。//

End

做空代码及结果如下:

Params

Numeric ETShort(-5);

Numeric RMALen(15);

Vars

NumericSeries RDV(0);

NumericSeries TDV(0);

NumericSeries NDV(0);

NumericSeries RMA(0);

NumericSeries DRD(0);

Begin

If(!CallAuctionFilter()) Return;

RMA = Average(Close, RMALen); 

DRD = Close - RMA;         

NDV = Summation(DRD, RMALen); 

TDV = Summation(Abs(DRD), RMALen); 

If(TDV > 0)

RDV = 100 * NDV/TDV; 

If(MarketPosition==0 And RDV[1] < ETShort And Vol > 0)

SellShort(0,Open);

If (MarketPosition==-1 And RDV[1] > 0 And Vol > 0)

BuyToCover(0,Open);

End

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容