Librerías: MultiTester - página 22

 
Respondo a mi propia pregunta: los archivos mqh no necesitan compilarse por separado. Y tú también empezaste a buscar, ¿no? Ya funciona. Gracias.
 

Al examinar los resultados de la optimización, es posible que le gusten algunos pasajes concretos y desee obtener rápidamente información útil sobre ellos para utilizarla más adelante.

Este método me ha resultado muy práctico.

#define private public
  #include <fxsaber\MultiTester\MTTester.mqh>
#undef private

void OnDeinit( const int Reason )
{
  if (!MQLInfoInteger(MQL_OPTIMIZATION) && MQLInfoInteger(MQL_TESTER))
  {
    const datetime EndTime = TimeCurrent() - TimeCurrent() % (24 * 3600) + 24 * 3600;
        
    const string Str =          TimeToString(EndTime, TIME_DATE) + ": " +
                                DoubleToString(TesterStatistics(STAT_PROFIT), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_TRADES), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " +          
                                DoubleToString(TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", Fit = " +          
                                DoubleToString(TesterStatistics(STAT_CUSTOM_ONTESTER), 2) + "\n";

    MTTESTER::SetClipboard(_Symbol + " " + Str); // Coloca la cadena de una sola pasada en el portapapeles.
  }

Después de una sola pasada, toda la información necesaria está disponible de forma resumida en el portapapeles en forma de cadena. La pego a través de CTRL+V donde ahora me resulta más cómodo.

Después, cuando se han acumulado muchas cadenas interesantes, evalúo la situación general.


Por supuesto, tú mismo formas la cadena. Lo de arriba es sólo un ejemplo. Lo principal es que quepa en el portapapeles.

 

fxsaber, ¡gracias por el multitester! ¡Tus publicaciones son como siempre de lo mejor!


Antes de inventar una bicicleta, me gustaría pedir consejo.

Como resultado de la optimización de los parámetros de EA por una lista de símbolos utilizando multitester, obtengo una lista de archivos .opt y los resultados de la optimización sólo se pueden ver por separado para cada símbolo.

¿Cómo puedo combinarlos en un resultado promediopara todos los símbolos? Digamos que quiero obtener un gráfico estándar MT5 2D de dos parámetros (de cuadrados sombreados en verde).

O cómo es más fácil combinar todos los resultados en una tabla de Excel, la exportación manual de todos los resultados de S&P500 a Excel no es muy conveniente....

fxsaber
fxsaber
  • www.mql5.com
Предупреждение для тех, кто не знает (почти все). При передаче мастер-пароля (даже на короткое время) от MT4/5-торгового счета другому лицу автоматически происходит передача не только имени, на кого зарегистрирован торговый счет (как при передаче инвест-пароля), но и реального email-адреса и номера телефона, на которые зарегистрирован торговый...
 
Sunriser:

Como resultado de la optimización de los parámetros EA por la lista de símbolos utilizando el multitester, se obtiene una lista de archivos .opt y los resultados de la optimización se pueden ver sólo por separado para cada símbolo.

¿Y cómo combinarlos en un resultado mediopara todos los símbolos? Digamos que quiero obtener un gráfico estándar MT5 2D de dos parámetros (de cuadrados sombreados en verde).

O cómo es más fácil combinar todos los resultados en una tabla de Excel, la exportación manual de todos los resultados de S&P500 a Excel no es muy conveniente....

Es posible consolidar todos los archivos opt de la optimización múltiple en uno solo a través de TesterCache.

TesterCache
TesterCache
  • www.mql5.com
MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах  Tester\cache\*.opt . И умеет экспортировать/импортировать их. Данная библиотека позволяет работать с этими данными. Сценарии Вывод более полных данных, чем это предоставляет MT5-тестер. Создание критериев оптимизации в любое время после проведенной...
 
Hola, esto parece una herramienta increíble, estoy tratando de usar google translate pero no entiendo cómo trabajar con él. ¿Hay algún tutorial en inglés? No entiendo en que momento puedo activarlo y hacer la lista de los símbolos a probar con mi experto. ¿O tengo que editar un archivo de código manualmente y ellos importarlo? ¡Gracias!
 
Thierry Waltrich:
Hola, esto parece una herramienta increíble, estoy tratando de usar google translate pero no entiendo cómo trabajar con él. ¿Hay algún tutorial en inglés? No entiendo en que momento puedo activarlo y hacer la lista de los símbolos a probar con mi experto. ¿O tengo que editar un archivo de código manualmente y ellos importarlo? Gracias.

Hay personas aquí que están utilizando activamente esta herramienta (o basado en ella). Sería estupendo que te ayudaran a entenderla.

Por desgracia, he compartido tanto de mi trabajo con la comunidad que no sólo no puedo encontrar tiempo para responder constructivamente a las preguntas de nivel de entrada, pero casi he dejado la práctica de publicar mis desarrollos y resultados.

 

Una forma cómoda de ejecutar pasajes cuando se analizan manualmente los resultados de las Optimizaciones.

// Ejecutar Forward desde la tabla de resultados de optimización (ejecutar en el Terminal).
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/es/code/26132

sinput datetime inForward = D'2020.01.01'; // Adelante desde

const bool Init = EventSetMillisecondTimer(100);

void OnTimer()
{
  static const string Forward = "[Tester]\r\nFromDate=" + TimeToString(inForward, TIME_DATE) +
                                "\r\n[TesterInputs]\r\ninBestInterval_Action=true";
  static bool Ready = true;
  static bool Flag = false;
  
  static string Settings;
  
  if (Ready)
    Ready = MTTESTER::IsReady();
  else if (MTTESTER::IsReady())
    Ready = (Flag = !Flag) ? !(MTTESTER::GetSettings(Settings) && MTTESTER::SetSettings2(Forward) && MTTESTER::ClickStart(false))
                           : MTTESTER::SetSettings2(Settings);
}

Abro la tabla de Optimizaciones de cualquier Asesor Experto y hago clic en "Ejecutar prueba única" en los pases de interés. Obtengo la salida hacia adelante del pase.

Ahorra mucho tiempo (para mí, un pase dura un par de segundos), especialmente con BestInterval.

 
Thierry Waltrich:
Hola, esto parece una herramienta increíble, estoy tratando de usar google translate pero no entiendo cómo trabajar con él. ¿Hay algún tutorial en inglés? No entiendo en que momento puedo activarlo y hacer la lista de los símbolos a probar con mi experto. ¿O tengo que editar un archivo de código manualmente y ellos importarlo? Gracias.

Tienes que seleccionar el Experto que quieres optimizar en el probador de estrategias y establecer los parámetros a optimizar.

A continuación, compile el Ejemplo 1 y arrástrelo y suéltelo en cualquier gráfico (ejecútelo). Comenzará a ejecutar su Asesor Experto en los gráficos y marcos temporales establecidos en el código del Ejemplo 1.

Así que usted necesita un MultitesterExpert que como un autómata ejecute su Experto optimizado en diferentes _Symbol / _Period etc..

Estudiando los comentarios del Ejemplo 1 y del Ejemplo 2 podrás hacer tu propio MultitesterExpert basándote en ellos.

 

GetSettings(Str) rompe la prueba en agentes locales.

GetSettings(Str) Lo utilizo para averiguar qué tipo de modelado de ticks se utiliza en la prueba.

Ejemplo:

He añadido lo siguiente al código de ejemplo del Asesor Experto en Media Móvil:

#include <fxsaber\MultiTester\MTTester.mqh>

int OnInit()
  {

// Código estándar del Asesor Experto

//obtener la configuración del comprobador
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      Print(Str);
     }
   return(INIT_SUCCEEDED);
  }

Ejecuto la optimización con enumeración completa de parámetros, como resultado el probador tiende a cambiar de cualquier pestaña a la pestaña "Settings".

Se distribuye un número desproporcionado de construcciones a los agentes locales y no se ejecutan.


¿Puedes sugerir algo por tu cuenta?

Archivos adjuntos:
 
Sunriser:

¿Puedes darme una pista?

En OnTesterInit haga GetSettings y pase los valores obtenidos desde allí vía ParametersSetRange a la variable sinput.

En Agentes locales esta variable sinput te dirá cual es el modo.


El modo puede ser determinado por ticks reales sin DLL.