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

 
¡Muchas gracias!
 

El 03 de junio publiqué mi script para MT5(https://www.mql5.com/ru/code/44732).... Todavía está en el estado de "siendo revisado por el moderador". ¿Quién sabe cuánto tiempo hay que esperar para la comprobación?

Скачать бесплатно скрипт 'Quick Change MA (method, period)' от 'NotBuffett' для MetaTrader 5 в MQL5 Code Base
  • www.mql5.com
Скачать бесплатно скрипт 'Quick Change MA (method, period)' от 'NotBuffett' для MetaTrader 5 в MQL5 Code Base
 
Alexey Viktorov #:

Prueba esto

No lo he comprobado, si no es culpa mía...)))))) Tendré que trastear con el flag de alguna manera... y quizás tenga que meter el código en una función personalizada y trastear con el flag ahí.

El problema es que las funciones personalizadas sólo se ejecutan dentro de las funciones de eventos, y sólo tengo dos de estas funciones OnInit y OnChartEvent en mi EA.

En general, me las arreglé para hacerlo, aunque no del todo as, pero aún mejor de lo que era.

//+------------------------------------------------------------------+
void OnChartEvent(const int id, const long & lparam, const double & dparam, const string & sparam)
  {
   static double delta = 0;
   static ulong timeWheel = 0;
   static bool mouse_wheel = false;

   if(id == CHARTEVENT_MOUSE_WHEEL)
     {
      delta += dparam / 120;
      mouse_wheel = true;
      timeWheel = GetMicrosecondCount();
     }

   if(mouse_wheel && GetMicrosecondCount() - timeWheel > 0)
     {
      Print(delta);
      //--- какой то код
      Sleep(1000);
      //---
      delta = 0;
      mouse_wheel = false;
     }
  }
//+------------------------------------------------------------------+
23:48:28.853    test (EURUSD,H1)        1.0
23:48:29.857    test (EURUSD,H1)        1.0
23:48:30.856    test (EURUSD,H1)        4.0
23:48:31.881    test (EURUSD,H1)        2.0
23:48:32.880    test (EURUSD,H1)        4.0
23:48:33.887    test (EURUSD,H1)        11.0
23:48:34.914    test (EURUSD,H1)        15.0
23:48:35.926    test (EURUSD,H1)        7.0
23:48:36.936    test (EURUSD,H1)        9.0
23:48:46.477    test (EURUSD,H1)        6.0
23:48:47.479    test (EURUSD,H1)        -1.0
 
Aleksandr Slavskii #:

El problema es que las funciones personalizadas sólo se ejecutan dentro de las funciones de eventos, y sólo tengo dos de estas funciones OnInit y OnChartEvent en mi EA.

En general, me las arreglé para hacerlo, aunque no del todo una buena idea, pero todavía mejor de lo que era.

También puede llamar a funciones personalizadas desde OnChartEvent sin ningún problema.

La bandera se declara a nivel global. Insertar OnTick únicamente para restablecer la bandera no es un problema y no retrasará la ejecución del código.

Si la bandera está abierta, se llama a una función personalizada. Internamente, la bandera se cerró. En OnTick, la bandera se abre de nuevo y espera la próxima ejecución de la función de usuario.

Creo que es más fácil que quedarse atascado en el tiempo de ejecución.

 
Alexey Viktorov #:

Puede llamar a funciones personalizadas desde OnChartEvent también, no hay problema.

La bandera se declara a nivel global. La inserción de OnTick únicamente para restablecer la bandera no es un problema y no retrasará la ejecución del código.

Si la bandera está abierta, se llama a una función personalizada. Internamente, la bandera se cerró. En OnTick la bandera se abre de nuevo y espera la próxima ejecución de la función de usuario.

Creo que es más fácil que estar atado al tiempo de ejecución.

No lo entiendo del todo, o mejor dicho no lo entiendo del todo :)

Y si no hay ticks, OnTick no funciona sin ticks, ¿qué hago ?


En realidad yo llamo a funciones personalizadas desde OnChartEvent de todas formas. Era sólo un problema para rastrear el último clic del ratón al desplazar la rueda.

La tarea consistía en retrasar la ejecución de la función personalizada hasta el momento de detener el desplazamiento de la rueda, mientras se contaba el número de clics durante el desplazamiento.

En principio, funcionó.

 
NotBuffett #:

El 03 de junio publiqué mi script para MT5(https://www.mql5.com/ru/code/44732).... Todavía está en el estado de "siendo revisado por el moderador". ¿Quién sabe cuánto tiempo hay que esperar para la comprobación?

Acabo de publicar el código. La verificación tomó menos de un minuto.

Lo más probable es que haya cometido un error al publicar.

 
Aleksandr Slavskii #:

Acabo de publicar el código. Comprobarlo me ha llevado menos de un minuto.

Lo más probable es que hayas cometido un error al publicarlo.

Intenté publicarlo de nuevo... y pasa lo mismo:

en "5. Prueba" dice"La pruebase completó sin errores" y ofrece publicarla, pero al pulsar el botón "Publicar" aparece un error

404. Esta página no existe

En la subsección "Mis códigos" ahora hay dos códigos y en ambos "comprobado por moderador".

En general, voy a hacer una pregunta en el hilo general, tal vez los moderadores todavía se dará cuenta.

 
NotBuffett #:

Intenté publicar de nuevo... y pasa lo mismo:

en "5. Prueba" dice"La pruebase completó sin errores" y ofrece publicarla, pero cuando hago clic en el botón "Publicar" me aparece un error

404. Esta página no existe

Ahora hay dos códigos en la subsección "Mis códigos" y en ambos aparece "siendo comprobado por el moderador".

En general, voy a hacer una pregunta en el hilo general, tal vez los moderadores todavía se dará cuenta.

Así que lo ven todo aquí. Puedes estar tranquilo.

 

¡Buenas tardes!

Heoptimizado mi robot en M1, USDJPYrfden el probador de estrategias MT5 .

Guardé elresultado de la optimizaciónen un archivo de configuración.

Una semana y media más tarde traté de ejecutar el robot de nuevo en el probador de estrategias utilizando los mismos datos de entrada. El resultado fue significativamente diferente.

La última ejecución fue un sábado, pero anteriormente optimicé en un día laborable.

Gracias por la respuesta sugerida.

 
El diferencial ampliado del sábado hizo que el resultado fuera diferente. Ajuste manualmente el valor del diferencial.