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

 
Slava:

El comprobador se ha detenido porque OnInit devuelve un código distinto de cero

Por eso no hay estadísticas.

Gracias, le mantendré informado. Es interesante que los gráficos se sigan construyendo con las operaciones realizadas.

 
Andrey Pogoreltsev:

Los agentes sobrecargan la memoria al intentar pasar por el mexicano y no hacer nada, y su cuenta de tareas no hace más que crecer. Los registros muestran los siguientes errores:

Hay que mirar los registros de los agentes.

El error 14 significa un precio de oferta cero para esta herramienta. Es decir, hay una barra izquierda en el historial

PS Es mejor hacer una sola prueba. Entonces es seguro que el error llegará al registro del agente probador. Cuando se optimiza, los errores sólo se muestran hasta que finaliza OnInit

 

El icono del grupo desaparece cuando se cierran todos, la opción de seleccionar un parámetro para la optimización desaparece.


input group "ORDER"
input double K = 30;
input double TP_0 = 500;
input double MaxLoss = 0.25;
input group "FUNCTIONS"
input bool MultipleStopOrders = true;
input bool CloseAllPosReversSig = true;
input group "MONEY MANAGEMENT SETTING"
input double StartLot = -0.01;
input group "ORDERS SETTING"
input int MagicNumber_ = 2000; // Magic Number
input int Slippage = 50;       // Slippage
 
Slava:

Gran petición de no cambiar los parámetros de entrada del EA, que no están fijados en el portapapeles.

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

Bibliotecas: MultiTester

fxsaber, 2019.11.06 11:24

Cuando se mira un gran número de cachés de optimización después de una ejecución de multitester, se hace lo mismo.

  1. Eliges el mejor pase para realizar una sola carrera (a través del PCM).
  2. Si te gusta, desactiva la optimización y aumenta el intervalo.
  3. Presionas el botón de inicio.

La mayor parte del tiempo se dedica al paso 2. Esto suele dar lugar a errores. Nos gustaría semiautomatizar. ¡Y hay una solución!


Copie este texto en el portapapeles.

[Tester]
Optimization=0
FromDate=2019.01.01


A continuación, sólo tienes que pulsar CTRL+V en la pestaña Configuración. Esto desactivará automáticamente la optimización y establecerá la fecha correcta.


ZZY tenía prisa por emocionarse. Los parámetros de entrada de EA se restablecen por defecto con este buffer.

 
fxsaber:

Una gran petición para no cambiar los parámetros de entrada de un EA que no está fijado en el portapapeles.

Sí. Corregir el comportamiento.

PS El comportamiento descrito no es reproducible. Si no hay una sección [TesterInputs] en el texto insertado, la pestaña de configuración del Asesor Experto no se toca en absoluto

 
Slava:
Sí. Corregir el comportamiento

Gracias.

 
fxsaber:

Gracias.

No jugar
 
Slava:

PS El comportamiento descrito no se reproduce. Si no hay una sección [TesterInputs] en el texto a insertar, la pestaña de configuración del Asesor Experto no se toca en absoluto

Asesor experto

input int Range = 0; // 0 .. 100

double OnTester() { return(Range); }


Reproducción


 
Probablemente, esta funcionalidad estándar no empeorará a nadie.

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Características del lenguaje mql5, consejos y trucos

fxsaber, 2019.11.06 16:57

A veces, en la optimización genética, los primeros miles de pases son suficientes para entender más o menos el resultado.

Cuando se ejecutan automáticamente muchas optimizaciones, se quiere que todo funcione más rápido. Por eso necesitaremos un mecanismo para interrumpir la optimización.

#include <fxsaber\MultiTester\MTTester.mqh>  // https://www.mql5.com/ru/code/26132

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


Aplicación.

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}
 
fxsaber:

Asesor


Reproducción


Vamos a llegar al fondo de esto