A l'attention des professionnels. - page 3

 
khorosh:
Le but de votre post est de montrer comment compter correctement le drawdown ? Merci pour l'EA. Il me semble seulement que votre code, s'il est inclus dans un EA réel, déterminera le drawdown pour un ou plusieurs trades ouverts depuis le moment de l'ouverture jusqu'à la fermeture de ces trades, mais il ne cherchera pas le drawdown maximal de toute la durée de fonctionnement de l'EA. Ou est-ce que je me suis trompé ? Pouvez-vous critiquer mon code ? Effectue-t-il correctement sa tâche consistant à trouver le drawdown maximal ?


Ce code (le mien) sauvegarde exactement le drawdown maximum pendant toute la durée de fonctionnement du Conseiller Expert, c'est-à-dire qu'il ne réinitialise pas les variables max et min lors de la fermeture d'une ou plusieurs transactions, lorsque l'équité est égale au solde et qu'il n'y a pas de min pendant toute la durée.

Je l'ai écrit purement à titre d'exemple et pour rester simple - à titre de comparaison avec un testeur.

A propos de votre code, il n'est pas clair pourquoi l'utiliser ici :

  if(AccountEquity()>MaxEquity) 
    {MaxEquity=AccountEquity();MinEquity=AccountEquity();}

MinEquity est remis à zéro.

MinEquity=AccountEquity();

Dans une situation où AccountEquity() > MaxEquity, il n'est pas possible de fermer ou d'ouvrir un ordre (ou des ordres) pour diverses raisons, et encore moins de réinitialiser MinEquity=AccountEquity() ;

En général, la même chose peut être programmée de différentes manières, l'essentiel étant de choisir le bon algorithme.

Si vous voulez insérer la variable dans un véritable EA, il est préférable d'écrire les variables dans des fichiers (avec contrôle).

A mon avis, le drawdown maximal et le drawdown relatif ne sont pas pris en compte dans le testeur ; j'ai donné un exemple de lien plus haut.

 
serferrer:


Ce (mon) code sauvegarde exactement le drawdown maximum pour toute la durée de l'EA, c'est-à-dire qu'il ne réinitialise pas les variables max et min lors de la fermeture d'une ou plusieurs transactions, lorsque l'équité est égale au solde et qu'il n'y a pas de min pour toute la durée.

Je l'ai écrit purement à titre d'exemple et pour rester simple - à titre de comparaison avec un testeur.

A propos de votre code, il n'est pas clair pourquoi l'utiliser ici :

MinEquity est remis à zéro.

Dans une situation où AccountEquity() > MaxEquity, il n'est pas possible de fermer ou d'ouvrir un ordre (ou des ordres) pour diverses raisons, et encore moins de réinitialiser MinEquity=AccountEquity() ;

En général, la même chose peut être programmée de différentes manières, l'essentiel étant de choisir le bon algorithme.

Si vous voulez insérer la variable dans un véritable EA, il est préférable d'écrire les variables dans des fichiers (avec contrôle).

A mon avis, le testeur prend à tort en compte le drawdown maximal et le drawdown relatif, le lien vers l'exemple que j'ai donné précédemment.

MinEquity est réinitialisé au moment où un nouveau maximum est mis à jour, ce qui signifie que le minimum précédent est dépassé et qu'après la formation du nouveau maximum, il est nécessaire de trouver un nouveau bas qui peut donner un drawdown plus élevé que celui qui a été trouvé précédemment par rapport au nouveau maximum. Notez que nous devons calculer le drawdown relatif au dernier maximum par le minimum formé après ce maximum et sélectionner le maximum parmi eux. Voir la confirmation dans les posts d'Integer, qui pense aussi que c'est correct. Je pense que c'est la raison pour laquelle vous avez une divergence avec le testeur.

 
Serferrer, votre variante affichera un drawdown erroné, en cas de succession d'ordres perdants. Vous pouvez avoir 10 ordres perdants d'affilée avec une perte de 100 chacun, et alors vous perdrez 1000 et le drawdown maximum ne sera que de 100, ce qui est faux.
 
Integer:
Serferrer, votre variante montrera un drawdown incorrect dans le cas d'une série d'ordres perdants. Vous pouvez avoir 10 ordres perdants d'affilée avec 100 pertes chacun et drainer 1000, alors que le drawdown maximum ne sera que de 100, ce qui est faux.


Je répète - je l'ai écrit purement à titre d'exemple et plus simplement (pour plus de clarté) - à titre de comparaison avec le testeur.

Et ce n'est en aucun cas définitif.

Si vous réalisez le code final, vous devez y ajouter de nombreuses autres fonctionnalités.

 
serferrer:


