Librerías: MultiTester - página 44

 

Foro sobre negociación, sistemas automatizados de negociación y prueba de estrategias de negociación

Probando 'CopyTicks

fxsaber, 2024.02.26 12:41 pm

Si CopyTicks se cuelga durante 60 segundos y devuelve el error 4403, intenta cambiar el punto de acceso al servidor. Aunque el ping al mismo sea menos favorable.

En este sentido, la selección automática de un punto de acceso por el terminal es peligrosa.

Sin lanzar este indicador (una instancia para todo el Terminal), ya no salgo del Terminal de combate, donde se está trabajando con CopyTicks.

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

#property indicator_chart_window
#property indicator_plots 0

input int inIntervalAlert = 5; // Intervalo de tiempo de espera de error (seg)
input int inMaxPoints = 5;     // Número de puntos del primer servidor

int OnCalculate( const int rates_total, const int prev_calculated, const int, const double &[] )
{
  static ulong StartTime = GetTickCount64();
  const ulong CurrTime = GetTickCount64();
  
  if (!prev_calculated)
  {
    Alert("Restarted!");
    
    StartTime = CurrTime;
  }
  else if (CheckCopyTicks() != ERR_HISTORY_TIMEOUT)
    StartTime = CurrTime;
  else if (CurrTime - StartTime > (ulong)inIntervalAlert * 1000)
  {
    static int Pos = 0;
    
    const int ServerPoint = Pos++ % inMaxPoints;
        
    Alert("CopyTicks error (timeout > " + (string)(CurrTime - StartTime) +
          " ms). Trying (" + (string)Pos + ") to switch to the " +
          (string)(ServerPoint + 1) + "/" + (string)inMaxPoints + " server point.");

    MTTESTER::SetServerPoint(ServerPoint);
  }

  return(rates_total);
}

int CheckCopyTicks( const string Symb = NULL )
{
  MqlTick Tick;
  MqlTick Ticks[];
  
  ResetLastError();
  
  if (SymbolInfoTick(Symb, Tick))
    CopyTicks(Symb, Ticks, COPY_TICKS_ALL, Tick.time_msc - 1000000, 1);
    
  return(_LastError);
}


2024.10.29 16:07:24.802 CopyTicksHelper (EURUSD,M1)     Alert: CopyTicks error (timeout > 5015 ms). Trying (8) to switch to the 3/5 server point.
2024.10.29 16:07:25.909 CopyTicksHelper (EURUSD,M1)     Alert: Restarted!


El indicador hace que todos los Asesores Expertos/scripts en ejecución salgan del error de tiempo de espera correspondiente a la vez. Y luego continúan trabajando normalmente.

 
fxsaber #:

Sin ejecutar este indicador (una instancia para toda la Terminal), ya no salgo de la Terminal de combate, donde se está trabajando con CopyTicks.



El indicador obliga a todos los Asesores Expertos/scripts en ejecución a salir del error de tiempo de espera correspondiente a la vez. Y luego continúan trabajando normalmente.

Por favor, dame casos reales cuando se necesita trabajar con CopyTicks en un Asesor Experto todo el tiempo. Yo realmente lo uso sólo en OnInit() para obtener algunos ticks históricos para ejecutar filtros digitales. En MQL4 tenía que esperar varios minutos a que se llenaran los buffers.

 
Alexey Volchanskiy #:

Por favor, dame casos reales cuando un Asesor Experto necesita trabajar con CopyTicks todo el tiempo.

No omitir (y no duplicar) ticks en el Real, como sucede en el Tester. El Asesor Experto en el Real recibe exactamente la misma secuencia de datos de precios que recibirá en el Probador cuando decida ejecutarlo en el intervalo pasado en el futuro.

 

Debo ser un completo idiota o falta algo.

Si tengo un EA que me gustaría ejecutar una sola prueba no visual (no-optimización) de cada día durante un año ... Así que cada día se prueba con los parámetros hardcoded ¿cómo lo haría? ¿Podría alguien por favor escribir un breve tutorial como.

1. Descargar biblioteca - Instrucciones de instalación

2. Escriba este código para seleccionar su EA por nombre en su ea y tal y tal archivo.

3. Seleccione aquí sus fechas de inicio y fin

4. Especifique el período y la duración de cada prueba retrospectiva aquí.

5. Añade estos códigos adicionales para que todo funcione correctamente pon tus #includes en el lugar correcto etc

6. Especifique y guarde los resultados en csv para cada backtest diario.

Etc etc etc etc

Estoy perdido en la forma de aplicar esta soslution que parece que esta biblioteca se construye específicamente para @fxsaber He leído todos sus ejemplos cortos y se fue sobre el código en cada archivo y no parece encontrar ninguna documentación que describe los casos de uso o una guía paso a paso en cualquier lugar ¿podría ayudarme a resolver esto?


Gracias por codificar lo que todos queriamos y necesitabamos eres una leyenda me encantan algunos de tus comentarios como "!Did" cuando alguien te pide que arregles algo

 
CheckInputs - нахождение аварийных проходов при Оптимизации советника
CheckInputs - нахождение аварийных проходов при Оптимизации советника
  • www.mql5.com
Во время Оптимизации советника некоторые проходы могут завершаться аварийно. Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Новая версия платформы MetaTrader 5
 

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

Bibliotecas: MultiTester

fxsaber, 2022.12.12 13:20

A veces es necesario hacer lo mismo en los terminales de trabajo. Automatización de esta acción a continuación en el ejemplo.

Como resultado, un solo clic los datos recogidos de todos los terminales. Gracias a MTTESTER::RunEX5 - ejecuta EX5 en el terminal requerido (portátil).

Aplicación.

МультиТерминальный скрипт.
МультиТерминальный скрипт.
  • www.mql5.com
Здесь будет представлен новый вид MQL5-программ - мультитерминальный скрипт: скрипт, который сам запускается на всех открытых MT5-терминалах. Пример. Первым таким скриптом стал CustomReport по причине
 

El script muestra cuáles de los terminales en ejecución son portátiles.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/es/code/26132
  
void OnStart()
{
  HANDLE Handles[];
  
// Recorre todos los terminales
  for (int i = MTTESTER::GetTerminalHandles(Handles, false); (bool)i--;)
    Print("\"" + MTTESTER::GetTerminalPath(Handles[i]) +
          "\" - " +(MTTESTER::IsPortable(Handles[i]) ? "portable." : "NOT portable."));
}
 

Hola

Necesito ejecutar un script(ubicado en \MQL5\Scripts\) haciendo clic en un objeto creado por un indicador (ubicado en \MQL5\Indicators\)(no por Hotkeys).

He intentado utilizar MTTESTER::RunEX5 pero hay un montón de errores básicos. ¿Qué estoy haciendo mal?

He pasado "MultiTester_Example1" y "MultiTester_Example2" en \MetaQuotes\Terminal\D..5\MQL5\Experts\fxsaber\MultiTester.

He pasado "MultiTester.mqh" y todos los demás archivos .mqh en \MetaQuotes\Terminal\D..5\MQL5\Include\fxsaber\MultiTester

estos son los errores que he recibido

en EX1:

'sinput' - token inesperado Ex1.mq5 3 1

'=' - uso de asignación ilegal Ex1.mq5 3 23

sinput' - token inesperado Ex1.mq5 4 1

'=' - uso de asignación ilegal Ex1.mq5 4 23

sinput' - token inesperado Ex1.mq5 5 1

'=' - asignación ilegal uso Ex1.mq5 5 24

sinput' - token inesperado Ex1.mq5 6 1

'=' - asignación ilegal uso Ex1.mq5 6 31


en EX2:

event handling function not found Ex2.mq5 1 1


en MultiTester.mqh:

expresión no booleana TesterSettings.mqh 104 37

expresión no booleana TesterSettings.mqh 118 39

SetTesterSettings' - identificador no declarado MultiTester.mqh 43 13

')' - expresión esperada MultiTester.mqh 43 31

SetTesterSettings' - identificador no declarado MultiTester.mqh 51 10

')' - expresión esperada MultiTester.mqh 51 28


en Task.mqh:

file 'C:\Users\...\...\....\...\Terminal\D0...75\MQL5\Include\fxsaber\TesterCache\TesterCache.mqh' not found Task.mqh 5 11

'TESTERCACHE' - declaración sin tipo Task.mqh 80 38

.

.

.

ver instanciación de plantilla 'MTTESTER::TASK::GetMaxFitnessPos<unknown>' Task.mqh 244 29


 
Asa Social #:

Necesito ejecutar un script(ubicado en \MQL5\Scripts\) haciendo clic en un objeto creado por un indicador (ubicado en \MQL5\Indicators\) (no por Hotkeys).

Vea el ejemplo aquí.

He intentado utilizar MTTESTER::RunEX5 pero hay un montón de errores básicos. ¿Qué estoy haciendo mal?

El código no compilado técnicamente no puede ser publicado en Codebase. El problema está en su lado.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
Библиотеки: Expert - Попробуйте использовать ChartApplyTemplate. Запустите советник на всех чартах, где уже есть запущенный советник.
  • 2017.08.28
  • Automated-Trading
  • www.mql5.com
После этого задать ему нормальное значение через ChartSetInteger. Если же нужно еще и советник запустить на том же чарте. а оттуда запускать на нужном уже нам чарте советник. Библиотека работает без DLL - полностью удовлетворяет требованиям Маркета
 

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

Bibliotecas: MultiTester

fxsaber, 2022.12.12 13:20

MTTESTER::RunEX5 - ejecuta EX5 en el terminal requerido (portable).

portable-restricción eliminada.