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

 
traveller00:
Sí, he copiado de los parámetros y he visto el formulario que espera ver. Pero no es muy conveniente manejar esos valores. Por eso he preguntado si es posible introducir el soporte de formatos de fecha allí, como en la fuente.

¿Está la persona editando los archivos del set?


Si los datos de entrada (set-files, CTRL+C tester, tpl-files y probablemente algo más) se muestran como una cadena en lugar de un número, toda la conveniencia de analizar estos datos se colapsará.

Ahora sólo hay tres tipos de datos de entrada: doble, largo y cadena. Los dos primeros son siempre números. Este incluye no sólo datetime, sino también color, enum y todo excepto string. Esto es muy conveniente.


Crear una entidad más, inutilizando así un montón de código, no es muy sensato. Hay comentarios. Este es un ejemplo de un conjunto generado automáticamente.

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

Bibliotecas: TesterCache

fxsaber, 2019.11.11 04:45

; saved on 2019.11.13 19:40:01
; Experts\Examples\MACD\MACD Sample LImitTP.ex5
; EURUSD
; 2019.09.01 - 2019.11.13
; 479, 10, Max, 47.92, -253.60
;
InpLots=0.1
InpTakeProfit=200||10||5||500||Y
InpTrailingStop=290||30||10||300||Y
InpMACDOpenLevel=5||5||5||200||Y
InpMACDCloseLevel=180||5||5||200||Y
InpMATrendPeriod=8||1||1||200||Y
;
; Pass = 1838
; initial_deposit = 10000.0
; withdrawal = 0.0
; profit = 479.15
; grossprofit = 479.15
; grossloss = 0.0
; maxprofit = 99.8
; minprofit = 0.0
; conprofitmax = 479.15
; maxconprofit = 479.15
; conlossmax = 0.0
; maxconloss = 0.0
; balance_min = 10000.0
; maxdrawdown = 0.0
; drawdownpercent = 0.0
; reldrawdown = 0.0
; reldrawdownpercent = 0.0
; equity_min = 9997.700000000001
; maxdrawdown_e = 253.6000000000004
; drawdownpercent_e = 2.457388152985982
; reldrawdown_e = 253.6000000000004
; reldrawdownpercnt_e = 2.457388152985982
; expected_payoff = 47.91500000000001
; profit_factor = 1.797693134862316 e+308
; recovery_factor = 1.889392744479493
; sharpe_ratio = 1.069726339729858
; margin_level = 1.797693134862316 e+308
; custom_fitness = 0.0
; deals = 15
; trades = 10
; profittrades = 10
; losstrades = 0
; shorttrades = 6
; longtrades = 4
; winshorttrades = 6
; winlongtrades = 4
; conprofitmax_trades = 10
; maxconprofit_trades = 10
; conlossmax_trades = 0
; maxconloss_trades = 0
; avgconwinners = 10
; avgconloosers = 0
; 
; version = 515
; copyright = Copyright 2000-2019, MetaQuotes Software Corp.
; name = TesterOptCache
; header_size = 2526
; record_size = 328
; expert_name = MACD Sample LImitTP
; expert_path = Experts\Examples\MACD\MACD Sample LImitTP.ex5
; server = MetaQuotes-Beta
; symbol = EURUSD
; (ENUM_TIMEFRAMES)period = PERIOD_M1
; date_from = 2019.09.01 00:00:00
; date_to = 2019.11.13 00:00:00
; date_forward = 1970.01.01 00:00:00
; opt_mode = 1
; ticks_mode = 4
; last_criterion = 0
; msc_min = 501
; msc_max = 2342
; msc_avg = 801
; group = demo (netting)
; trade_currency = USD
; trade_deposit = 10000
; trade_condition = 0
; trade_leverage = 100
; trade_hedging = 1
; trade_currency_digits = 2
; trade_pips = 0
; parameters_size = 28
; parameters_total = 6
; opt_params_size = 40
; opt_params_total = 5
; dwords_cnt = 0
; snapshot_size = 0
; passes_total = 0
; passes_passed = 2510

No sé los demás, pero a mí me parece conveniente que el archivo del conjunto contenga toda la información. Es muy rápido averiguar qué es, de dónde viene y cuánto.


¿No es suficiente?


ZZY Uno debe recordar que la fecha y optimizado, se puede establecer Inicio, Paso, Parada. Donde el paso, por supuesto, incluso en GUI se establece en segundos.

 
Me refería a copiar al buffer mediante CTRL+C para dejar el número como estaba. Pero el pegado mediante CTRL+V debería extenderse para entender tanto el formato antiguo (esencialmente ulong) como el nuevo formato de cadena. Esto no debería romper nada, pero lo ampliará para aquellos que quieran especificar una cadena en lugar de un número.
 
traveller00:
Me refería a copiar al buffer mediante CTRL+C para dejar el número como estaba. Pero para ampliar el pegado mediante CTRL+V para entender tanto el formato antiguo (esencialmente ulong) como el nuevo formato de cadena. Esto no debería romper nada, pero lo ampliará para aquellos que quieran especificar una cadena en lugar de un número.

Buena aclaración. Realmente no romperá nada. De verdad, no conozco gente que use CTRL+V para poner la fecha.

 
fxsaber:

Sin embargo, no conozco gente que use CTRL+V para poner la fecha.

Se trata más bien de fijar no la fecha, sino los parámetros en general, incluido el lugar donde se encuentra la fecha. En primer lugar, para que sea coherente, ya que el propio mql mantiene el formato de la fecha, y en segundo lugar, para que quede claro, para no multiplicar los comentarios. Para mis pruebas, genera los parámetros de entrada, que deben ser evaluados a ojo, y luego puedo añadirlos.

Slava:
Tal vez. Lo haremos.

¿Podemos al mismo tiempo apoyar la inserción (a través de CTRL+V) de parámetros de entrada para el Asesor Experto? Para las pruebas, se inserta en Parámetros perfectamente. Sin embargo, cuando no se trata de hacer pruebas sino simplemente de añadir un EA a un gráfico, la pestaña de parámetros de entrada no parece admitir el pegado y tengo que rellenar los mismos parámetros manualmente. Gracias.

 
traveller00:

¿Podemos admitir también la inserción (mediante CTRL+V) de parámetros de entrada para el EA? Se inserta perfectamente para las pruebas en Parámetros. Sin embargo, cuando no se trata de hacer pruebas sino simplemente de añadir un EA a un gráfico, la pestaña de parámetros de entrada no parece admitir el pegado y tengo que rellenar los mismos parámetros manualmente. Gracias.

Y CTRL+C.

 

Desarrolladores, ¡hola!

Por alguna razón, esta comprobación en OnTimer no siempre funciona en el probador de estrategias al ejecutar el EA (no sé qué tiene que ver):

    if (MQLInfoInteger(MQL_PROFILER) == 0 && MQLInfoInteger(MQL_TESTER) == 0) {
        Print("You can't use this version of EA in trade mode!");
        return;
    }

OnInit siempre parece funcionar bien.

PS. Al mismo tiempo, el comercio no siempre funciona. Añadiré los registros para los modos de prueba de por qué no se permite el comercio. Un fallo de flotación de algún tipo.
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

Me he encontrado con el hecho de que los objetos gráficos en el probador de MT5 en el modo de visualización no se representan como esperaba. He simplificado el Expert Advisor de prueba hasta el límite, debe construir un rectángulo por coordenadas tomadas en base a las barras 50 y 45. El código está en el archivo adjunto, pero toda la lógica está en una línea:

if (!IsNewBar()) return;
RectangleCreate(0, "5BarZone", 0, iTime(NULL,0,50), iHigh(NULL,0,50), iTime(NULL,0,0), iLow(NULL,0,45), clrGreen, STYLE_SOLID, 1, true, true);
ChartRedraw(0);

El EA debe redibujar dicho canal en cada nueva barra del TF actual. La imagen debería ser así:


En realidad, el rectángulo se extiende caóticamente tanto en longitud como en anchura y la imagen tiene este aspecto:


