我如何使用布林带获得开单信号?

How do I to use Bollinger Bands to get a signal to open an order?

我正在尝试使用布林带来获取打开订单买入或卖出的信号。为此,我尝试测试 candle[2] 和 candle[1] 收盘价是否高于或低于 MODE_UPPERMODE_LOWERiBands 以打开订单。问题是订单在 MODE_MAIN 而不是 MODE_UPPER 或 MODE_LOWER 旁边打开,我不知道为什么会这样。

我该怎么做?

正在尝试

//return true if has a signal to open order 
bool bollingerBandScalper(int bs){
   int _candle = 0;
   int _period = 14;

   //double _main = iBands(_Symbol, _Period, _period, 2, 0, PRICE_CLOSE, MODE_MAIN, _candle + 1);

   double LowerBB = iBands(_Symbol, _Period, _period, 2, 0, PRICE_CLOSE, MODE_LOWER, _candle + 1);
   double UpperBB = iBands(_Symbol, _Period, _period, 2, 0, PRICE_CLOSE, MODE_UPPER, _candle + 1);

   double PrevLowerBB = iBands(_Symbol, _Period, _period, 2, 0, PRICE_CLOSE, MODE_LOWER, _candle + 2);
   double PrevUpperBB = iBands(_Symbol, _Period, _period, 2, 0, PRICE_CLOSE, MODE_UPPER, _candle + 2);

   //buy signal
   if(bs == OP_BUY){
      if((Close[_candle + 2] > PrevLowerBB) && (Close[_candle + 1] > LowerBB)){
         return true;
      }
   }

   //sell signal
   if(bs == OP_SELL){
      if((Close[_candle + 2] > PrevUpperBB) && (Close[_candle + 1] > UpperBB)){
         return true;
      }
   }


   return false;

}

我认为您在寻找收盘价 above/below BB 带时犯了一个错误。 我对您的代码进行了一些更改。你可以测试一下:

//return true if has a signal to open order 
bool bollingerBandScalper(int type,int period,int shift)
{
 double LowerBB = iBands(_Symbol,_Period,period,2.0,0,PRICE_CLOSE,MODE_LOWER,shift+1);
 double UpperBB = iBands(_Symbol,_Period,period,2.0,0,PRICE_CLOSE,MODE_UPPER,shift+1);

 double PrevLowerBB = iBands(_Symbol,_Period,period,2,0,PRICE_CLOSE,MODE_LOWER,shift+2);
 double PrevUpperBB = iBands(_Symbol,_Period,period,2,0,PRICE_CLOSE,MODE_UPPER,shift+2);

 //buy signal
 if(type==OP_BUY && Close[shift+2]>PrevLowerBB && Close[shift+1]<LowerBB) return true;

 //sell signal
 if(type==OP_SELL && Close[shift+2]<PrevUpperBB && Close[shift+1]>UpperBB) return true;

 return false;
}