A la consideración de los profesionales.

 

Se habla de una reducción máxima. Alguien sugirió que el probador no lo estaba midiendo correctamente. Decidí comprobarlo. Escribí un código y lo añadí a mi Asesor Experto y lo ejecuté en el modo de prueba. Los resultados coincidieron con el probador. El código se proporciona a continuación.

Por favor, vuelva a evaluar la corrección del algoritmo y le gustaría saber si la reducción máxima se puede calcular sin calcular los máximos y los mínimos.

double MaxDrawDown;
int deinit() {
 Print("MaxDrawDown=",MaxDrawDown);
   return (0);
} 

start(){ 
  static double MaxEquity;
  static double MinEquity;
         double DrawDown;
  static bool flag;
 
  if(!flag)
    {
     MaxEquity=AccountEquity();
     MinEquity=AccountEquity();
     flag = true;
    } 
  if(AccountEquity()>MaxEquity) 
    {MaxEquity=AccountEquity();MinEquity=AccountEquity();}
  
  if(AccountEquity()<MinEquity) 
    {MinEquity=AccountEquity();}
  
  DrawDown=MaxEquity-MinEquity;
  
  if(DrawDown>MaxDrawDown ) 
    {MaxDrawDown=DrawDown;}
// ............остальной код советника
 

¿Qué quieres decir con que no calculas? Durante la carrera tuviste tanto el máximo como el mínimo...

El problema es que no conocerás la reducción de la deuda de este modo en línea, sino que tendrás que calcularla.

 
FAQ:

¿Qué quieres decir con que no calculas? Durante la carrera tuviste tanto el máximo como el mínimo...

El problema es que no conocerás la reducción de la deuda de este modo en línea, sino que tendrás que calcularla.

La pregunta sobre los altos y bajos surgió en relación con el post OnGoing, que se preguntaba para qué servían los altos y bajos. Así que pensé que tal vez hay alguna otra manera de calcular la reducción máxima, sin los máximos y mínimos? Es decir, ¿el cálculo es correcto en principio? ¿Y qué problemas surgirán en línea? ¿Puede explicar por qué no funciona este método? Quizás te refieras a que habrá problemas si hay más de un Asesor Experto y no podemos especificar este código para cada uno de ellos. Si eso es lo que quieres decir, entiendo lo que quieres decir. ¿O algo más?

 
Porque a partir del histórico (órdenes) sólo puedes reconstruir la curva de balance, pero la curva de renta variable tendrás que sintetizarla en función del número de órdenes abiertas en cada momento, el margen de cada orden (divisa) y los máximos / mínimos del precio.
 
FAQ:
Porque sólo podrás reconstruir la curva de balance por el historial (órdenes) pero tendrás que sintetizar la curva de renta variable en función del número de órdenes abiertas en cada momento, el importe del depósito de cada orden (moneda) y los máximos ∙ mínimos del precio.

Si acabamos de lanzar el Asesor Experto y no hay historial, ¿no podemos calcular el máximo y el mínimo de la equidad almacenándolo en variables globales y calcular el drawdown actual y el máximo en este momento? ¿O he entendido algo mal? O tal vez esté pensando en una situación en la que ya hay algunos antecedentes. ¿Y quieres calcular la reducción máxima teniendo en cuenta el historial de órdenes, ejecutando el script? Entonces está claro. Pero si acabamos de empezar a trabajar y no hay historial o lo hay, pero queremos calcular el drawdown desde el momento de lanzar el Expert Advisor con este código, ¿no hay nada que nos impida hacerlo?

 
khorosh:

Si acabamos de lanzar el Asesor Experto y no hay historial, ¿no podemos calcular el máximo y el mínimo de la equidad almacenándolo en variables globales y calcular el drawdown actual y el máximo en este momento? ¿O he entendido algo mal? O tal vez esté pensando en una situación en la que ya hay algunos antecedentes. ¿Y quieres calcular la reducción máxima teniendo en cuenta el historial de órdenes, ejecutando el script? Entonces está claro. Pero si acabamos de empezar a trabajar y no hay historial o lo hay, pero queremos calcular el drawdown desde el momento de lanzar el Expert Advisor con este código, ¿no hay nada que nos lo impida?


Sería más fácil leer las lecturas del Indicador de Equidad desde el Cirujano, en lugar de almacenar algo en algunas variables.
 
Reshetov:
Es más fácil leer el indicador de equidad del cirujano que almacenar algo en algunas variables.
Estoy de acuerdo, el código estaba pensado para ejecutarse en el tester, sólo me preguntaba si estaba contando correctamente en principio, porque OnGoing me generaba dudas.
 
Integer:

No te preocupes, ha hecho muchas burlas fuera de tema aquí, y ni siquiera dentro del tema, sino completamente fuera del tema.
Gracias por los ánimos, porque empezaba a tener dudas de que había entendido mal.
 
khorosh:

Se habla de una reducción máxima. Alguien sugirió que el probador no lo está midiendo correctamente.

El comprobador mide correctamente la reducción máxima de la renta variable, pero no tiene en cuenta el estado de equilibrio en ese momento, lo que hace que esta medición no tenga sentido.

En otras palabras, si la orden se elevó inicialmente y luego se redujo en 100 pips, el probador mostrará una reducción de 100 pips de la equidad, mientras que la reducción real que determina lógicamente el riesgo de la estrategia es igual a cero. Está claro que estos cálculos son inútiles para evaluar los riesgos de la estrategia.

 
khorosh:
Gracias por los ánimos, porque empezaba a tener dudas de que me estaba equivocando.


En general, la reducción máxima no es la diferencia entre el patrimonio máximo y el mínimo. Al principio, Max Equity= Equity, Min Equity= Equity, Drawdown=0. Si la Equidad>MaxEquity, entonces consideramos la reducción como MaxEquity-MinEquity, si el valor obtenido es mayor que la reducción calculada anteriormente, memorizamos el valor mayor y restablecemos el mínimo de una vez - MinEquity=MaxEquity y memorizamos el nuevo máximo MaxEquity=Equity.
 

Las líneas rojas muestran las detracciones, hay que encontrar el máximo.

Razón de la queja: