Интересный факт о RSI

 

Собираюсь использовать этот индикатор в советнике, но столкнулся с проблемой: на истории,  точки которым соответствует условие есть, а вот советник говорит что их нет. Вот код советника (ТФ Н1):

//+------------------------------------------------------------------+
//|      hdafhasdjhfkjashdfkahskdfhaksdhfhasdkjhfkashdfkhaslkdhf.mq4 |
//|                                                    Журба Алексей |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Журба Алексей"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
double rsi = iRSI (Symbol (), 0, 20,PRICE_CLOSE, 0 ); 
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
if( rsi > 60.0 ) 
    Print ("OK");
  }
//+------------------------------------------------------------------+

хотя на графике вот четко видно что

rsi > 60.0


Подскажите пожалуйста в чем проблема.

 
Значение индикатора нужно получать на каждом тике, а не только при запуске советника.
 
mql5:
Значение индикатора нужно получать на каждом тике, а не только при запуске советника.

Так оно и так проверяет на каждом тике, только почему то если на момент запуска советника это условие не подтверждалось, то дальше оно его и не ищет, а вот если я меняю условие на

rsi > 10.0

или

rsi < 60.0

все работает как нужно

 
inuboh:

Так оно и так проверяет на каждом тике, только почему то если на момент запуска советника это условие не подтверждалось, то дальше оно его и не ищет, а вот если я меняю условие на

или

все работает как нужно 

Оно НЕ вызывает индикатор на каждом тике в коде выше. Вызов индикатора там  происходит всего один раз, при запуске советника.
 
inuboh:

Так оно и так проверяет на каждом тике, только почему то если на момент запуска советника это условие не подтверждалось, то дальше оно его и не ищет, а вот если я меняю условие на

или

все работает как нужно



Я повторю что было уже сказано. 

В  OnTick() должен быть вызов индикатора RSI. В смысле присвоить какой-то переменной текущее значение индикатора что бы с этой переменной работать. Пока Вы только неизвестно какое значение сравниваете. Вы не знаете когда произошло это событие и им оперируете, думая что оно уже самое последнее. Но это не так.

 
Vinin:

Я повторю что было уже сказано. 

В  OnTick() должен быть вызов индикатора RSI. В смысле присвоить какой-то переменной текущее значение индикатора что бы с этой переменной работать. Пока Вы только неизвестно какое значение сравниваете. Вы не знаете когда произошло это событие и им оперируете, думая что оно уже самое последнее. Но это не так.

Вот теперь понял, спасибо!
Причина обращения: