新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1529

 
Alexey Viktorov:

是的,我也查了一下来回答你。

我做不到--我是用手机写的,只写问题比较快 :)

 
Alexey Viktorov:

这不是由开发商强加的,而是由一位版主强加的。至于BB值,所以Artem告诉你,直接获得所有的东西比较容易......顺序是这样的......。

  1. 申报的处理变量和数组,以获得指标值。如果有必要,最多3个。如果我们不需要一个平均值,两个数组就足够了。
  2. 在OnInit()中,我们收到了指标句柄...
  3. 在OnTick()或其他函数中,对每一行单独进行CopyBuffer(),需要多少就有多少。
  4. 从这些数组中你可以得到这些条形上的指标线的值,这很有趣...

就这样了。为什么要用OOP¿¿¿¿¿?不幸的是,我不能直接回答你的问题,因为我没有在使用它。正如我所描述的那样,对我来说比较容易。只有4个行动。

请告诉我为什么它在Inite中不起作用?我又该如何使其发挥作用呢?


#property strict

//--- индикаторные буферы
double         UpperBuffer[];
double         LowerBuffer[];
double         MiddleBuffer[];
//--- переменная для хранения хэндла индикатора iBands
int    bb_handle;

int OnInit(){//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////////OnInit()

bb_handle=iBands(NULL, 0, 20, 0, 2.0, PRICE_CLOSE);

Print("bb_handle ", bb_handle);

Print("OnInit()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

return(INIT_SUCCEEDED);
}
void OnTick(){




Print("OnTick()  ", BB_up(0), "  ", BB_mi(0), "  ", BB_lo(0));

}
//-------------------------------------------------------1
double BB_up(int in_shift){
   CopyBuffer(bb_handle, 1, in_shift, 1, UpperBuffer);
   return UpperBuffer[0];
}
double BB_mi(int in_shift){
   CopyBuffer(bb_handle, 0, in_shift, 1, MiddleBuffer);
   return MiddleBuffer[0];
}
double BB_lo(int in_shift){
   CopyBuffer(bb_handle, 2, in_shift, 1, LowerBuffer);
   return LowerBuffer[0];
}
 
Andrey Sokolov:

你能告诉我为什么它在Inite中不起作用吗?我又该如何使其发挥作用呢?


iBands - 技术指标 - MQL5参考 - MetaTrader 5的算法/自动交易语言参考
Документация по MQL5: Технические индикаторы / iBands
Документация по MQL5: Технические индикаторы / iBands
  • www.mql5.com
iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 
Andrey Sokolov:

那么,为什么它不工作呢?

你想谈谈吗?- 还是你想在自己身上下功夫?

 
SanAlex:

你想谈谈吗?- 或者你想在自己身上下功夫?

我明白了,谢谢你。还有谁能提出一些建议吗?

 
Andrey Sokolov:

你能告诉我为什么它在Inite中不起作用吗?我又该如何使其发挥作用呢?


因为该指标还没有计算。

https://www.mql5.com/ru/docs/series/barscalculated


OnInit()部分不是获取终端环境的最佳位置,我认为它在逻辑上是正确的。
 
Igor Makanu:

因为该指标还没有计算

https://www.mql5.com/ru/docs/series/barscalculated

👍

 
Igor Makanu:


OnInit()部分不是获取终端环境的最佳位置,我认为它在逻辑上是正确的。

因为你需要在启动时对历史记录进行计算,所以添加了一个例子中的等待,一切正常,谢谢。

 
Andrey Sokolov:

添加了一个等待,就像例子中那样,一切都很好。

只是当它停止工作或间歇性地 工作时,不要感到惊讶。