Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 399

 

Добрый день! Я переделываю эксперт из статьи https://www.mql5.com/ru/articles/648, пробую вставить свою функцию. Проблема в том что не как не получается заменить индикатор на фрактал. Если signal_indicator_handles[s]=iMA(Symbols[s],_Period,IndicatorPeriod[s],0,MODE_SMA,PRICE_CLOSE) я заменяю на iFractals(Symbols[s], PERIOD_M15); то выдаётся не правильная цена. Можете помочь и подкорректировать код?

//+------------------------------------------------------------------+
//| Получает хэндлы индикаторов                                      |
//+------------------------------------------------------------------+
void GetIndicatorHandles()
  {
//--- Пройдемся по всем символам
   for(int s=0; s<NUMBER_OF_SYMBOLS; s++)
     {
      //--- Если торговля по этому символу разрешена
      if(Symbols[s]!="")
        {
         //--- Если хэндл еще не получен
         if(signal_indicator_handles[s]==INVALID_HANDLE)
           {
            //--- Получим хэндл индикатора
            signal_indicator_handles[s]=iMA(Symbols[s],_Period,IndicatorPeriod[s],0,MODE_SMA,PRICE_CLOSE);
            //--- Если не удалось получить хендл индикатора
            if(signal_indicator_handles[s]==INVALID_HANDLE)
               Print("Не удалось получить хэндл индикатора для символа "+Symbols[s]+"!");
           }
        }
     }
  }

//+------------------------------------------------------------------+
//| Получает значения индикаторов                                    |
//+------------------------------------------------------------------+
bool GetIndicatorsData(int symbol_number)
  {
//--- Количество значений индикаторного буфера для определения торгового сигнала   
   int NumberOfValues=3;
//--- Если хэндл индикатора был получен
   if(signal_indicator_handles[symbol_number]!=INVALID_HANDLE)
     {
      //--- Установим обратный порядок индексации (... 3 2 1 0)
      ArraySetAsSeries(indicator[symbol_number].value,true);
      //--- Получим значения индикатора
      if(CopyBuffer(signal_indicator_handles[symbol_number],0,0,NumberOfValues,indicator[symbol_number].value)<NumberOfValues)
        {
         Print("Не удалось скопировать значения ("+
               Symbols[symbol_number]+"; "+TimeframeToString(_Period)+") в массив indicator! Ошибка ("+
               IntegerToString(GetLastError())+"): "+ErrorDescription(GetLastError())+"");
         return(false);
        }
      return(true);
     }
//--- Если хэндл индикатора не получен, то...
   else
     {
      // ...попробуем получить его еще раз
      GetIndicatorHandles();
     }
   return(false);
  }
  

Проверка
Print("++++++++indicator[symbol_number][0]",Symbols[symbol_number],"= ",indicator[symbol_number].value[0]);
Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы
Рецепты MQL5 - Мультивалютный эксперт: пример простой, точной и быстрой схемы
  • 2013.06.11
  • Anatoli Kazharski
  • www.mql5.com
В этой статье мы рассмотрим реализацию простой схемы для мультивалютного эксперта. В данном случае имеется в виду, что эксперт можно будет настроить на тестирование/торговлю по одинаковым условиям, но с разными параметрами для каждого символа. В качестве примера создадим схему для двух символов, но сделаем это так, чтобы при необходимости можно было добавлять дополнительные символы, внося небольшие изменения в код.
 
Всем привет! Скажите, пожалуйста, можно ли отключить новости той категории, которая мне не интересна и попросту заспамливает новостное окно в МТ5? И как это сделать? 
 
Подскажите, пожалуйста, как узнать chart_id вновь созданного чарта? 
 
Создаёте руками?
 
Karputov Vladimir:
Создаёте руками?

Нет.

void OnStart() { ChartOpen("GBPUSD", PERIOD_H1); }
 

Всем привет!

Помогите с таким вопросом.

Как сделать так чтобы по окончании тестирования эксперта, в окне графика МТ4, не отображался используемый стандартный индикатор?

 
Sergei Konoplev:

Всем привет!

Помогите с таким вопросом.

Как сделать так чтобы по окончании тестирования эксперта, в окне графика МТ4, не отображался используемый стандартный индикатор?

Смотрите справку по функции HideTestIndicators()
 
-Aleks-:

Нет.

void OnStart() { ChartOpen("GBPUSD", PERIOD_H1); }

Получить идентификатор созданного графика можно так:

void OnStart()
  {
   ResetLastError();
   long Chart_ID=ChartOpen("GBPUSD",PERIOD_H1);
   if(Chart_ID!=0)
      Print("Идентификатор созданного графика: ",Chart_ID);
   else
      Print("Ошибка открытия нового графика: ",GetLastError());
  }
 
Vitalii Ananev:
Смотрите справку по функции HideTestIndicators()
Все гениальное просто! Спс, совет помог)
 
Karputov Vladimir:

Получить идентификатор созданного графика можно так:

Спасибо. А можно получить идентификатор последнего созданного графика пользователем или другим скриптом, который прекратил свою работу?
Причина обращения: