Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1529

 
Alexey Viktorov:

Да и я тоже посмотрел чтобы тебе ответить.

Я не мог - с телефона писал, а там искать справку по четвёрке - быстрее просто написать вопрос :)

 
Alexey Viktorov:

Навязывается не разработчиками, а одним модератором. Что касается значений ВВ так вам Артём сказал, что проще напрямую всё получить… последовательность такая…

  1. Объявили переменные хандла и массивов для получения значений индикатора. По необходимости, 3 как максимум. А если средняя не нужна, то и двух массивов достаточно.
  2. Получили в OnInit() хендл индикатора…
  3. В OnTick() или в какой-то другой функции CopyBuffer() на каждую линию отдельно, такое количество сколько надо.
  4. Из массивов получаете значения линий индикатора на тех барах которые интересны…

ВСЁ. Ради чего городить огород с ООП¿¿¿¿¿ И к сожалению прямо ответить на ваш вопрос не могу по причине того, что я этим не пользуюсь. Мне проще так как я описал. Всего 4 действия.

Подскажите, пожалста, почему в ините не работает? И как сделать чтоб работало?


#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:

Подскажите, пожалста, почему в ините не работает? И как сделать чтоб работало?


iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5: Технические индикаторы / iBands
Документация по MQL5: Технические индикаторы / iBands
  • www.mql5.com
iBands - Технические индикаторы - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Andrey Sokolov:

так почему не работает то?

Вы желаете поговорить? - или желаете по работать над собой 

 
SanAlex:

Вы желаете поговорить? - или желаете по работать над собой 

Ясно. Спасибо. Может еще кто-нибудь подскажет?

 
Andrey Sokolov:

Подскажите, пожалста, почему в ините не работает? И как сделать чтоб работало?


потому что индикатор еще не рассчитан

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


секция OnInit() не самое лучшее место, чтобы получать окружение терминала, думаю, что все логично и правильно работает 
 
Igor Makanu:

потому что индикатор еще не рассчитан

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

👍

 
Igor Makanu:


секция OnInit() не самое лучшее место, чтобы получать окружение терминала, думаю, что все логично и правильно работает 

В ините потому что нужно сделать расчеты на истории при запуске, добавил ожидание, как в примере, все норм, спасиб

 
Andrey Sokolov:

добавил ожидание, как в примере, все норм

Только не удивляйтесь, когда перестанет или будет через раз работать.

Причина обращения: