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

 
No puedo activar la pestaña de trading en MT5 MOBILE
 
Chicos, traté de crear una alerta de sonido para el indicador RSI usando Chatgpt, pero cuando lo compilé obtuve algunos errores. ¿Podría ayudarme algún alma caritativa? No se nada de programación.

...

Código con formato incorrecto eliminado por el moderador. Por favor, EDITE su comentario y utilice el botón CÓDIGO (Alt -S) al insertar su código.

Botón de código en el editor

...

 
T3 Estratégias Estratégias #: Chicos, traté de crear una alerta de sonido para el indicador RSI usando Chatgpt, pero cuando lo compilé obtuve algunos errores. ¿Podría ayudarme algún alma caritativa? No sé nada de programación.

Renuncie a ChatGPT. No sirve para nada. Aprende a programar correctamente en MQL5 o contrata a un programador humano para que lo haga.

 
T3 Estratégias Estratégias #:
Chatgp
Chatgpt mezcla código MQL4 y MQL5.
 

¡Buenas tardes!

Cuando se activa ExpertRemove en MT5, ¿también cierro la posición y borro las órdenes limitadas?

¿O tengo que cerrar todo antes?

Gracias por la respuesta sugerida.

 
klycko cierra una posición y se borran las órdenes limitadas?

¿O tengo que cerrar todo de antemano?

Gracias por la respuesta sugerida.

ExpertRemove - termina el Asesor Experto y lo descarga del gráfico.

Lo mismo ocurre si elimina manualmente el Asesor Experto del gráfico.

Si se especifica en el Asesor Experto para eliminar órdenes y cerrar posiciones cuando se elimina el Asesor Experto,

entonces todo será borrado y cerrado, pero si no se especifica,

entonces tanto las posiciones como las órdenes permanecerán sin cerrar.

 
Aleksandr Slavskii #:

Si está prescrito en el Asesor Experto borrar órdenes y cerrar posiciones cuando se borra el Asesor Experto,

entonces todo será borrado y cerrado

Una pequeña adición: si se tarda 2,5 segundos.

Выполнение функции OnDeinit() ограничивается 2.5 секундами. Если за это время функция не закончила свою работу, то ее выполнение завершается принудительно.
 

No sé cómo hacerlo.

Cuando se produce el evento de desplazamiento de la rueda del ratón, se ejecuta el código.

La rueda del ratón se puede desplazar durante varios clics a la vez, y obtendremos no un evento con dparam = número de clics, sino varios eventos con dparam = +/-120.

El código se ejecuta durante algún tiempo, que es mucho mayor que el tiempo entre clics al desplazar la rueda del ratón.

Como resultado, resulta que ya nadie se desplaza con la rueda del ratón, y el programa sigue recalculando durante algún tiempo más.

//+------------------------------------------------------------------+
void OnInit()
  {
   ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, 0, true);
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long & lparam, const double & dparam, const string & sparam)
  {
   static double delta = 0;

   if(id == CHARTEVENT_MOUSE_WHEEL)
     {
      //--- какой то код
      delta += dparam / 120;
      Sleep(1000);
      //---
      Print(delta);
     }
  }
//+------------------------------------------------------------------+
15:12:22.820    test (EURUSD,H1)        0.0
15:12:23.821    test (EURUSD,H1)        1.0
15:12:24.811    test (EURUSD,H1)        2.0
15:12:25.823    test (EURUSD,H1)        3.0
15:12:26.817    test (EURUSD,H1)        4.0
15:12:27.814    test (EURUSD,H1)        5.0
La rueda del ratón se desplazó a las 15:12:22.820 y luego el programa se ejecutó 5 veces más, durante 5 segundos enteros.


Pregunta: cómo ejecutar el código del programa una vez en lugar de varias veces.

Es decir, la rueda se desplazó durante 5 clics, delta = dparam / 120 * 5.

 
Aleksandr Slavskii #:

No sé cómo hacerlo.

Cuando se produce el evento de desplazamiento de la rueda del ratón, se ejecuta el código.

La rueda del ratón se puede desplazar durante varios clics a la vez, y obtendremos no un evento con dparam = número de clics, sino varios eventos con dparam = +/-120.

El código se ejecuta durante algún tiempo, que es mucho mayor que el tiempo entre clics al desplazar la rueda del ratón.

Como resultado, resulta que ya nadie desplaza la rueda del ratón, y el programa sigue recalculando durante algún tiempo más.

La rueda del ratón se desplazó a las 15:12:22.820 y luego el programa se ejecutó 5 veces más, durante 5 segundos enteros.


Pregunta: cómo ejecutar el código del programa una vez en lugar de varias veces.

Es decir, la rueda se desplazó durante 5 clics, delta = dparam / 120 * 5.

Prueba esto

//+------------------------------------------------------------------+
void OnInit()
  {
   ChartSetInteger(0, CHART_EVENT_MOUSE_WHEEL, 0, true);
  }
//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long & lparam, const double & dparam, const string & sparam)
  {
   static double delta = 0;
   bool flag = true;
   if(id == CHARTEVENT_MOUSE_WHEEL)
     {
      //--- какой то код
      delta += dparam / 120;
      Sleep(1000);
      //---
      if(flag)
       {
        Print(delta);
        flag = false;
       }
     }
  }
//+------------------------------------------------------------------+

No lo he comprobado, en todo caso, no es culpa mía...)))))) Tendré que hacer algo con la bandera... y quizás tenga que meter el código en una función personalizada y trastear con la bandera ahí.