Per la considerazione dei professionisti.

 

Si parla di massimo prelievo. Qualcuno ha suggerito che il tester non lo misurava correttamente. Ho deciso di controllare. Ho scritto un codice e l'ho aggiunto al mio Expert Advisor e l'ho eseguito in modalità test. I risultati coincidono con quelli del tester. Il codice è fornito qui sotto.

Si prega di rivalutare la correttezza dell'algoritmo e vorrei sapere se il max drawdown può essere calcolato senza calcolare i massimi e i minimi.

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;}
// ............остальной код советника
 

Cosa intendi per non calcolare? Durante la corsa hai avuto sia il massimo che il minimo...

Il problema è che non conoscerete il drawdown in questo modo online - dovrete calcolarlo.

 
FAQ:

Cosa intendi per non calcolare? Durante la corsa hai avuto sia il massimo che il minimo...

Il problema è che non conoscerete il drawdown in questo modo online - dovrete calcolarlo.

La domanda sugli alti e bassi è sorta in relazione al post OnGoing, che si chiedeva a cosa servissero gli alti e i bassi. Così ho pensato che forse c'è qualche altro modo per calcolare il max drawdown, senza gli alti e bassi? Voglio dire, il calcolo è corretto in linea di principio? E quali problemi sorgeranno online? Puoi spiegare perché questo metodo non funziona? Forse vuoi dire che ci saranno problemi se c'è più di un Expert Advisor e non possiamo specificare questo codice per ognuno di loro. Se è questo che intende, capisco cosa intende. O qualcos'altro?

 
Perché dallo storico (ordini) puoi solo ricostruire la curva di equilibrio, ma la curva di equity dovrai sintetizzarla in base al numero di ordini aperti in ogni momento, il margine su ogni ordine (valuta) e i massimi / minimi del prezzo.
 
FAQ:
Perché potrete ricostruire la curva di equilibrio solo in base alla storia (ordini) ma dovrete sintetizzare la curva di equità in base al numero di ordini aperti in ogni momento, la quantità di deposito per ogni ordine (valuta) e i massimi ∙ minimi del prezzo.

Se abbiamo appena lanciato l'Expert Advisor e non c'è storia, non possiamo calcolare il massimo e il minimo del capitale memorizzandolo nelle variabili globali e calcolare il drawdown attuale e massimo al momento? O ho frainteso qualcosa? O forse state considerando una situazione in cui c'è già una certa storia. E volete calcolare il drawdown massimo tenendo conto della storia degli ordini, eseguendo lo script? Allora è chiaro. Ma se abbiamo appena iniziato a lavorare e non c'è storia o c'è, ma vogliamo calcolare il drawdown dal momento del lancio dell'Expert Advisor con questo codice, non c'è niente che possa impedirci di farlo?

 
khorosh:

Se abbiamo appena lanciato l'Expert Advisor e non c'è storia, non possiamo calcolare il massimo e il minimo del capitale memorizzandolo nelle variabili globali e calcolare il drawdown attuale e massimo al momento? O ho frainteso qualcosa? O forse state considerando una situazione in cui c'è già una certa storia. E volete calcolare il drawdown massimo tenendo conto della storia degli ordini, eseguendo lo script? Allora è chiaro. Ma se abbiamo appena iniziato a lavorare e non c'è storia o c'è, ma vogliamo calcolare il drawdown dal momento del lancio dell'Expert Advisor con questo codice, non c'è niente che possa impedirci di farlo?


Sarebbe più facile leggere le letture dell'indicatore di equità dal chirurgo, piuttosto che memorizzare qualcosa in alcune variabili.
 
Reshetov:
È più facile leggere l'indicatore di equità del chirurgo che memorizzare qualcosa in alcune variabili.
Sono d'accordo, il codice era destinato a funzionare nel tester, mi chiedevo solo se stavo contando correttamente in linea di principio, perché OnGoing mi ha dato dei dubbi.
 
Integer:

Non ti preoccupare, ha fatto un sacco di prese in giro off-topic qui, e nemmeno on-topic, ma completamente off-topic.
Grazie per l'incoraggiamento, perché stavo cominciando ad avere il dubbio di aver capito male.
 
khorosh:

Si parla di massimo prelievo. Qualcuno ha suggerito che il tester non lo misura correttamente.

Il tester misura correttamente il drawdown massimo del capitale, ma non tiene conto dello stato dell'equilibrio in questo momento, il che rende questa misurazione senza senso.

In altre parole, se l'ordine aperto sale e poi scende di 100 pips, il tester mostrerà un drawdown di 100 pips di equity mentre il drawdown reale che logicamente determina il rischio della strategia è uguale a zero. È chiaro che tali calcoli sono inutili per valutare i rischi della strategia.

 
khorosh:
Grazie per l'incoraggiamento, perché stavo cominciando ad avere il dubbio di aver capito male.


In generale, il max drawdown non è la differenza tra max equity e min equity. All'inizio, Max Equity= Equity, Min Equity= Equity, Drawdown=0. Se Equity>MaxEquity, allora consideriamo il drawdown come MaxEquity-MinEquity, se il valore ottenuto è superiore al drawdown calcolato in precedenza, memorizziamo il valore maggiore e azzeriamo subito il minimo - MinEquity=MaxEquity e memorizziamo il nuovo massimo MaxEquity=Equity.
 

Le linee rosse mostrano i drawdown, devi trovare il massimo.

Motivazione: