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

 
Expertos, por favor díganme: ¿cómo configurar la plataforma para reflejar la historia de las operaciones no en todos los plazos, pero sólo en algunos de ellos?
Y lo que tenemos ahora: haga clic en la casilla de verificación "mostrar el historial de operaciones" y toda la historia (flechas arriba y abajo) en el gráfico semanal ya son una valla sólida.
Y me gustaría un ajuste como otras herramientas (líneas de tendencia, flechas, etc), la visualización de los cuales se puede establecer no en todos los plazos.
 

Buenas tardes. Me puedes decir donde ver el ejemplo más sencillo de un Asesor Experto basado en la intersección de dos MAs (puedes dar una lección).
Sé como añadir uno. No quiero hacer un simple copia-pega y alargar el código, sé que hay otros métodos.
Si en MQL4 no tenía ninguna duda, en MQL5 no acabo de entender cómo hacerlo.

 
makssub ejemplo más sencillo de un Asesor Experto basado en la intersección de dos MAs (puedes dar una lección).
Sé como añadir uno. No quiero hacer un simple copia-pega y alargar el código, sé que hay otros métodos.
Si en MQL4 no tenía ninguna duda, en MQL5 no acabo de entender cómo hacerlo.

Hola. Abra MetaEDitor 5. Tiene incorporado un Asesor Experto (estándar) basado en la intersección de dos MAs. Abre el código y estúdialo. O búscalo en CodeBase. Aquí, por ejemplo, es el primer EA construido en la intersección de dos MAs.

Saludos, Vladimir.


 
MrBrooklin #:

Hola. Abrir MetaEDitor 5. Tiene un Asesor Experto incorporado (estándar) basado en la intersección de dos MAs. Abra el código y estudiarlo. O buscar en CodeBase. Aquí, por ejemplo, es la primera EA construido sobre la intersección de dos MAs.

Saludos, Vladimir.


Gracias, he echado un vistazo.

Entiendo lo que pasa en OnInit.

¿Cómo atornillarlo todo correctamente a OnTick?

 
makssub #:

Gracias, lo he buscado.

En OnInit, entiendo más o menos lo que está pasando.

¿Cómo lo meto todo en OnTick?

Estoy mostrando sólo una variante de la escritura de un Asesor Experto, pero puede haber un gran número de tales variantes. Todo depende de la cualificación del programador. La estructura de un Asesor Experto puede tener este aspecto:

//+------------------------------------------------------------------+
//|                                                            1.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Input variables                                                  |
//+------------------------------------------------------------------+

// здесь размещаем входные параметры советника

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   // здесь деинициализируем то, что считаем нужным   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- абстрактный пример советника

   Check_Trading();           // проверим условия разрешающие торговлю
   Signal_Up();               // ищем сигнал для открытия длинной позиции
   Open_Buy_Position();       // открываем длинную позицию
   Close_Buy_Positions();     // закрываем длинную позицию
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Check_Trading()
  {

   // здесь вставляем условия разрешающие торговлю

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void  Signal_Up(); 
  {

   // здесь вставляем условия, при которых появляется сигнал на покупку

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Open_Buy_Position(); 
  {

   // здесь вставляем функцию открытия длинной позиции

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Close_Buy_Positions();
  {

   // здесь вставляем функцию закрытия длинной позиции

  }
//+------------------------------------------------------------------+

Algo como esto. Una vez más hago hincapié - esto no es una guía para escribir Asesores Expertos, sino una estructura aproximada a la que me adhiero cuando escribo mis Asesores Expertos.

Saludos, Vladimir.

 
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   // здесь инициализируем то, что считаем нужным
   return(INIT_SUCCEEDED);

No sé cómo escribirlo

 
Лауреат #:

No sé cómo escribirlo

¿Qué es exactamente lo que no te queda claro? ¿Cómo crear una función de inicialización de EA? Entonces trata de estudiar este artículo para principiantes.

Saludos, Vladimir.

 
MrBrooklin #:

¿Qué es exactamente lo que no entiende? ¿Cómo crear una función de inicialización de EA? A continuación, tratar de estudiar este artículo para principiantes.

Saludos, Vladimir.

y lo que significa inicializar))))) no está claro para una persona)))))

 
Valeriy Yastremskiy #:

y que quieres decir con inicializar))))) es un poco confuso para la persona)))))

¡Buenas tardes, Valery! Abrimos el artículo propuesto a la persona y encontramos allí primero una breve descripción

Далее идет функция инициализации советника. Это функция вызывается первой после запуска советника или смены графика и вызывается только один раз.

Этот раздел - лучшее место для проведения проверок, чтобы убедиться в правильности работы нашего советника.

Например, можно проверить, достаточно ли баров на графике для работы нашего советника и т.п.

Также это лучшее место для получения хэндлов технических индикаторов, которые будут использоваться (в нашем случае это индикаторы ADX и Moving Average).

y luego una más detallada:

int OnInit()
  {
//--- Получить хэндл индикатора ADX
   adxHandle=iADX(NULL,0,ADX_Period);
//--- Получить хэндл индикатора Moving Average
   maHandle=iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if(adxHandle<0 || maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
     }

En general, debería al menos leer este artículo primero. ))

Saludos, Vladimir.

 

¡Buenos días a todos!

Estoy continuando mi auto-estudio y de nuevo me encontré con una confusión. Aquí está el código del script:

//+------------------------------------------------------------------+
//| Input variables                                                  |
//+------------------------------------------------------------------+
input uchar candles = 60;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   MqlRates price_array[];
   double price_low[];
   ArraySetAsSeries(price_low, true);
   ArraySetAsSeries(price_array, true);
   int copy_low = CopyLow(_Symbol, _Period, 0, candles, price_low);
   if(copy_low > 0)
     {
      int candle_low = ArrayMinimum(price_low, 0, candles);
      int Data = CopyRates(_Symbol, _Period, 0, candles, price_array);
      ObjectCreate(0, "UpwardTrendline", OBJ_TREND, 0, price_array[candle_low].time, price_array[candle_low].low,
                   price_array[0].time, price_array[0].low,0);
      ObjectSetInteger(0, "UpwardTrendline", OBJPROP_COLOR, Blue);
      ObjectSetInteger(0, "UpwardTrendline", OBJPROP_STYLE, STYLE_SOLID);
      ObjectSetInteger(0, "UpwardTrendline", OBJPROP_WIDTH, 3);
      ObjectSetInteger(0, "UpwardTrendline", OBJPROP_RAY_RIGHT, true);
     }
  }
//+------------------------------------------------------------------+

El script debía dibujar una línea de tendencia como un segmento. Para ello, establecí el punto inicial y el segundo punto para dibujar este segmento. La documentación también dice que se necesitan dos puntos de anclaje para crear una línea de tendencia. Creo que lo he hecho todo como debe hacerse. A mi entender, el segundo punto también es un punto extremo, pero por alguna razón no se dibuja un segmento, sino una semirrecta.


¿Podría decirme dónde me equivoco?

Saludos, Vladimir.

Razón de la queja: