SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)Utiliser la valeur d'un tick ne vous convient pas ? A utiliser en corrélation avec TICK_SIZE, au lieu d'un concept mal défini comme "pip".
Utiliser la valeur d'un tick ne vous convient pas ? A utiliser en corrélation avec TICK_SIZE, au lieu d'un concept mal défini comme "pip".
Utiliser la valeur d'un tick ne vous convient pas ? A utiliser en corrélation avec TICK_SIZE, au lieu d'un concept mal défini comme "pip".
J'ai pris en compte votre proposition, je suis arrivé à un code qui fonctionne pour les paires classiques comme l'AUDUSD. Cependant le problème se pose pour les paires particulières comme les métaux ou celles incluant le JPY. Des propositions ?
double calculateLotSize() { double tickSize = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE); double tickValue = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_VALUE); double lotStep = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_STEP); if (tickSize == 0 || tickValue == 0 || lotStep == 0) { return false; } double riskMoney = AccountInfoDouble(ACCOUNT_BALANCE) * risk; double moneyLotStep = (SL * 0.0001 / tickSize) * tickValue * lotStep; if (moneyLotStep == 0) { return false; } double lotSize = MathFloor(riskMoney / moneyLotStep) * lotStep; if (lotSize < SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN)) { lotSize = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN); } else if (lotSize > SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX)) { lotSize = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX); } return lotSize; }
Les dernières conditions me permettent de réajuster les tailles de lot si jamais les lots calculés sont trop petits ou trop grands par rapport aux tailles de lot max/mini
J'ai pris en compte votre proposition, je suis arrivé à un code qui fonctionne pour les paires classiques comme l'AUDUSD. Cependant le problème se pose pour les paires particulières comme les métaux ou celles incluant le JPY. Des propositions ?
Les dernières conditions me permettent de réajuster les tailles de lot si jamais les lots calculés sont trop petits ou trop grands par rapport aux tailles de lot max/mini
Ok je suppose que votre SL est en pips, quelque chose comme SL=100 (pips) équivalent à 0.0100 (100*0.0001) en "prix" pour AUDUSD. Le problème de votre code est l'utilisation de la constante "0.0001", elle ne fonctionne pas pour les paires en JPY ou les métaux (qu'est-ce qu'un pip pour la quotation d'un métal ? Il vous faut donc définir un "pip" pour tous les cas de figures, par exemple :
double pip = SymbolInfoInteger(Symbol(),SYMBOL_DIGITS) <= 3 ? 0.01 : 0.0001; double moneyLotStep = (SL * pip / tickSize) * tickValue * lotStep;
Ok je suppose que votre SL est en pips, quelque chose comme SL=100 (pips) équivalent à 0.0100 (100*0.0001) en "prix" pour AUDUSD. Le problème de votre code est l'utilisation de la constante "0.0001", elle ne fonctionne pas pour les paires en JPY ou les métaux (qu'est-ce qu'un pip pour la quotation d'un métal ? Il vous faut donc définir un "pip" pour tous les cas de figures, par exemple :
Merci pour votre aide, ça fonctionne correctement pour les paires incluant le JPY. En revanche pour une paire de métaux comme le XAUUSD, le code renvoie une taille de lot de 20.2, contre un lot de 2.22 attendu après calcul sur une calculatrice de lots (myfxbook). Vous avez une idée pour corriger cela ?
C'est le problème d'un concept aussi vague qu'un pip. Qu'est-ce qu'un pip pour XAUUSD ?
Ajustez votre valeur de "pip" pour XAUUSD en conséequence.
C'est le problème d'un concept aussi vague qu'un pip. Qu'est-ce qu'un pip pour XAUUSD ?
Ajustez votre valeur de "pip" pour XAUUSD en conséequence.
Pour le gold c'est vrai qu'on parle pas vraiment en pips c'est plus pour le forex, ce que j'appelle pip en gold c'est 1 point donc 0.01 sur le graphique. J'imagine que je dois considérer 0.01 comme valeur pour la variable pip pour le gold si j'ai bien compris ?
Impossible pour moi de répondre car tout dépend des paramètres de XAUUSD chez votre courtier.
Si vous n'arrivez pas, postez les valeurs de tick value et tick size pour XAUUSD, ainsi que ce que vous obtenez comme résultats.
Impossible pour moi de répondre car tout dépend des paramètres de XAUUSD chez votre courtier.
Si vous n'arrivez pas, postez les valeurs de tick value et tick size pour XAUUSD, ainsi que ce que vous obtenez comme résultats.
Pour le gold :
Ticksize : 0.01
Tickvalue : 0.1
Comment allez-vous calculer la valeur que vous allez me donner ? Cela m'intéresse pour généraliser le système à toutes les devises
Pour le gold :
Ticksize : 0.01
Tickvalue : 0.1
Comment allez-vous calculer la valeur que vous allez me donner ? Cela m'intéresse pour généraliser le système à toutes les devises
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:
double pip = Symbol()=="XAUUSD" || Symbol()=="XAGUSD" ? 0.1 : SymbolInfoInteger(Symbol(),SYMBOL_DIGITS) <= 3 ? 0.01 : 0.0001;
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.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Bonjour bonsoir tout le monde,
Je débute en MQL5 (je regrette déjà Python haha) et j'aimerais obtenir de l'aide sur un point spécifique du code de mon EA à savoir la calcul de la taille des lots. Je sais bien que ce paramètre se calcule avec la formule suivante : lotSize = (accountBalance * risk) / SL (en pips) / pipValue
Jusque là tout va bien, j'arrive à récupérer les valeurs dont j'ai besoin et à positionner mon SL. Cependant ça se complique au niveau de pipValue. J'aimerais trouver une formule ou un snippet me permettant de le calculer pour un compte en euros (et non en $) et qui prend en compte les particularités des paires incluant le JPY et les métaux (XAU et XAG).
Si vous avez quelques minutes pour m'aider, je vous en serai reconnaissant ! J'ai déjà épluché Google et les différents sujets déjà ouverts sur ce forum, je ne trouve rien qui ne corresponde à mon cas.
Merci d'avance !