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

 

В MQL4 можно было тестировать советник по периодам таймфремов через массив, как реализовать это в MQL5?

input int tf_1   = 3; 


int mper[6]={0,5,15,30,60,240};//массив таймфрейма

int OnInit(void)
  {
    Hand_atr=iATR(_Symbol,mper[tf_1],PerAtr1);
  }

Я переношу код своей совы на МТ5, пока только разбираюсь.. Если можно, пример показать кода, может кто на пятерке делал такое..

 

Необходимо обьявить два массива: один массив с таймфреймами, а второй для хендлов индикаторов.

Пример: 

//+------------------------------------------------------------------+
//|                                                         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      Input1;
//---
ENUM_TIMEFRAMES   arr_timeframes[3]={PERIOD_CURRENT,PERIOD_H1,PERIOD_H4};
int               arr_handle_iADX[3]; // variable for storing the handle's of the iADX indicator
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   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;
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

  }
//+------------------------------------------------------------------+
Файлы:
Test.mq5  3 kb
 
Vladimir Karputov:

Необходимо обьявить два массива: один массив с таймфреймами, а второй для хендлов индикаторов.

Пример: 

Спасибо!!! Оперативно, а я то... вот как надо было... 

Благодарю за пример с кодом, в МКЛ5 что бы прописать одну строчку  МКЛ4, нужно в два раза больше написать кода...

 
Lehfr:

Спасибо!!! Оперативно, а я то... вот как надо было... 

Благодарю за пример с кодом, в МКЛ5 что бы прописать одну строчку  МКЛ4, нужно в два раза больше написать кода...

Вообще это не так. Просто ВЫ привыкли писать код абы как - без проверок, без инициализаций ...

Но ни когда не поздно совершенствоваться.

 
Vladimir Karputov:

Вообще это не так. Просто ВЫ привыкли писать код абы как - без проверок, без инициализаций ...

Но ни когда не поздно совершенствоваться.

Да вы правы, я плохой программист, я больше разработчик стратегий, мкл4 мне помогает реализовывать идеи, но терминал очень долго тестирует то что я делаю. Я могу разработать но правильно реализовать в коде не всегда удается. Если бы было бы проще написал алгоритм действий и все, так надо что бы он отражался и что то показывал на это уходит много времени.

Спасибо, за критику. Право в моем возрасте уже не все так просто дается...

 
Lehfr:

Да вы правы, я плохой программист, я больше разработчик стратегий, мкл4 мне помогает реализовывать идеи, но терминал очень долго тестирует то что я делаю. Я могу разработать но правильно реализовать в коде не всегда удается. Если бы было бы проще написал алгоритм действий и все, так надо что бы он отражался и что то показывал на это уходит много времени.

Спасибо, за критику. Право в моем возрасте уже не все так просто дается...

Если есть идею - я могу на выходных рассмотреть их в ветке "Вечер выходного дня".

 
Vladimir Karputov:

Если есть идею - я могу на выходных рассмотреть их в ветке "Вечер выходного дня".

Я показал картинку в личке, что скажете? Это моя одна из разработок не перерисовывается, реализовал на 4-ке.

 
Vladimir Karputov:

Если есть идею - я могу на выходных рассмотреть их в ветке "Вечер выходного дня".

Оптимизируется долго на МТ4, хочу перекинуть на пятерку по всем парам такой результат. 

Файлы:
Screenshot_3.jpg  139 kb
 
Lehfr:

Тестируется долго на МТ4, хочу перекинуть на пятерку по всем парам такой результат. 

Тест по ценам открытия - это даже не смешно. Такой тест - это самообман чистейшей воды. Сколько граалей по ценам открытия было сотворено - не пересчитать все :), а всё от жадности и не понимания о режимах генерации тиков.

 
Vladimir Karputov:

Тест по ценам открытия - это даже не смешно. Такой тест - это самообман чистейшей воды. Сколько граалей по ценам открытия было сотворено - не пересчитать все :), а всё от жадности и не понимания о режимах генерации тиков.

Он работает по ценам открытия, а что в этом плохого?

int start()
 {
   //посчитаем ордера
   total = CountTrades(); 
   //если появился новый бар, включаемся
   if (timeprev == iTime(_Symbol,PERIOD_M1,0)) return(0); timeprev = iTime(_Symbol,PERIOD_M1,0);
 
Vladimir Karputov:

Тест по ценам открытия - это даже не смешно. Такой тест - это самообман чистейшей воды. Сколько граалей по ценам открытия было сотворено - не пересчитать все :), а всё от жадности и не понимания о режимах генерации тиков.

В МТ4 согласен они эмулируются, но по факту они не нужны, для меня это шум.