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

 
fxsaber:
Probablemente se lo perdió.

No se lo perdieron.

El formato actual del archivo opt no lo permite. Tienes que pensar en ello.

 
Slava:

No se lo perdieron.

El formato actual de opt-file no permite. Tienes que pensar en ello.

No parece que haya que cambiar nada.

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

Bichos, errores, preguntas

Slava, 2019.04.19 15:11

//+------------------------------------------------------------------+
//| входные параметры тестирования                                   |
//+------------------------------------------------------------------+
struct TestCacheInput
  {
   wchar_t           name[64];
   int               flag;                    // оптимизируемый параметр
   int               type;                    // тип TYPE_XXX
   int               digits;                  // количество знаков после запятой
   int               offset;                  // смещение в буфере параметров
   int               size;                    // размер значения параметра в буфере
   //--- 0-start,1-step,2-stop
   union { INT64 integers[3]; double numbers[3]; };
  };
   m_header.header_size=sizeof(TestCacheHeader)+m_inputs.Total()*sizeof(TestCacheInput)+m_header.parameters_size;
//--- кешируемая запись содержит номер прохода (при генетике - номер по порядку), структуру результатов тестирования (если математика, то 1 double), буфер оптимизируемых параметров и генетический проход

Cada entrada está definida por una estructura con los campos necesarios.

 

Ahora es muy fácil averiguar

  • Todos los ajustes del comprobador y los parámetros de entrada del EA.
  • Todos los datos estadísticos de cada pase de optimización.


Pero no podemos averiguar, por ejemplo, los datos estadísticos de una sola pasada. Está claro, hay un formato tst. Pero sería conveniente usar CTRL+C en el Probador de Estrategias para formar un archivo de conjunto con datos estadísticos en la pestaña de Backtest.

Foro sobre trading, sistemas de trading 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
;
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
;
; 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

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.


Esta es la salida de los campos de la estructura ExpTradeSummary.

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

Bichos, errores, preguntas

Slava, 2019.04.19 15:11

//+------------------------------------------------------------------+
//| Структура для статистики торговли                                |
//+------------------------------------------------------------------+
struct ExpTradeSummary;

