//------------------------------------------------------------------------
// 简称: BollingerBandit_L
// 名称: 布林强盗
// 类别: 公式应用
// 类型: 内建应用
// 输出:
//------------------------------------------------------------------------
/*
策略说明:
基于布林通道的突破系统
系统要素:
1、基于收盘价计算而来的布林通道
2、基于收盘价计算而来的进场过滤器
3、自适应出场均线
入场条件:
1、满足过滤条件,并且价格上破布林通道上轨,开多单
2、满足过滤条件,并且价格下破布林通道下轨,开空单
出场条件:
1、持有多单时,自适应出场均线低于布林通道上轨,并且价格下破自适应出场均线,平多单
2、持有空单时,自适应出场均线高于布林通道下轨,并且价格上破自适应出场均线,平空单
注 意:
此公式仅做多
*/
Params
Numeric bollingerLengths(50); // 布林通道参数
Numeric Offset(1.25); // 布林通道参数
Numeric rocCalcLength(30); // 过滤器参数
Numeric liqLength(50); // 自适应出场均线参数
Numeric Lots(4); // 交易手数
Vars
Series<Numeric> N;
Series<Numeric> MidLine(0); // 布林通道中轨
Numeric Band(0);
Series<Numeric> upBand(0); // 布林通道上轨
Series<Numeric> dnBand(0); // 布林通道下轨
Series<Numeric> rocCalc(0); // 过滤器
Series<Numeric> liqDays(50); // 自适应出场均线的参数
Series<Numeric> liqPoint(0); // 自适应的出场均线
Events
OnBar(ArrayRef<Integer> indexs)
{
// 布林通道中轨
MidLine = AverageFC(Close,bollingerLengths);
Band = StandardDev(Close,bollingerLengths,2);
// 布林通道下轨
dnBand = MidLine - Offset*Band;
// 布林通道上轨
upBand = MidLine + Offset*Band;
// 画线
PlotNumeric(\"upBand\",upBand[1]);
PlotNumeric(\"MidLine\",MidLine[1]);
PlotNumeric(\"dnBand\",dnBand[1]);
// 进场过滤器
rocCalc=Close[1] - Close[rocCalcLength - 1];
// 满足过滤条件,并且价格突破布林通道下轨,开空单
If(N>0)
{
If(MarketPosition != -1 And rocCalc[1] < 0 And Low <= dnBand[1]) SellShort(Lots,Min(Open,dnBand[1]));
{
SellShort(Lots,Min(Open,dnBand[1]));
N=0;
}
// 满足过滤条件,并且价格突破布林通道上轨,开多单
If(MarketPosition != 1 And rocCalc[1] > 0 And High >= upBand[1]) Buy(Lots,Max(Open,upBand[1]));
{
Buy(Lots,Max(Open,upBand[1]));
N=0;
}
}
// 自适应出场均线
If(MarketPosition == 0)
{
liqDays = bollingerLengths;
}
Else
{
liqDays = liqDays - 1;
liqDays = Max(liqDays,10);
}
liqPoint = Average(Close,liqDays);
// 画线
PlotNumeric(\"liqPoint\",liqPoint[1]);
// 持有空单时,自适应出场均线高于布林通道下轨,并且价格上破自适应出场均线,平空单
If(MarketPosition == -1 And BarsSinceEntry >= 1 And High >= liqPoint[1])
{
BuyToCover(0,Max(Open,liqPoint[1]));
N=0;
}
If(MarketPosition == 1 And BarsSinceEntry >= 1 And Low <= liqPoint[1])
Sell(0,Min(Open,liqPoint[1]));
N=0;
}
//------------------------------------------------------------------------
// 编译版本 GS2014.10.25
// 版权所有 TradeBlazer Software 2003-2025
// 更改声明 TradeBlazer Software保留对TradeBlazer平
// 台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
就比如 你这个 If(N>0)
n>0 ,好像没看有n大于0的赋值
图上是没信号
还是有信号不报单
还是报单不成交