使用指标:20日布林线
做多单条件:
当价格触及到布林线上轨时,在布林上轨与中轨的二分之一价格处挂多单;
做空条件:
当价格触及到布林线下轨时,在布林下轨与中轨的二分之一价格处挂空单;
平多单条件:
当价格跌破布林下轨平多单;
平空单条件:
当价格跌破布林下轨平空单;
其他:
如果满足做多条件后,并没有触发挂单,再有价格触及到布林上轨时,撤销之前挂的多单,再次用新的价格去挂多单,空单也是如此。
求助编写
策略逻辑规则不够完整。如果不考虑策略完整性,代码实现并不难,因为规则不够完善,完整代码就不贴出来。提供部分代码供您参考。
Params
Numeric Length(20); //周期
Numeric Offset(2); //标准差倍数
Vars
... ... // 请复制系统boll代码,部分变量改了下名字
Series<Numeric> LLine(0,2);
Series<Numeric> SLine(0,2);
Series<Integer> dir(0,2);
Events
OnReady()
{
SetBackBarMaxCount(1+Length);
}
OnBar(ArrayRef<Integer> indexs)
{
... ... // 请复制系统boll代码,部分变量改了下名字
If(High > UpLine)
{
dir = 1;
If(MarketPosition <> 1) LLine = (UpLine + MdLine)/2;
}
PlotNumeric(\"LLine\",LLine,0,red);
If(Low < DnLine)
{
dir = -1;
If(MarketPosition <> -1) SLine = (DnLine + MdLine)/2;
}
PlotNumeric(\"SLine\",SLine,0,Green);
If(dir[1] == 1 && MarketPosition <> 1 && Low < LLine[1])
{
Buy(1, Min(Open,LLine[1]));
dir = 0;
}
If(MarketPosition == 1 && BarsSinceEntry > 0 && Low < MdLine[1]) Sell(0,Min(O,MdLine[1]));
If(dir[1] == -1 && MarketPosition <> -1 && High > SLine[1])
{
SellShort(Lots[1], Max(Open,SLine[1]));
dir = 0;
}
If(MarketPosition == -1 && BarsSinceEntry > 0 && High > MdLine[1])
BuyToCover(0,Max(O,MdLine[1]));
}
建议谨慎防止被骗