El código del EA de trabajo contiene muchos más objetos y cada uno de ellos está distorsionado aún más, lo que resulta en un lío.

Además, si realizamos una prueba visual del EA de prueba a baja velocidad, el renderizado es casi siempre correcto. Cuando ejecutoun Asesor Experto de prueba a la máxima velocidad o a una velocidad casi máxima, o ejecuto un EA real con muchos objetos incluso a la velocidad mínima, obtengo las distorsiones descritas anteriormente.

Por favor, indíqueme cuál es el problema y si se puede solucionar. He intentado buscar una respuesta pero no lo he conseguido.

Se agradece mucho cualquier ayuda en cualquier sentido.

Archivos adjuntos:
 
Andrey Pogoreltsev:

Desarrolladores, ¡hola!

Por alguna razón, la comprobación de OnTimer no siempre funciona en el probador de estrategias cuando se ejecuta el EA (no sé qué tiene que ver):

OnInit siempre parece funcionar bien.

PS. Al mismo tiempo, el comercio no siempre funciona. Añadiré los registros para los modos de prueba por los que no se permite el comercio. Un fallo de flotación de algún tipo.
Sustituye && por ||.
 
Grigori.S.B:

Me encuentro con el hecho de que los objetos gráficos en el probador de MT5 en el modo de visualización no se renderizan de la manera que yo pensaba. He simplificado el Expert Advisor de prueba hasta el límite, debe construir un rectángulo por coordenadas tomadas en base a las barras 50 y 45. El código está en el archivo adjunto, pero toda la lógica está en una línea:

El EA debe redibujar dicho canal en cada nueva barra del TF actual. La imagen debería ser así:


En realidad, el rectángulo se extiende caóticamente tanto en longitud como en anchura y la imagen tiene este aspecto:


El código del EA de trabajo contiene muchos más objetos y cada uno de ellos está distorsionado aún más, lo que resulta en un lío.

Además, si realizamos una prueba visual del EA de prueba a baja velocidad, el renderizado es casi siempre correcto. Sin embargo, cuando ejecutoun Asesor Experto de prueba a la velocidad máxima o casi máxima, o ejecuto un EA real con muchos objetos incluso a la velocidad mínima, obtengo las distorsiones descritas anteriormente.

Por favor, indíqueme cuál es el problema y si se puede solucionar. He intentado buscar una respuesta pero no lo he conseguido.

Se agradece mucho cualquier ayuda en cualquier sentido.

Prueba a cambiar simplemente las coordenadas de un objeto ya creado
 
Grigori.S.B:

Me he encontrado con el hecho de que los objetos gráficos en el probador de MT5 en el modo de visualización no se representan como esperaba. He simplificado al máximo el Asesor Experto de prueba, debe construir un rectángulo por coordenadas tomadas en base a las barras 50 y 45. El código está en el archivo adjunto, pero toda la lógica está en una línea:

El EA debe redibujar dicho canal en cada nueva barra del TF actual. La imagen debería ser así:


En realidad, el rectángulo se extiende caóticamente tanto en longitud como en anchura y la imagen tiene este aspecto:


El código del EA de trabajo contiene muchos más objetos y cada uno de ellos está distorsionado aún más, lo que resulta en un lío.

Además, si realizamos una prueba visual del EA de prueba a baja velocidad, el renderizado es casi siempre correcto. Sin embargo, cuando ejecuto un Asesor Experto de prueba a la velocidad máxima o casi máxima, o ejecuto un EA real con muchos objetos incluso a la velocidad mínima, obtengo las distorsiones descritas anteriormente.

Por favor, indíqueme cuál es el problema y si se puede solucionar. He intentado buscar una respuesta pero no lo he conseguido.

Se agradece mucho cualquier ayuda en cualquier sentido.

Compruebe el código en busca de errores, probablementeERR_OBJECT_ALREADY_EXISTS.

Hay que borrar el objeto antes de volver a crearlo o

Slava:
Prueba a cambiar simplemente las coordenadas de un objeto una vez creado