Je le répète - je l'ai écrit purement à titre d'exemple et pour simplifier - à titre de comparaison avec le testeur.

Et ce n'est en aucun cas définitif.

Si vous réalisez le code final, vous devez y ajouter de nombreuses autres fonctionnalités.


Pour un exemple de quoi et une comparaison avec quoi dans le testeur ? Votre code ne calcule pas le drawdown du compte et ne peut pas être utilisé comme exemple pour calculer le drawdown du compte et ne peut donc pas être utilisé pour comparer les calculs du drawdown du compte dans le testeur.
 
khorosh:

MinEquity est réinitialisé au moment où un nouveau maximum est rafraîchi, ce qui signifie que le minimum précédent est dépassé et qu'après la formation du nouveau maximum, il est nécessaire de trouver un nouveau bas qui puisse donner un drawdown plus élevé que le drawdown trouvé précédemment par rapport au nouveau maximum . Notez que nous devons calculer le drawdown relatif au dernier maximum par le minimum formé après ce maximum et sélectionner le maximum parmi eux. Voir confirmation dans les posts d'Integer, qui pense aussi que c'est correct. Je pense que c'est la raison pour laquelle vous avez une divergence avec le testeur.


C'est votre opinion, je la comprends et je pense moi-même qu'elle n'est pas correcte et que le drawdown devrait être calculé sur la base du prix du ou des ordres ouverts plutôt que sur le maximum de l'équité, je le répète :

Si, par exemple, dans une situation où AccountEquity()>MaxEquity, il n'est pas possible de clôturer ou d'ouvrir un ou plusieurs ordres, pour diverses raisons.

 
Integer:

Pour un exemple de quoi et une comparaison avec quoi dans le testeur ? Votre code ne calcule pas le drawdown du compte, et ne peut donc pas être utilisé comme exemple pour le calcul du drawdown du compte, et ne peut donc pas être utilisé pour comparer les calculs du drawdown du compte dans le testeur.


Pour la comparaison et un exemple clair, pour faire comprendre, même aux non-programmeurs, que le testeur ne calcule pas le drawdown correctement.

Drawdown absolu - drawdown du solde initial montrant de combien le solde a diminué par rapport à la valeur initiale ;
Maximal Drawdown - le drawdown montrant le drawdown maximal fixé en termes monétaires (la différence entre le dernier maximum et le minimum actuel) ; peut dépasser le Drawdown absolu, montrant le montant de la perte possible même si le trade est positif ;
Drawdown relatif - le drawdown relatif, montre le pourcentage de drawdown maximum par rapport au dépôt initial;

http://www.onix-trade.net/forum/index.php?showtopic=82146&st=0&p=342915&#entry342915

Entier:

Êtes-vous d'accord que dans mon exemple - Maximum drawdown 1013.00 (50.85%) Relative drawdown 50.85% (1013.00) et ceci est correct ?

 
serferrer:


À titre de comparaison et d'exemple, même les non-programmeurs comprennent que le testeur ne calcule pas correctement.

Drawdown absolu - drawdown du solde initial, qui montre de combien le solde a diminué par rapport à la valeur initiale ;
Maximal Drawdown - le drawdown montrant le drawdown maximal fixé en termes monétaires (la différence entre le dernier maximum et le minimum actuel) ; peut dépasser le Drawdown absolu, montrant le montant de la perte possible même si le trade est positif ;
Drawdown relatif - le drawdown relatif, montre le pourcentage de drawdown maximum par rapport au dépôt initial;

http://www.onix-trade.net/forum/index.php?showtopic=82146&st=0&p=342915&#entry342915

Entier:

Êtes-vous d'accord que dans mon exemple - Maximum drawdown 1013.00 (50.85%) Relative drawdown 50.85% (1013.00) et ceci est correct ?


Non, je ne suis pas d'accord avec vous en tout ou en partie.
 
khorosh:

Expliquez où vous avez trouvé un paramètre tel que le minimum drawdown, dans quel rapport. Je pense que la baisse maximale de l'équité trouvée pendant le test peut être répétée dans le trading réel, donc je pense qu'il est correct de la compter dans le maximum.

Désolé pour le prélèvement minimum, c'est une erreur. J'ai corrigé le message. Pourquoi cela n'a-t-il pas de sens de calculer le drawdown maximum des capitaux propres sur un ordre ouvert en vol libre ?
 
Reshetov:

Si vous n'en avez pas besoin ou ne comprenez pas à quoi il sert, pourquoi participer à la conversation et même imposer votre opinion ?
Lisez attentivement. J'ai demandé pourquoi les autres en ont besoin, pas moi. Je n'impose pas mon opinion, j'ai juste expliqué la logique.