A l'attention des professionnels.

 

Il est question d'un prélèvement maximal. Quelqu'un a suggéré que le testeur ne le mesurait pas correctement. J'ai décidé de le vérifier. J'ai écrit un code et l'ai ajouté à mon conseiller expert et l'ai exécuté en mode test. Les résultats ont coïncidé avec ceux du testeur. Le code est fourni ci-dessous.

Merci de réévaluer l'exactitude de l'algorithme et j'aimerais savoir si le drawdown maximum peut être calculé sans calculer les maxima et minima.

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

Que voulez-vous dire par "pas de calcul" ? Pendant la course, vous avez eu le maximum et le minimum...

Le problème est que vous ne connaîtrez pas le drawdown de cette manière en ligne - vous devrez le calculer.

 
FAQ:

Que voulez-vous dire par "pas de calcul" ? Pendant la course, vous avez eu le maximum et le minimum...

Le problème est que vous ne connaîtrez pas le drawdown de cette manière en ligne - vous devrez le calculer.

La question sur les hauts et les bas s'est posée en rapport avec le post OnGoing, qui se demandait à quoi servaient les hauts et les bas. J'ai donc pensé qu'il existait peut-être un autre moyen de calculer le drawdown maximum, sans les hauts et les bas ? Je veux dire, le calcul est-il correct en principe ? Et quels problèmes se poseront en ligne ? Pouvez-vous expliquer pourquoi cette méthode ne fonctionnera pas ? Vous voulez peut-être dire qu'il y aura des problèmes s'il y a plus d'un conseiller expert et que nous ne pouvons pas spécifier ce code pour chacun d'eux. Si c'est ce que vous voulez dire, je comprends ce que vous voulez dire. Ou quelque chose d'autre ?

 
Car à partir de l'historique (ordres) vous ne pouvez reconstruire que la courbe d'équilibre, mais la courbe d'équité vous devrez la synthétiser en fonction du nombre d'ordres ouverts à chaque instant, de la marge sur chaque ordre (devise) et des hauts ∙ bas du cours.
 
FAQ:
Car vous ne pourrez reconstruire la courbe d'équilibre que par l'historique (ordres) mais vous devrez synthétiser la courbe d'équité en fonction du nombre d'ordres ouverts à chaque instant, du montant du dépôt pour chaque ordre (devise) et des hauts ∙ bas du cours.

Si nous venons de lancer le conseiller expert et qu'il n'y a pas d'historique, ne pouvons-nous pas calculer le maximum et le minimum de l'équité en le stockant dans des variables globales et calculer le drawdown actuel et maximum à ce moment-là ? Ou ai-je mal compris quelque chose ? Ou peut-être envisagez-vous une situation où il y a déjà une certaine histoire. Et vous voulez calculer le drawdown maximal en tenant compte de l'historique des ordres, en exécutant le script ? Alors c'est clair. Mais si nous venons de commencer à travailler et qu'il n'y a pas d'historique ou qu'il y en a un, mais que nous voulons calculer le drawdown à partir du moment où nous lançons le conseiller expert avec ce code, n'y a-t-il rien qui puisse nous empêcher de le faire ?

 
khorosh:

Si nous venons de lancer le conseiller expert et qu'il n'y a pas d'historique, ne pouvons-nous pas calculer le maximum et le minimum de l'équité en le stockant dans des variables globales et calculer le drawdown actuel et maximum à ce moment-là ? Ou ai-je mal compris quelque chose ? Ou peut-être envisagez-vous une situation où il y a déjà une certaine histoire. Et vous voulez calculer le drawdown maximal en tenant compte de l'historique des ordres, en exécutant le script ? Alors c'est clair. Mais si nous venons de commencer à travailler et qu'il n'y a pas d'historique ou qu'il y en a un, mais que nous voulons calculer le drawdown à partir du moment où nous lançons le Conseiller Expert avec ce code, n'y a-t-il pas quelque chose qui peut nous empêcher de le faire ?


Il serait plus facile de lire les lectures de l'indicateur d'équité à partir du chirurgien, plutôt que de stocker quelque chose dans certaines variables.
 
Reshetov:
Il est plus facile de lire l'indicateur d'équité du chirurgien que de stocker quelque chose dans certaines variables.
Je suis d'accord, le code était destiné à fonctionner dans le testeur, je me demandais juste si je comptais correctement en principe, car OnGoing m'a donné des doutes.
 
Integer:

Ne vous inquiétez pas, il a fait beaucoup de moqueries hors sujet ici, et même pas sur le sujet, mais complètement hors sujet.
Merci pour cet encouragement, car je commençais à avoir des doutes sur mon incompréhension.
 
khorosh:

Il est question d'un prélèvement maximal. Quelqu'un a suggéré que le testeur ne le mesure pas correctement.

Le testeur mesure correctement le drawdown maximal de l'équité mais il ne tient pas compte de l'état de l'équilibre à ce moment, ce qui rend cette mesure absurde.

En d'autres termes, si l'ordre ouvert monte puis descend de 100 pips, le testeur affichera un drawdown de 100 pips de l'équité alors que le drawdown réel qui détermine logiquement le risque de la stratégie est égal à zéro. Il est clair que de tels calculs sont inutiles pour évaluer les risques stratégiques.

 
khorosh:
Merci pour cet encouragement, car je commençais à avoir des doutes sur mon incompréhension.


En général, le drawdown maximum n'est pas la différence entre l'équité maximum et l'équité minimum. Au début, Max Equity= Equity, Min Equity= Equity, Drawdown=0. Si Equity>MaxEquity, alors nous considérons le drawdown comme MaxEquity-MinEquity, si la valeur obtenue est supérieure au drawdown calculé précédemment, nous mémorisons la plus grande valeur et réinitialisons le minimum immédiatement - MinEquity=MaxEquity et mémorisons le nouveau maximum MaxEquity=Equity.
 

Les lignes rouges montrent les drawdowns, vous devez trouver le maximum.

Raison: