MQL5

 
Добрый день, пишу индикатор на mql5. Зашел в тупик, нужно найти максимальную и минимальную цену бара. Не цену их закрытия. В инете не нашел. В справке нашел PRICE_HIGH и PRICE_LOW . Но не пойму как это принят. Как правильно сделать?
 
Roman Usenkov:
Добрый день, пишу индикатор на mql5. Зашел в тупик, нужно найти максимальную и минимальную цену бара. Не цену их закрытия. В инете не нашел. В справке нашел PRICE_HIGH и PRICE_LOW . Но не пойму как это принят. Как правильно сделать?
Это сюда смотреть https://www.mql5.com/ru/docs/series/copyhigh
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyHigh
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyHigh
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyHigh - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman Usenkov:
Добрый день, пишу индикатор на mql5. Зашел в тупик, нужно найти максимальную и минимальную цену бара. Не закрытие, а именно макс и мин цену бара. В инете не нашел. В справке нашел PRICE_HIGH и PRICE_LOW . Но не пойму как это принят. Как правильно сделать?

У бара есть четыре цены: OHLC - Open, High, Low, Close. Соответственно Вам нужны High и Low. В индикаторе в OnCalculate Вам доступны такие массивы:

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- checking for bars count

Остаётся определится с номером бара и потом получить для него значения. Примерно так:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- checking for bars count
   double low_bar=low[i];
   double high_bar=high[i];
...
 

Вот очень лёгкий способ понять, какой индекс имеет бар в индикаторе.

Берём любой стандартный MQL5 индикатор и запускаем (из редактора MetaEditor) отладку (1), затем возвращаемся в редактор и ставим точку останова (2). После этого нужно добавить наблюдение для массива time с индексом "0" (3) и для массива time с индексом rates_total-1 (4). 

Какой индекс самого правого бара в индикаторе MQL5? 

Сразу видно, что бар с индексом [rates_total-1] содержит самое последнее время. Другими словами самый правый бар имеет индекс [rates_total-1]. Зная индекс самого правого бара, можно высчитать индекс любого интересуемого бара.

 
Спасибо за помощь)
 
Roman Usenkov:
Спасибо за помощь)

Пожалуйста :)

Спрашивайте, не стесняйтесь, для этого форум и нужен. 

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