期货软件TB系统源代码解读系列49-金肯特纳

金肯特纳,这是我今天没啥时间写,随意找的一个简单程序化系统,它的代码很简单,我们先看它的策略说明吧,如下:

策略说明:

基于肯特纳通道的突破系统

系统要素:

1、基于最高价、最低价、收盘价三者平均值计算而来的三价均线

2、基于三价均线加减真实波幅计算而来的通道上下轨

入场条件:

1、三价均线向上,并且价格上破通道上轨,开多单

2、三价均线向下,并且价格下破通道下轨,开空单

出场条件:

1、持有多单时,价格下破三价均线,平多单

2、持有空单时,价格上破三价均线,平空单

做多公式代码解读如下:

Params

Numeric avgLength(40); //声明数值参数avgLength,初值40,即三价均线周期参数。//

Numeric atrLength(40); // 声明数值参数atrLength,初值40,即真实波幅参数周期。//

Numeric Lots(0);  // 声明数值参数Lots,初值0,即交易手数。//

Vars

NumericSeries movAvgVal(0);// 声明数值序列变量moveAvgVal,初值0。//

NumericSeries upBand(0);// 声明数值序列变量upBand,初值0,即通道上轨。//

NumericSeries liquidPoint(0); // 声明数值序列变量liquidPoint,初值0,即出场条件。//

Begin

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

movAvgVal = Average((High + Low + Close)/3,avgLength);// 三价均线算法,先算k线3个价格的平均价,最后返回求均值函数Average,求得40周期的价格均值。//

upBand = movAvgVal + AvgTrueRange(atrLength);// 通道上轨算法,求40周期的真实波动幅度值,再加上变量moveAvgVal值了。//

liquidPoint = movAvgVal;// 出场条件算法,即把三均线均值moveAvgVal赋值给变量liquidPoint值了。//

PlotNumeric("movAvgVal",movAvgVal);//画线三均线。//

PlotNumeric("upBand",upBand);//画线上轨线。//

If(MarketPosition != 1 And movAvgVal[1] > movAvgVal[2] And High >= upBand[1]) // 假如当前没有持多单,并且三价均线向上,并且价格上破通道上轨,开多单。//

Buy(Lots,Max(Open,upBand[1]));//开仓,价格上轨价与开盘价比较的大值了。//

If(MarketPosition == 1 And BarsSinceEntry >= 1 And Low <= liquidPoint[1]) // 持有多单时,建仓数位大于1,并且价格下破三价均线,平多单。//

Sell(0,Min(Open,liquidPoint[1]));//平仓,价格下轨线与开盘价比较的小值。//

End

做空即把买卖条件变过来就行了,代码及结果如下:

Params

Numeric avgLength(40);

Numeric atrLength(40);

Numeric Lots(0);

Vars

NumericSeries movAvgVal(0);

NumericSeries dnBand(0);

NumericSeries liquidPoint(0);

Begin

If(!CallAuctionFilter()) Return;

movAvgVal = Average((High + Low + Close)/3,avgLength);

dnBand = movAvgVal - AvgTrueRange(atrLength);

liquidPoint = movAvgVal;

PlotNumeric("movAvgVal",movAvgVal);

PlotNumeric("dnBand",dnBand);

If(MarketPosition != -1 And movAvgVal[1] < movAvgVal[2] And Low <= dnBand[1]) SellShort(Lots,Min(Open,dnBand[1]));

If(MarketPosition == -1 And BarsSinceEntry >= 1 And High >= liquidPoint[1]) BuyToCover(0,Max(Open,liquidPoint[1]));

End

你可能感兴趣的:(期货软件TB系统源代码解读系列49-金肯特纳)