Probador de Estrategias de MetaTrader 5: errores, fallos, sugerencias de mejora - página 56

 
2314. La comisión en porcentajes por modo de operación no se calcula correctamente. + no se puede ajustar más allá del segundo punto decimal a través de la GUI (se puede hacer a través de un archivo).
 

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Asesores Expertos: Validar

fxsaber, 2020.02.06 17:20

SZZY Desgraciadamente, el propio MT5-Tester no permite prescribir un criterio de optimización personalizado (no de selección) fuera del código fuente del EA. Aunque no hay obstáculos arquitectónicos para hacerlo.

Ahora puede seleccionar cualquier pase de los resultados de la optimización en función de su criterio para elegir el mejor.

Pero es imposible establecer su propio criterio de optimización si sólo hay EX5. Desde mi punto de vista, este criterio de optimización podría establecerse como un EA en el que sólo están disponibles los datos de OnTester y TesterStatistics. Lo más probable es que no esté en los planes de los promotores. Por lo tanto, sólo una sonda.

 

Lo siento por la traducción automática del inglés al ruso, pero sólo he encontrado este hilo, para informar de los errores.

Parece que hay un problema con la plataforma Metatrader 5 cuando inicio una prueba visual de depuración en el editor y llego a un punto de ruptura y presiono Ctrl + F.

Indicadores (todos, incluso los habilitados) redibujan/desplazan 1 barra al pulsar ctrl + f mientras se depuran los datos históricos)

Reproducción:

  1. Abra Metatrader 5.
  2. Añadir EMA 5 y EMA 10 (incorporado)
  3. Poner Strategytester en Diario, Simulación: ticks o Ticks reales (ambos causan el mismo problema)
  4. Abra el editor de Metatrader 5
  5. Abra el archivo ExpertMACD.mqh incluido
  6. Establece un punto de interrupción en la línea 651 en Expert.mqh
  7. Inicie con CTRL + F5 para ejecutar en los datos históricos
  8. Coloque el cursor en una vela completamente cerrada (al menos 1-2 días atrás)
  9. Cuando se alcance el punto de interrupción, active el comprobador visual y pulse Ctrl + F
  10. Todos los indicadores se desplazarán 1 barra a la izquierda una vez que presione CTRL + F en la ventana del comprobador visual y obtenga una cruz.
  11. Continúe desde el punto de ruptura y todos los indicadores se moverán 1 barra a la derecha.
  12. Los pasos 8 a 11 pueden repetirse y hacer siempre lo mismo.

El problema es que a la hora de comprobar si el EA está haciendo realmente lo que se supone que debe hacer, no es posible cuando las barras están desplazadas respecto a lo que ve el EA.

Esto no es un problema con los indicadores, ya que incluso es el caso de los ejemplos de EA incorporados, así como de los indicadores incorporados.


Este vídeo de YouTube demuestra el problema en torno al minuto 0:25, pulse Ctrl + F.

https://youtu.be/_fyCv3Zla9A

 
fxsaber:

Ahora puede seleccionar cualquier pase de los resultados de la optimización según su criterio para seleccionar el mejor pase.

Pero es imposible establecer su propio criterio de optim izaciónsi sólo hay EX5. Desde mi punto de vista, tal criterio de optimización podría establecerse como un EA, donde sólo están disponibles los datos de la función OnTester y TesterStatistics. Lo más probable es que no esté en los planes de los promotores. Por ello, sólo está disponible la sonorización.

¿Te has dado cuenta ahora? Si tienes un mal modelo de estrategia comercial, ninguna optimización ayuda en absoluto.

Por tanto, la modelización matemática o el aprendizaje automático no pueden resolver este problema. Hay que saber claramente lo que hay en la caja negra.

 
Petros Shatakhtsyan:

¿Te has dado cuenta ahora?

No entiendo el patrón de estas preguntas ilógicas.

Si tienes un mal modelo de estrategia comercial, ninguna optimización te ayuda.

Por supuesto, si alguien es malo, no es bueno. Eso es exactamente lo que parece la frase anterior.

Es decir, la modelización matemática o el aprendizaje automático no están a la altura. Hay que saber claramente lo que hay en la caja negra.

Esta frase se refiere a un tipo de tarea. Y que necesitas saber algo para algún propósito. En general, es mejor que las respuestas no parezcan un trozo de conversación desgarrado con uno mismo.

 
fxsaber:

No hay griales.

Lo hay.

 
Алексей Тарабанов:

Compruébalo.

La afirmación de la graalidad (antes del arreglo del modo Tester) ha sido confirmada por el código.

 

En algunas de las últimas versiones, la importación del archivo tst es incompleta: la pestaña de configuración no se actualiza con la del tst.

Anteriormente, se importa y en Ajustes se puede ver inmediatamente a qué valores se ha obtenido el resultado. No puedo verlo ahora. ¿Es posible volver a cambiar?

 
Durante mucho tiempo busqué la razón del extraño comportamiento del probador en los ticks reales. Lo encontré.
const bool Init = EventSetTimer(1);

void Func()
{
  static datetime PrevTime = 0;
  
  const datetime time = TimeTradeServer();
  
  if (time < PrevTime)
    DebugBreak(); // Срабатывает
  
  PrevTime = time;
}

void OnTick()
{
  Func();
}

void OnTimer()
{
  Func();
}

El tiempo del servidor se adelanta y luego regresa. Esto sucede en un servidor de comercio real, pero logré crear una repetición en un símbolo personalizado.


Vamos a correr

sinput datetime inDateFrom = D'2020.01.01';

void OnStart()
{
  const string Name = "TEMP12345";                                                           // Имя кастомного символа
  const string SymbOrig = "EURUSD";                                                          // Имя оригинального символа

  MqlTick Ticks[];
  
  const int Size = CopyTicksRange(SymbOrig, Ticks, COPY_TICKS_ALL, (long)inDateFrom * 1000); // Считали EURUSD-тики.
    
  if ((Size > 0) && CustomSymbolCreate(Name, NULL, SymbOrig) && SymbolSelect(Name, true))    // Создали символ на основе EURUSD.
  {
    CustomTicksReplace(Name, 0, LONG_MAX, Ticks);                                            // Поместили в него историю EURUSD.        
    
    CustomRatesDelete(Name, D'2020.01.03 23:00', D'2020.01.04 00:00');                       // Удалили несколько баров.
  }
}


Se creará un símbolo con historial de ticks, pero con varias barras eliminadas. A continuación, empezamos a depurar el EA anterior en este modo.

[Tester]
Symbol=TEMP12345
Period=M1
Optimization=0
Model=4
FromDate=2020.01.01
ToDate=2020.01.08
ForwardMode=0
Deposit=100000
Currency=USD
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6


Se detiene.

Puedes ver que el tiempo ha pasado en un segundo bucle.

 
fxsaber:

En algunas de las últimas versiones, la importación del archivo tst es incompleta: la pestaña de configuración no se actualiza con la del tst.

Anteriormente, se importa y en Ajustes se puede ver inmediatamente a qué valores se ha obtenido el resultado. No puedo verlo ahora. ¿Es posible volver a cambiar?

Sí, podemos.
Razón de la queja: