Как реализовать массив ТАЙМФРЕЙМА в советнике MQL5 - страница 4

 

Поймите меня правильно сэт должен быть идентичным под четверку, я же не буду вносить все данные на дватцать пар в ручную, сэт я буду конвертировать с 5 на 4, вы не представляете сколько времени уйдет раз в две недели происходит оптимизация советника по двадцати парам..

 
Pul-Adgi Mo-UlStan:

Вы издеваетесь?

в четверке я с 2009 года использую вот это за четверку не говорите, там все ясно как белый день

Вы просто нервничаете от непонимания? У меня даже и в мыслях не было издеваться.

Как на mql4 получить значения индикатора на десяти барах?

Можете не отвечать.

Я тоже писал на mql4 и сейчас с успехом пишу на mql5, представьте уже не хочется возвращаться взад.

Ну если хотите массив, пусть будет массив.

ENUM_TIMEFRAMES mper[6]={PERIOD_CURRENT,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4};//массив таймфрейма
Но если вы не перебираете периоды из массива автоматом, то вам совсем не надо иметь 6 хендлов на 6 периодов.
 
Евра
Alexey Viktorov:

Вы просто нервничаете от непонимания? У меня даже и в мыслях не было издеваться.

Как на mql4 получить значения индикатора на десяти барах?

Можете не отвечать.

Я тоже писал на mql4 и сейчас с успехом пишу на mql5, представьте уже не хочется возвращаться взад.

Ну если хотите массив, пусть будет массив.

Но если вы не перебираете периоды из массива автоматом, то вам совсем не надо иметь 6 хендлов на 6 периодов.
Файлы:
Screenshot_1.jpg  101 kb
 
Alexey Viktorov:


Как на mql4 получить значения индикатора на десяти барах?

Можете не отвечать.

Через цикл вы проводите аналогию, я понимаю ваш сарказм, но я не получил ответа от модератора.

Будет ли работать вот так?  Спрошу теперь у вас.

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- input parameters

input int    Tfad1         = 2;        // TF ADX
input int    PerAdx1       = 14;       // ADX period   
//---
int Adx1=0;
ENUM_TIMEFRAMES   arr_tf[6]={PERIOD_CURRENT,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4};
int tf_ad1=0;      // variable for storing the handle's of the iADX indicator
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   tf_ad1=Tfad1;

   Adx1=iADX(_Symbol,arr_tf[tf_ad1],PerAdx1); if(Adx1==INVALID_HANDLE){printf("Error Adx indicator");return(INIT_FAILED);}  
   


return(INIT_SUCCEEDED);
  }
 
Yevhenii Levchenko:

А что значит "хэндл" в примере Владимира Карпутова? Вот эта строчка , например:

Зачем этот "хэндл"? Это только в мql5 ?

В MQL5 индикатор создаётся ОДИН раз. Результат создания индикатора - есть хэндл индикатора.

Хэндл индикатора: представьте, что внутри ядра терминала MetaTrader 5 есть база данных всех созданных индикаторов. Так вот хэндл - это как в базе данных ключ доступа к индикатору.


Хэндл создаём один раз в OnInit - если не удалось создать, то и советник не запустить, так как без индикатора нельзя будет работать - негде будет брать данные.

 
Vladimir Karputov:

В MQL5 индикатор создаётся ОДИН раз. Результат создания индикатора - есть хэндл индикатора.

Хэндл индикатора: представьте, что внутри ядра терминала MetaTrader 5 есть база данных всех созданных индикаторов. Так вот хэндл - это как в базе данных ключ доступа к индикатору.


Хэндл создаём один раз в OnInit - если не удалось создать, то и советник не запустить, так как без индикатора нельзя будет работать - негде будет брать данные.

Владимир, внешние перменные не изменные их менять нельзя я прочитал гдето не помню уже в документации соответственно нужно делать зеркало в int OnInit(void), но зачем вгонять в цикл можете мне объяснить вы давно на МКЛ5, помогите разъяснением программистам с четверки где я не прав?

 
Pul-Adgi Mo-UlStan:

Владимир, внешние перменные не изменные их менять нельзя я прочитал гдето не помню уже в документации соответственно нужно делать зеркало в int OnInit(void), но зачем вгонять в цикл можете мне объяснить вы давно на МКЛ5, помогите разъяснением программистам с четверки где я не прав?

Какой цикл?

 
Vladimir Karputov:

Какой цикл?

  for(int i=0;i<3;i++)
     {
      //--- create handle of the indicator iADX
      int handle_iADX=iADX(Symbol(),arr_timeframes[i],14);
      //--- if the handle is not created 
      if(handle_iADX==INVALID_HANDLE)
        {
         //--- tell about the failure and output the error code 
         PrintFormat("Failed to create handle of the iADX indicator for the symbol %s/%s, error code %d",
                     Symbol(),
                     EnumToString(Period()),
                     GetLastError());
         //--- the indicator is stopped early 
         return(INIT_FAILED);
        }
        arr_handle_iADX[i]=handle_iADX;
     }
 
Vladimir Karputov:

В MQL5 индикатор создаётся ОДИН раз. Результат создания индикатора - есть хэндл индикатора.

Хэндл индикатора: представьте, что внутри ядра терминала MetaTrader 5 есть база данных всех созданных индикаторов. Так вот хэндл - это как в базе данных ключ доступа к индикатору.


Хэндл создаём один раз в OnInit - если не удалось создать, то и советник не запустить, так как без индикатора нельзя будет работать - негде будет брать данные.

Не правда, вы в этом уверены?

 
Pul-Adgi Mo-UlStan:

Тю, так это же для Вас: я видел, что Вы пытаетесь работать с массивом таймфреймов и по нему пытались создать индикаторЫ. Если есть массив - значит по нему нужно пройтись.