Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 399

 

Hola! Estoy rediseñando mi Asesor Experto a partir del artículo https://www.mql5.com/ru/articles/648 y tratando de insertar mi propia función. El problema es que no puedo cambiar el indicador a fractal. Si signal_indicator_handles[s]=iMA(Symbols[s],_Period,IndicatorPeriod[s],0,MODE_SMA,PRICE_CLOSE) lo sustituyo por iFractals(Symbols[s], PERIOD_M15); obtengo un precio erróneo. ¿Puedes ayudar y ajustar el código?

//+------------------------------------------------------------------+
//| Получает хэндлы индикаторов                                      |
//+------------------------------------------------------------------+
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
В этой статье мы рассмотрим реализацию простой схемы для мультивалютного эксперта. В данном случае имеется в виду, что эксперт можно будет настроить на тестирование/торговлю по одинаковым условиям, но с разными параметрами для каждого символа. В качестве примера создадим схему для двух символов, но сделаем это так, чтобы при необходимости можно было добавлять дополнительные символы, внося небольшие изменения в код.
 
Hola a todos, ¿podéis decirme si es posible desactivar las noticias de la categoría que no me interesan y que simplemente abarrotan la ventana de noticias en MT5? ¿Cómo puedo hacerlo?
 
¿Puede decirme cómo averiguar el chart_id de un gráfico recién creado?
 
¿Crea usted a mano?
 
Karputov Vladimir:
¿Crea usted a mano?

No.

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

Hola a todos.

Ayuda con esta pregunta.

¿Cómo puedo hacer que el indicador estándar utilizado no se muestre en la ventana del gráfico de MT4 cuando se completa la prueba del Asesor Experto?

 
Sergei Konoplev:

Hola a todos.

Ayuda con esta pregunta.

¿Cómo puedo hacer que el indicador estándar utilizado no se muestre en la ventana del gráfico de MT4 cuando se completa la prueba del Asesor Experto?

Ver la ayuda de la función HideTestIndicators()
 
-Aleks-:

No.

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

Puedes obtener el identificador del gráfico creado de la siguiente manera:

void OnStart()
  {
   ResetLastError();
   long Chart_ID=ChartOpen("GBPUSD",PERIOD_H1);
   if(Chart_ID!=0)
      Print("Идентификатор созданного графика: ",Chart_ID);
   else
      Print("Ошибка открытия нового графика: ",GetLastError());
  }
 
Vitalii Ananev:
Ver la ayuda de HideTestIndicators()
¡Todo es brillantemente simple! Gracias, el consejo me ha ayudado).
 
Karputov Vladimir:

Obtenga el identificador del gráfico creado de la siguiente manera:

Gracias. ¿Es posible obtener el ID del último gráfico creado por un usuario u otro script que haya dejado de funcionar?