как программно найти на истории сигнал индикатора

 

 Я понимаю, как найти сигнал индикатора (например macd) на текущем баре в mql5.

Но вот, как найти сигнал на истории, за N-ное количество баров? Ничего не могу придумать.

Может, кто поделится?

 
Vitaly Stepanov:

 Я понимаю, как найти сигнал индикатора (например macd) на текущем баре в mql5.

Но вот, как найти сигнал на истории, за N-ное количество баров? Ничего не могу придумать.

Может, кто поделится?

А как находите на текущем баре в mql5 ?
 
Vitaly Stepanov:

 Я понимаю, как найти сигнал индикатора (например macd) на текущем баре в mql5.

Но вот, как найти сигнал на истории, за N-ное количество баров? Ничего не могу придумать.

Может, кто поделится?

 for(i=0;i<Bars(Symbol(),0);i--)
     {
      MAIN_CURENT=iMACD(NULL,0,12,26,9,0,MODE_MAIN,i);
      MAIN_PREVIOS=iMACD(NULL,0,12,26,9,0,MODE_MAIN,i+1);
      SIGNAL_CURENT=iMACD(NULL,0,12,26,9,0,MODE_SIGNAL,i);
      SIGNAL_PREVIOS=iMACD(NULL,0,12,26,9,0,MODE_SIGNAL,i+1);
      // Здесь проверка условий 
      break; // не забудь поставить, чтобы выйти из цикла раньше, либо он сам выйдет если не найдет по окончанию цикла
     }

https://www.mql5.com/ru/docs/series/bars почитай по количеству баров

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Если указаны параметры start_time и stop_time, то функция возвращает количество баров в диапазоне дат. Если эти параметры не указаны, то функция возвращает общее количество баров. Если данные для таймсерии с указанными параметрами при вызове функции Bars() еще не сформированы в терминале, или данные таймсерии в момент вызова функции не...
 
Sergey Nikolenko:

https://www.mql5.com/ru/docs/series/bars почитай по количеству баров

Это старый код, а топикстартер просил MQL5 код.

 
Vitaly Stepanov:

 Я понимаю, как найти сигнал индикатора (например macd) на текущем баре в mql5.

Но вот, как найти сигнал на истории, за N-ное количество баров? Ничего не могу придумать.

Может, кто поделится?

Функция получения данных с индикатора работает одинаково для любого номера бара (Хоть #0, #1 или #2). Подробнее на примере iADX: 

Проверка работы обоих методов получения данных с индикатора - мышка установлена на баре #0 и можно сравнить "Окно данных" и распечатанные на экране значения с бара #0, #1 и #2:

 
Vitaly Stepanov:

 Я понимаю, как найти сигнал индикатора (например macd) на текущем баре в mql5.

Но вот, как найти сигнал на истории, за N-ное количество баров? Ничего не могу придумать.

Может, кто поделится?

int handle;
double main[], signal[];

void OnInit()
{
     handle = iMACD(_Symbol, 0, 12, 26, 9, PRICE_CLOSE);
     if(handle==INVALID_HANDLE) ExpertRemove();
     
     ArraySetAsSeries(main, true);
     ArraySetAsSeries(signal, true);
}
void OnTick()
{
     ArrayFree(main);
     ArrayFree(signal);
     if( CopyBuffer(handle, 0, 0, 5, main) != 5 ) return;
     if( CopyBuffer(handle, 1, 0, 5, signal) != 5 ) return;
     
     string str = "Info MACD";
     for(int i=0; i<5; i++)
          str += "\nMain " + IntegerToString(i) + ": " + DoubleToString(main[i], _Digits) +
                 "\nSignal " + IntegerToString(i) + ": " + DoubleToString(signal[i], _Digits) + "\n";
     Comment(str);
}

iMACD
CopyBuffer