期货软件TB系统源代码解读系列12-加仓减仓模板

大家看了我之前写的代码,符合买卖规则后,都是固定的手数开平仓,从来没做什么加仓或减仓的操作的。原因有两个吧,一是这是个人习惯,我相信概率理论,固定手数操作,盈亏比需要达到多少,成功率需要达到多少;我对这些有很好的认识,所以在资金分配上可以比较合理安排,这能让我尽可能的规避爆仓风险。第二个原因更简单,就是没有加减仓经验,从来都是对了持仓,错了固定止损。

今天写加仓减仓源代码,只是让大家了解这程序化是如何来实现这功能的。但在实盘中结果如何,我也不好给什么建议,因为没这经验的。也不废话了,直接代码模板附上,咱再一一解读:

Vars

Numeric MinPoint; // 声明数值型变量MinPiont,看正文公式可知是一个最小变动单位,也就是一跳。//

NumericSeries firstPrice; // 声明数值型序列变量firstPrice,依正文公式看就是第一次开仓价格。//

NumericSeries LastPrice; // 声明数值型序列变量LastPrice,依正文看就是最后一次开仓价格。//

Numeric AddSet(30); // 声明数值型变量AddSet,依正文看就是加仓设置固定系数30.//

Numeric SubSet(30); // 声明数值型变量SubSet,依正文看就是减仓设置固定系数30.//

Bool FirstEntryCon; // 声明布尔型变量FirstEntryCon,依正文看就是首次开仓条件了。//

Begin

FirstEntryCon = ...//首次开仓的条件,就是这一行写好入场规则了,这是模板,省略了。//

MinPoint = MinMove*PriceScale;//最小变动价位,都是照这个固定公式写的,看英文字母都知道意思了。//

If(MarketPosition==0)//假如开始没有持仓的时候。//

{

If(FirstEntryCon)//假如首次开仓的条件都符合了。//

{

firstPrice = Open;//第一次开仓的价格,就是以开盘价来开了。//

LastPrice = firstPrice;//刚开始的最后一次开仓价先赋值为开仓价。//

Buy(2,firstPrice);//以第一次开仓价买2手,方便加减操作的,当然实盘多少都是随个人的习惯。//

}

}else If(MarketPosition==1) // 有了多仓之后的情况,该如何加减仓的具体操作了。//

{

While(CurrentEntries < 4 && High >= LastPrice + AddSet*MinPoint) // 这个CurrentEntries意思是获得当前持仓的建仓次数,直白来解读,当持仓的建仓次数小于4次,并且最高价大于或等于最后一次开仓加上固定系数30乘以最小跳动价格。//

{

LastPrice = LastPrice + AddSet*MinPoint;//这循环累加句子,只要符合上面的,累次加仓直到不符合条件,才跳出来。//

if(Open > LastPrice) //假如开盘价大于最后一次开仓价。//

LastPrice = Open;//就把开盘价赋予给最后一次开仓价。//

Buy(1,LastPrice);//用最后一次开仓价来加仓一手了。//

}

While(CurrentEntries > 0 && Low <= firstPrice - SubSet*MinPoint) // 减仓操作,当持仓的建仓次数大于0,并且最低价小于首次开仓价 减去 固定系数30乘以最小跳动价格的。//

{

firstPrice = firstPrice - SubSet*MinPoint;//这是循环累减的句子,符合条件的依次减,直到没有持仓。//

if(Open < firstPrice)//假如开盘价小于首次开仓价的。//

firstPrice = Open;//把开盘价赋值给首次开仓价。//

Sell(1,firstPrice);//以首次开仓价,平掉一手。//

}

}

...

End

这就是加减仓的操作代码,当然里边的那些手数,一般是依据个人的资金量跟习惯来的,这里只是个模板。我们可以用这个模板,依据突破200移动均线进行加仓买卖,代码如下:

Params

Numeric DslowLength(200);

Vars

NumericSeries AvgValue3;

Numeric MinPoint;

NumericSeries firstPrice;

NumericSeries LastPrice;

Numeric AddSet(30);

Numeric SubSet(30);

Bool FirstEntryCon;

Begin

AvgValue3 = AverageFC(Close,DslowLength);

PlotNumeric("MA3",AvgValue3);

MinPoint = MinMove*PriceScale;

FirstEntryCon = Close[1] >= AvgValue3 ;

If(MarketPosition==0)

{

If( FirstEntryCon )

{

firstPrice = Open;

LastPrice = firstPrice;

Buy(2,firstPrice);

}

}

Else If(MarketPosition==1)

{

While(CurrentEntries < 4 && High >= LastPrice + AddSet*MinPoint)

{

LastPrice = LastPrice + AddSet*MinPoint;

if(Open > LastPrice[1])

LastPrice = Open;

Buy(1,LastPrice);

}

While(CurrentEntries > 0 && Low <= firstPrice - SubSet*MinPoint)

{

firstPrice = firstPrice - SubSet*MinPoint;

if(Open < firstPrice)

firstPrice = Open;

Sell(1,firstPrice);

}

}

End

代码写出来了,但很不幸运的,这个代码TB系统竟然调用不了,问客服说是有的算法运算量太大了,程序运算很慢的,没法执行,所以这个加仓的效果如何,我也不清楚。我个人也不习惯加仓操作,对这也不会多加研究怎么加仓的,解读这个代码只是告诉大家有这么个加减仓的源代码,习惯加仓操作的朋友,可以自己多加研究。当然,加减仓的源代码编写有多种形式,这个只是TB系统里自带的模板,在此解读它方便大家交流学习而已。

你可能感兴趣的:(期货软件TB系统源代码解读系列12-加仓减仓模板)