我们设计模型,有时候有些客户的需求是用金字塔式的开仓策略,这就牵涉到增仓减仓的问题。那么今天我们就结合tb开拓者公式开发指南来说一下这个问题,其实这个问题在开发指南p108里面的公式策略进阶部分也有说。
我们大概就着相关公式讲一下。
其中的变量设置如下:
Vars
Numeric Minpoint;//求最小变动单位,一跳
NumericSeries FirstPrice;//第一次开仓价格
NumericSeries LastPrice;//最后一次开仓价格
Numeric AddSet(30);//加仓设置
Numeric SubSet(30);//减仓设置
Bool FirstEntryCon;//设置首次开仓条件
Begin
FirstEntryCon=……//设置首次开仓条件
Minpoint=MinMove*PriceScale;//价格最小变动设置
If (MarketPosition==0)
{if(FirstEntryCon)
{FirstPrice=open;
LastPrice=FirstPrice}
Buy(2,FirstPrice);}//条件满足,首次开仓2手
Else if(MarketPosition==1 And BarSince>=1))//有多仓情况
{While(CurrentEntrice <4 && High >=LastPrice +AddSet*MinPoint)//加仓
{LastPrice=LastPrice+AddSet*MinPoint;
if(Open>LastPrice)LastPrice=Open;
Buy(1,LastPrice)
}
While(CurrentEntrice >0 && Low<=FirstPrice -SubSet*MinPoint)//减仓
{FirstPrice=FirstPrice-SubSet*MinPoint;
if(Open<FirstPrice)FirstPrice=Open;
sell(1,FirstPrice);
}
}
代码我从指南上面手抄到上面框框了,可能有些细节格式错误,但是大概意思如上。
这一段策略是以作多为为例。具体代码通过MarketPosition和CurrentEntrice来识别当前持仓状态和加减仓状态。
其设计思路的每盈利30跳加仓一次,和开仓后每亏损30跳减仓一手的逻辑思维还是很科学的。同理,我们设计交易模型和思路的时候,也可以用涨跌幅的百分比设置加减仓的位置。这就是金字塔式加仓、减仓、止盈止损的一个设计思路。如果是趋势模型,这样的方式对于风险的管控还是比较灵活、有效的。当遇到逆趋势行情,能快速有效的止损。
今天就这个案例主要是要认识MarketPosition和CurrentEntrice的函数意义以及在其他模型设计平台下,这两种函数和设计思路的大致应用。往后的内容将会以一些模型成品为主,我们会把代码贴出来供大家参考模型的设计逻辑。欢迎关注和藏赞。