#define  TOSTRING(A) #A + " = " + (string)(A) + "\n"

  string ToString( void ) const
  {
    return(
      TOSTRING(initial_deposit) +      // начальный депозит
      TOSTRING(withdrawal) +           // снято средств
      TOSTRING(profit) +               // общая прибыль (+)
      TOSTRING(grossprofit) +          // общий плюс
      TOSTRING(grossloss) +            // общий минус
      TOSTRING(maxprofit) +            // максимально прибыльная сделка
      TOSTRING(minprofit) +            // максимально убыточная сделка
      TOSTRING(conprofitmax) +         // прибыль максимальной последовательности прибыльных сделок
      TOSTRING(maxconprofit) +         // максимальная прибыль среди последовательностей
      TOSTRING(conlossmax) +           // убыток максимальной последовательности убыточных сделок
      TOSTRING(maxconloss) +           // максимальный убыток среди последовательностей
      TOSTRING(balance_min) +          // минимальное значение баланса (для расчёта абсолютной просадки)
      TOSTRING(maxdrawdown) +          // максимальная просадка по балансу
      TOSTRING(drawdownpercent) +      // отношение максимальной просадки по балансу к её пику
      TOSTRING(reldrawdown) +          // максимальная относительная просадка по балансу в деньгах
      TOSTRING(reldrawdownpercent) +   // максимальная относительная просадка по балансу в процентах
      TOSTRING(equity_min) +           // минимальное значение equity (для расчёта абсолютной просадки по equity)
      TOSTRING(maxdrawdown_e) +        // максимальная просадка по equity
      TOSTRING(drawdownpercent_e) +    // отношение максимальной просадки по equity к её пику (+)
      TOSTRING(reldrawdown_e) +        // максимальная относительная просадка по equity в деньгах
      TOSTRING(reldrawdownpercnt_e) +  // максимальная относительная просадка по equity в процентах
      TOSTRING(expected_payoff) +      // матожидание выигрыша (+)
      TOSTRING(profit_factor) +        // показатель прибыльности (+)
      TOSTRING(recovery_factor) +      // фактор восстановления (+)
      TOSTRING(sharpe_ratio) +         // коэффициент Шарпа (+)
      TOSTRING(margin_level) +         // минимальный уровень маржи
      TOSTRING(custom_fitness) +       // пользовательский фитнесс - результат OnTester (+)
      TOSTRING(deals) +                // общее количество сделок
      TOSTRING(trades) +               // количество сделок out/inout
      TOSTRING(profittrades) +         // количество прибыльных
      TOSTRING(losstrades) +           // количество убыточных
      TOSTRING(shorttrades) +          // количество шортов
      TOSTRING(longtrades) +           // количество лонгов
      TOSTRING(winshorttrades) +       // количество прибыльных шортов
      TOSTRING(winlongtrades) +        // количество прибыльных лонгов
      TOSTRING(conprofitmax_trades) +  // максимальная последовательность прибыльных сделок
      TOSTRING(maxconprofit_trades) +  // последовательность максимальной прибыли
      TOSTRING(conlossmax_trades) +    // максимальная последовательность убыточных сделок
      TOSTRING(maxconloss_trades) +    // последовательность максимального убытка
      TOSTRING(avgconwinners) +        // среднее количество последовательных прибыльных сделок
      TOSTRING(avgconloosers)          // среднее количество последовательных убыточных сделок
    );
 

Desde que han aparecido cachés potentes, es conveniente mejorarlos un poco.

Ahora sólo un parámetro de usuario, OnTester, entra en la caché.


Sería muy conveniente que ExpTradeSummary fuera tres o cinco veces más grande. Que se puede rellenar a través de

double OnTester( double &CustomDoubles[] );


Ahora se analizan las cachés y obviamente falta la posibilidad de ver no el valor de un usuario sino de varios.

 

Esta es una petición a Metaquotes, espero que al menos un desarrollador del equipo pueda responder (lo siento si ya fue preguntado, pero debido al problema del idioma no puedo encontrar la respuesta en el foro ruso).

¿Es razonable pedir una mejora del Probador de Estrategias para añadir la posibilidad de probar una situación de trading que nunca se da en una cuenta demo, sino sólo en una cuenta real? Ya que es realmente difícil crear un código robusto sin poder probarlo completamente.

Esto se debe principalmente al mercado centralizado (a diferencia del Forex / CFD). Por ejemplo, la cumplimentación parcial de órdenes, en una cuenta demo esto nunca ocurre (que yo sepa), pero en una cuenta real de futuros o acciones es habitual. Sería muy útil disponer de una herramienta para simular esa situación.

El relleno parcial es sólo un ejemplo, si Metaquotes cree que es una buena idea trabajar con tales características, estoy dispuesto a centralizar las ideas y proporcionar una descripción detallada de tales características. (Nada específico para mis propias necesidades).

Gracias por su tiempo y su(s) respuesta(s).

 
Alain Verleyen:

es difícil crear un código fiable sin poder probarlo completamente.

Para ello, todo desarrollador serio de EAs depura sus librerías de trading durante años en cuentas reales.

No hay forma de crear un código fiable sin él.

 
fxsaber:

Para ello, todo desarrollador serio de EAs depura sus librerías de trading durante años en cuentas reales.

No hay manera de crear un código fiable sin él.

Eso es cierto, pero ayudaría a evitar un montón de pruebas que requieren mucho tiempo en una cuenta real.

 
Artyom Trishkin:

Es cierto, pero esta funcionalidad ayudaría a evitar muchas pruebas que consumen mucho tiempo en una cuenta real.

Hay dos objetivos.

  1. Una biobiota comercial adecuada que sólo sabe mostrar el estado actual de las operaciones, el historial de operaciones y el envío de órdenes. Aquí el probador no es casi ninguna ayuda. La demostración puede ayudar mucho si realizamos pruebas de estrés. No podemos hacerlos en la cuenta real: son caros. Por lo tanto, sólo hay una demostración en un gran número de símbolos/servidores. Estas bibliotecas se cuentan con los dedos de una mano.
  2. Practicar la lógica comercial de las ejecuciones parciales, los redireccionamientos, etc. Este punto es mucho más fácil que el primero. Y repetidamente resuelto en la misma MT4 sin ningún probador. Es realmente sencillo.

Un probador sólo puede ayudar con el segundo punto, el simple. Se puede implementar la ejecución parcial midiendo el supuesto "techo de liquidez" de la ST. Pero eso sería una estimación extremadamente cruda.


Debe entenderse que las mejoras del Comprobador son frenos adicionales aunque no se utilicen dichas mejoras.

 
fxsaber :

Para ello, todo desarrollador serio de EAs depura sus librerías de trading durante años en cuentas reales.

No hay forma de crear un código fiable sin él.

Te aconsejo que me olvides de una vez por todas de tus inútiles y arrogantes posts.

Por desgracia, no tengo forma de filtrarlos.

No respondas nunca a mi post, por favor, me haces perder el tiempo por las notificaciones.

 
Alain Verleyen:

Te aconsejo que me olvides de una vez por todas de tus inútiles y arrogantes posts.

Le recomiendo que empiece a cuestionar la idoneidad de los traductores automáticos de ruso que utiliza.


Por desgracia, no tengo forma de filtrarlos.

No respondas nunca a mi post, por favor, me haces perder el tiempo por las notificaciones.

DE ACUERDO.