Calcul de la valeur d'un pip - page 2

 
Alain Verleyen #:

Cette valeur pour "Tickvalue"  de 0.1 semble incorrecte. Cela devrait être 1, et ça explique pourquoi vous obtenez une valeur 10 fois trop grande pour l'or. Malheureusement il arrive que certains courtiers ne configurent pas correctement les paramètres pour certains symboles Non-Forex.

Si votre code doit fonctionner avec ce courtier seulement je vous suggère de "tricher" un peu en adaptant la formule pour le pip avec XAUUSD:

Sinon si vous voulez faire les choses dans les règles de l'art il y a d'autres méthodes pour calculer le volume requis.

J'utilise un compte de démonstration MT5 pour mes tests robot, ça vient sûrement de là ?

Si possible j'aimerais que vous m'expliquiez la méthode la plus propre pour calculer la taille de lots, celle qui respecte les "règles de l'art" selon vous.

Merci d'avance

 
pool-dev # :

J'utilise un compte de démonstration MT5 pour mes tests robot, ça vient sûrement de là ?

Si possible j'aimerais que vous m'expliquiez la méthode la plus propre pour calculer la taille de lots, celle qui respecte les "règles de l'art" selon vous.

Merci d'avance

Voici une méthode :

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE) parfois zéro

Fernando Carreiro , 2022.08.23 17:41

Tu peux! Ce sont les étapes que je prends. Je fournis à la fonction une taille de lot égale à la "Taille de lot max" autorisée pour le symbole en question, puis je calcule le ratio nécessaire pour atteindre le risque fractionnaire que je souhaite appliquer, afin d'obtenir le volume correct pour la commande. J'aligne ensuite cela avec le "Lot Step" et le vérifie enfin par rapport aux lots maximum et minimum autorisés pour le symbole.

La raison pour laquelle j'utilise les lots "maximaux" au lieu des lots "1,0" comme valeur de référence est qu'il n'y a aucune garantie que la valeur de 1,0 se situe dans les valeurs minimales et maximales autorisées. Étant donné qu'utiliser 1,0, ou le maximum, donne de toute façon des résultats équivalents (en utilisant la méthode du ratio), je choisis d'utiliser les "lots max" comme point de référence qui offre également le plus de précision pour le calcul.

Quelque chose comme ça ...

 // This code will not compile. It is only a example reference

if ( OrderCalcProfit ( eOrderType, _Symbol , dbLotsMax, dbPriceOpen, dbPriceStopLoss, dbProfit ) )
{
   dbOrderLots = fmin ( fmax ( round ( dbRiskMax * dbLotsMax / ( -dbProfit * dbLotsStep ) )
               * dbLotsStep, dbLotsMin ), dbLotsMax ); 
      
   // the rest of the code ...
};

 
Alain Verleyen #:

Voici une méthode :


Merci pour cette réponse ! :D

 
Hello @pool-dev

Je suis nul en programmation MQL5, je débute, j'espère que tu a trouvé une solution a ton problème, 

Je pense que tu a une mauvaise compréhension et différenciation du tick, du pip et du point,

Si tu a une question sur le calcule de lot ou autre sur le Forex n'hésites pas (attention partie théorique uniquement pas de codage MQL5 car je débute) 😊