Как получить параметры Open,Low,High,Close в МQL5? - страница 3

 

Пример скрипта:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for(int i=0;i<3;i++)
      Print("# ",i,": ",DoubleToString(iOpen(Symbol(),PERIOD_CURRENT,i),Digits()));
//---
  }
//+------------------------------------------------------------------+

и результат:

2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 0: 1.11399
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 1: 1.11425
2019.07.29 20:36:41.215 1 (EURUSD,H1)   # 2: 1.11319


Отредактировал.

Файлы:
1.mq5  2 kb
 

Вот они, родненькие 

Работают и на 4-рке и на 5-рке

В 4-рке применяем Period(), Symbol() и т.д.

В 5-рке применяем _Period, _Symbol и т.д.

iBars

Возвращает количество баров в истории по соответствующему символу и периоду

iBarShift

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

iClose

Возвращает значение цены закрытия бара соответствующего графика

iHigh

Возвращает значение максимальной цены бара соответствующего графика

iHighest

Возвращает индекс наибольшего найденного значения соответствующего графика

iLow

Возвращает значение минимальной цены бара соответствующего графика

iLowest

Возвращает индекс наименьшего найденного значения соответствующего графика

iOpen

Возвращает значение цены открытия бара соответствующего графика

iTime

Возвращает значение времени открытия бара соответствующего графика

iVolume

Возвращает значение тикового объема бара соответствующего графика

iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
iBars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
С СopyRates получилось. Работает.
 

А вот вариант с CopyRates

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(Symbol(),Period(),start_pos,count,rates)!=count)
      return;

   for(int i=0;i<count;i++)
      Print("Open # ",i,": ",DoubleToString(rates[i].open,Digits()));
//---
  }
//+------------------------------------------------------------------+

и результат

2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 0: 1.11399
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 1: 1.11425
2019.07.29 20:44:55.491 1 (EURUSD,H1)   Open # 2: 1.11319
Файлы:
1.mq5  3 kb
 
Alexey Viktorov:

Алексей, это для тех кто в танке. А для нормальных, CopyRates() доступен и в mql4. Так-что забудь все iOpen и прочую чушь. Я вообще не понимаю зачем вставили это в mql5...

О! великовозрастные тинейджеры появились ))

зачем на практике иметь много последовательных значений OHLC - которые Вы предлагаете получать с помощью CopyRates() ? - разве, что помедитировать?  )))

практического применения мало, вот банальная задача, выгрузка (или использование) индикатора Fractals, у меня такой код:

#define Time(n)   iTime(NULL,0,n)
//+------------------------------------------------------------------+
void OnStart()
  {
   int handle=iFractals(NULL,0);
   if(handle==INVALID_HANDLE)
     {
      Print("Error№,",::GetLastError()," create handle indicator");
      return;
     }
   int count=0,i=0;
   double buffup[1],buffdn[1];
   while(i<Bars(_Symbol,_Period) && count<10)
     {
      if(CopyBuffer( handle,0,i,1, buffup)<1) Print("buffup , error № ",::GetLastError());
      if(CopyBuffer( handle,1,i,1, buffdn)<1) Print("buffup , error № ",::GetLastError());
      if(buffup[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Up = ",buffup[0]);
      if(buffdn[0]<EMPTY_VALUE && ++count>0)  Print("Bar № ",i," : ",Time(i)," , Fractals Dn = ",buffdn[0]);
     i++;
     }
  }
//+------------------------------------------------------------------+


свой код покажи с использованием CopyRates()...танкист епт

 
Vladimir Karputov:

А вот вариант с CopyRates

и результат

Но, если нужно постоянно отслеживать данные по новым барам, значит обращаться к CopyRates на каждом тике и составлять таймсерию на каждом тике?

Пытаюсь понять, куда лучше поставить CopyRates.

 
Реter Konow:

Но, если нужно постоянно отслеживать данные по новым барам, значит обращаться к CopyRates на каждом тике и составлять таймсерию на каждом тике?

Пытаюсь понять, куда лучше поставить CopyRates.

Я выше уже спрашивал: ЗАЧЕМ? Нужно ли учитывать значение нулевого бара (самого правого бара на графике)?

 
Vladimir Karputov:

Я выше уже спрашивал: ЗАЧЕМ? Нужно ли учитывать значение нулевого бара (самого правого бара на графике)?

Для таблицы. В таблице значения четырех параметров: Open, Close, High, Low, последних 10 баров, не включая текущий.

Последних, в смысле если сдвигаться назад от текущего (нулевого).

 
Igor Makanu:

О! великовозрастные тинейджеры появились ))

зачем на практике иметь много последовательных значений OHLC - которые Вы предлагаете получать с помощью CopyRates() ? - разве, что помедитировать?  )))

практического применения мало, вот банальная задача, выгрузка (или использование) индикатора Fractals, у меня такой код:


свой код покажи с использованием CopyRates()...танкист епт

Игорь, вам надо в первый класс. Там учат буквы и после изучения вы поймёте разницу CopyRates и CopyBuffer.

Вот лучше предложите решение этой задачи БЕЗ CopyRates

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как получить параметры Open,Low,High,Close в МQL5?

Реter Konow, 2019.07.29 19:58

Для таблицы. В таблице значения четырех параметров: Open, Close, High, Low, последних 10 баров, не включая текущий.

Последних, в смысле если сдвигаться назад от текущего (нулевого).


 
Реter Konow:

Для таблицы. В таблице значения четырех параметров: Open, Close, High, Low, последних 10 баров, не включая текущий.

Последних, в смысле если сдвигаться назад от текущего (нулевого).

В таком случае однозначно CopyRates с первого бара 10 штук. И вызывать не каждый тик, а достаточно при появлении нового бара.