Autoaprendizaje del lenguaje MQL5 desde cero - página 79

 
Valeriy Yastremskiy:

Artem Trishkin me respondió la misma pregunta, porque es un enlace (uppersand), por lo que puede estar en cualquier lugar. debe tratar sin espacios para la pureza del experimento.

¡Gracias, Valery! Tendré en cuenta este punto si alguna vez me encuentro con un problema similar.

¡Feliz Navidad!

Sinceramente, Vladimir.

 

¡Feliz comercio y buen humor para todos!

Sigo estudiando el lenguaje de programación MQL5. He modificado un poco el código publicado anteriormente y esto es lo que he conseguido:

input string Symbol_Main="EURUSD";          //Валютная пара, на которую ставим советник
input ENUM_TIMEFRAMES Time_Frame=PERIOD_H1; //Таймфрейм, на который ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары и таймфрейм, на который будем устанавливать советник. */
   /* Если текущий график валютной пары и текущий таймфрейм совпадают со входными параметрами */
   if(_Symbol==Symbol_Main && _Period==Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника разрешена! Продолжим!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   /* Если текущий график валютной пары и текущий таймфрейм не совпадают со входными параметрами */
   if(_Symbol!=Symbol_Main && _Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадают валютная пара и таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий график валютной пары не совпадает со входным параметром */
   if(_Symbol!=Symbol_Main)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадает валютная пара! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий таймфрейм не совпадает со входным параметром */
   if(_Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадет таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Quizás alguien lo necesite.

Saludos, Vladimir.

 

¡Buen día y buen humor a todos!

Tengo algo de tiempo libre y he decidido continuar con mi autoestudio. Pero de repente me encontré con un problema. Anteriormente, cuando hice una solicitud como esta al servidor de comercio en mi Expert Advisor Trailing_Stop_(v.2).mq5:

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {0};
   MqlTradeResult result= {0};

no hubo problemas durante la compilación del código. Ahora el compilador genera el siguiente error:

no se puede convertir 0 en el enum'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Si quito un cero después de la solicitud entre corchetes,

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {};
   MqlTradeResult result= {0};

El compilador no mostrará el error. Por favor, ayúdenme, ¿cuál es la razón de esto?

Saludos, Vladimir.

 
MrBrooklin:

¡Buen día y buen humor a todos!

Tengo algo de tiempo libre y he decidido continuar con mi autoestudio. Pero de repente me encontré con un problema. Anteriormente, cuando hice una solicitud como esta al servidor de comercio en mi Expert Advisor Trailing_Stop_(v.2).mq5:

no hubo problemas durante la compilación del código. Ahora el compilador genera el siguiente error:

no se puede convertir 0 en el enum'ENUM_TRADE_REQUEST_ACTIONS' Trailing_Stop_(v.2).mq5 411 30

Si quito un cero después de la solicitud entre corchetes,

Entonces no me da error. Por favor, ayúdenme, ¿cuál es la razón de esto?

Saludos, Vladimir.

Sí, ahora no escriba cero para la puesta a cero.

ENUM_TRADE_REQUEST_ACTIONS , una enumeración que carece del valor "0".

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


La forma correcta sería:

MqlTradeRequest request={};

 
Vladimir Karputov:

Sí, ahora no escribas cero para la puesta a cero.

¡Gracias, Vladimir!

¡Se vive y se aprende mucho tiempo! Si los desarrolladores de MQL5 Reference corrigieran esto en todas partes, sería genial.

Sinceramente, Vladimir.

 

Buenos días a todos.

Continúo mi autoestudio del lenguaje de programación MQL5. Decidí escribir una función para obtener la señal del indicador ZigZag. Empecé a estudiarlo a fondo y enseguida me surgieron algunas preguntas. Lo tengo en sus parámetros de entrada:

input int Depth      = 12;  // Depth
input int Deviation  = 5;   // Deviation
input int Backstep   = 3;   // Backstep

No domino el inglés, así que tengo que usar el Google Translator. Cuál es la traducción pura:

Depth - глубина
Deviation - отклонение
Backstep - шаг назад

Preguntas:

  1. Si la profundidad, ¿profundidad de qué?
  2. Si se trata de una desviación, ¿de qué parámetro o valor?
  3. Si un paso atrás, ¿por qué un paso atrás? ¿No está avanzando?

Queridos expertos, ¡ayudadme a entender!

Sinceramente, Vladimir.

 
MrBrooklin:

Buenos días a todos.

Continúo mi autoestudio del lenguaje de programación MQL5. Decidí escribir una función para obtener la señal del indicador ZigZag. Empecé a estudiarlo a fondo y enseguida me surgieron algunas preguntas. Lo tengo en sus parámetros de entrada:

No domino el inglés, así que tengo que usar el Google Translator. Cuál es la traducción pura:

Preguntas:

  1. Si la profundidad, ¿profundidad de qué?
  2. Si se trata de una desviación, ¿de qué parámetro o valor?
  3. Si un paso atrás, ¿por qué un paso atrás? ¿No está avanzando?

Queridos expertos, ¡ayudadme a entender!

Sinceramente, Vladimir.

¡¡¡¡Elemental - buscar para ayudar, " No avanza " - toda la historia se mueve hacia atrás aquí!!!! :-)

https://www.mql5.com/ru/code/7796


La profundidad es el número mínimo de barras en las que no habrá un segundo máximo (mínimo) menos (más) por pips de desviación que el anterior, es decir, el ZigZag siempre puede divergir, pero converger (o desplazar el conjunto) más que por desviación, el ZigZag sólo puede después de las barras de profundidad. El Backstep es el número mínimo de barras entre máximos (mínimos).


¡En el cuadro de búsqueda, escriba: por ejemplo, parámetros en zigzag, https://www.mql5.com/ru/search#!keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS cosas elementales...

ZigZag
ZigZag
  • www.mql5.com
ZigZag отслеживает и соединяет между собой крайние точки графика отстоящие друг от друга не менее чем на заданный процент по шкале цены.
 
Roman Shiredchenko:

¡¡¡¡Elemental - la búsqueda es una ayuda, " no se mueve hacia adelante " - toda la historia se mueve hacia atrás aquí!!!! :-)

https://www.mql5.com/ru/code/7796


La profundidad es el número mínimo de barras en las que no habrá un segundo máximo (mínimo) menor (mayor) que el anterior por pips de desviación, es decir, el ZigZag siempre puede divergir, pero puede converger (o desplazar el conjunto) más que por desviación, el ZigZag sólo puede después de las barras de profundidad. El Backstep es el número mínimo de barras entre máximos (mínimos).


¡En el cuadro de búsqueda, escriba: por ejemplo, parámetros en zigzag, https://www.mql5.com/ru/search#!keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS cosas elementales...

¡Muchas gracias, Roman! Has dado la explicación más concisa, pero al mismo tiempo comprensible.

Respetuosamente, Vladimir.

 
MrBrooklin:

¡Muchas gracias, Roman! Has dado la explicación más concisa, pero al mismo tiempo comprensible.

Respetuosamente, Vladimir.

Gracias por comprobarlo, estoy siendo amistoso, ¡no hay puñaladas por la espalda! ¡Es con una sonrisa!
 

¡Buenos días a todos!

Mientras probaba un Asesor Experto, me encontré con un problema. Tiene el siguiente código de función de inicialización de EA:

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
//--- получить хэндл индикатора Bollinger Bands и DEMA
   BolBandsHandle=iBands(NULL,PERIOD_M30,bands_period,bands_shift,deviation,PRICE_CLOSE);
   demaHandle=iDEMA(NULL,PERIOD_D1,dema_period,0,PRICE_CLOSE);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if((BolBandsHandle<0) || (demaHandle<0))
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }

   return(0);
  }

Al probar el EA me aparecen mensajes en el registro:

2021.10.31 13:19:25.752 Core 2  genetic pass (0, 288) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.835 Core 2  genetic pass (0, 298) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.921 Core 1  genetic pass (0, 42) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.847 Core 2  genetic pass (0, 318) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.848 Core 2  genetic pass (0, 326) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 359) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 371) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 102) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 105) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:31.044 Core 1  genetic pass (0, 122) tested with error "OnInit returned non-zero code -1" in 0:00:00.000

и т.д.

He descubierto que el problema está en la comprobación de las asas de los indicadores Bollinger Bands y DEMA. Ya he comprobado las asas de los indicadores Bollinger Bands y DEMA, así que tengo una pregunta: ¿Qué debo cambiar en mi código para corregir estos errores?

Saludos, Vladimir.

Razón de la queja: