指标BUG无疑。

 

已反复确认,其他指标均获取正常,唯独布林带,获取不到上轨下轨数据,获取的三个数据都是中轨的,按照我的能力,认定是获取指标函数BUG了。以下是代码,运行在官方MT5软件


   double 布林上[];
   double 布林下[];
   double 布林中[];
   int h=iBands(Symbol(),PERIOD_CURRENT,21,0,0,PRICE_CLOSE);
   ArraySetAsSeries(布林上,true);
   ArraySetAsSeries(布林下,true);
   ArraySetAsSeries(布林中,true);
   int a;
   a=CopyBuffer(h,0,0,5,布林上);
   a=CopyBuffer(h,1,0,5,布林下);
   a=CopyBuffer(h,2,0,5,布林中);
   printf("上%f,下%f,中%f,a值%d",布林上[2],布林下[2],布林中[2],a);
 

測試沒毛病

指標參數錯誤設定沒偏差 所以都是中軌值

 
Hung Wen Lin #:

測試沒毛病

指標參數錯誤設定沒偏差 所以都是中軌值

获取同一根K线的上轨下轨中轨,不需要偏差啊。已经困惑我很久了,参数应该怎么设置啊

 

布林上[2],布林下[2],布林中[2]

数组可能需要resize一下,而且

iBands

缓冲区代码如下: 0 - BASE_LINE, 1 - UPPER_BAND, 2 - LOWER_BAND。

 
g526 #:

获取同一根K线的上轨下轨中轨,不需要偏差啊。已经困惑我很久了,参数应该怎么设置啊

布林帶中軌就是均線 向上偏差是上軌 向下偏差是下軌 這是基礎概念

沒有偏差上下軌就等同中軌 所以你取的值都是中軌的值

 
g526:
double 布林上[];
   double 布林下[];
   double 布林中[];
   int h=iBands(Symbol(),PERIOD_CURRENT,21,0,0,PRICE_CLOSE);
   ArraySetAsSeries(布林上,true);
   ArraySetAsSeries(布林下,true);
   ArraySetAsSeries(布林中,true);
   int a;
   a=CopyBuffer(h,0,0,5,布林上);
   a=CopyBuffer(h,1,0,5,布林下);
   a=CopyBuffer(h,2,0,5,布林中);
   printf("上%f,下%f,中%f,a值%d",布林上[2],布林下[2],布林中[2],a);

这样:

double 布林上[];
   double 布林下[];
   double 布林中[];
   int h=iBands(Symbol(),PERIOD_CURRENT,21,0,0,PRICE_CLOSE);
   ArraySetAsSeries(布林上,true);
   ArraySetAsSeries(布林下,true);
   ArraySetAsSeries(布林中,true);
   int a,b,c;
   a=CopyBuffer(h,0,0,5,布林上);
   b=CopyBuffer(h,1,0,5,布林下);
   c=CopyBuffer(h,2,0,5,布林中);
   printf("上%f,下%f,中%f,a值%d, ,b值%d , ,c值%d ",布林上[2],布林下[2],布林中[2],a,b,c);
原因: