Merci, mais j'ai déjà la formule, j'ai juste besoin de fixer la valeur du point parce que j'ai un compte en EUR et non en USD :
extern double MYSTOPLOSS = 50; // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL
extern double RISK =2; // 2% ACCOUNT RISK
double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* Point *100000 );
Et j'ai besoin de remplacer le Point par TICKVALUE* TICKSIZE, donc ça ressemblerait à ça
extern double MYSTOPLOSS = 50; // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL
extern double RISK =2; // 2% ACCOUNT RISK
double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* MarketInfo(Symbol(), MODE_TICKVALUE)*
MarketInfo(Symbol(), MODE_TICKSIZE) *100000 );
Si quelqu'un peut confirmer que cette idée est correcte, alors le problème est résolu, je suppose. Alors, s'il vous plaît, aidez-moi rapidement, et Joyeux Noël après !
Merci mais j'ai déjà la formule, j'ai juste besoin de fixer la valeur du point parce que j'ai un compte en EUR et non en USD.le code est le suivant :
Et j'ai besoin de remplacer le Point par TICKVALUE* TICKSIZE, donc cela ressemblerait à ceci
Si quelqu'un peut confirmer que cette idée est correcte, alors le problème est résolu, je suppose. Alors, s'il vous plaît, aidez-moi rapidement, et Joyeux Noël après !
Je ne peux pas le confirmer mais je suggère de le déboguer avec la fonction Alert() ; comme ceci ?
Je ne peux pas le confirmer mais je suggère de le déboguer avec la fonction Alert() ; comme ceci ?
ou
Et vous le confirmerez par vous-même.
Non, ce que je voulais dire, c'est qu'il est correct d'utiliser TICKVALUE* TICKSIZE ou TICKVALUE/ TICKSIZE comme WHRoeder l'a suggéré, car l'astérisque semble plus logique dans ce cas.
Proximus: WTF guys, shouldnt that be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE ? I think there is a big mistake there
double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* Point *100000 );
Par exemple EURUSD avec la devise du compte USD. Si TickValue est de 10$ et Ticksize=0.0001. Si le marché bouge de 0.0020, la valeur est de $10/0.0001 * 0.0020=$200 / par lot. 10 $ par pip * 20 pips / par lot. Si TickValue est 1$ et Ticksize=0.00001. Si le marché bouge de 0,0020, la valeur est de 1 $/0,00001 * 0,0020 = 200 $ / par lot. Il n'y a pas d'erreur ici.
C'est votre équation qui est fausse : 100 * stoploss, StopLevel, Point * 10000, etc. Relisez mon équation originale et résolvez-la pour la taille du lot.
Cela suppose que la CounterCurrency est la même que la AccountCurrency, et n'inclut pas le spread, et suppose à tort qu'un pip == un point sur un courtier à 5 chiffres et que ticksize == point.
Pas nécessairement. Solde du compte * pourcentage = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Note OOP-OSL inclut le SPREAD)
Ok, voici la version finale, veuillez confirmer si elle est correcte, je ne comprends pas pourquoi vous insistez sur votre truc DeltaPerlot alors qu'il ne fonctionne clairement pas dans ma situation, car j'ai un compte en EUR.
Le STOPSLIP ajoute un nombre X de pips au niveau actuel de la position+SPREAD.
J'utilise TICKVALUE * TICKSIZE parce que j'ai un compte en EUR et non en USD. Il est donc logique que la valeur du pip soit de 0,000007 au lieu de 0,00001 chez mon courtier à 5 chiffres, car elle est comptabilisée dans le taux de change de l'EUR.
Donc quelqu'un peut-il me confirmer si c'est correct, ou si ce n'est pas le cas alors corrigez MA formule, ne me donnez pas de liens vers d'autres posts, parce que je ne les comprends pas, corrigez juste ma fonction LOT() et je serai content, aidez-moi s'il vous plaît !
J'ai mal à la tête rien qu'en essayant de comprendre les parenthèses !
Pour être honnête, je n'ai absolument aucune idée de ce que vous essayez d'obtenir ici.
Je ne vois pas en quoi MODE_STOPLEVEL ou SPREAD sont pertinents, vous devriez sûrement baser vos calculs sur la distance stop-loss du prix actuel ?
La devise du compte ne devrait pas faire de différence, le calcul devrait être le même car TICKVALUE est dans la devise du compte.
Veuillez noter qu'en mettant votre ligne de code sur 2 lignes, le message n'est pas aussi large et est plus facile à lire sans avoir à scroller de droite à gauche :)
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Si j'ai bien compris la question, ceci fera l'affaire pour vous.
double free = AccountFreeMargin() ;
double potencial_loss,
double sum_potencial_loss = 0
double pips, lot_size ;
double pourcentage_depo = 5 ;
potencial_loss = (OrderLots() * (OrderOpenPrice() - OrderStopLoss()))*100000 ;
sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss ;
lot_size = ((((free-long_sum_potencial_loss) * percent_depo)/100.0)/pips)/100000 ;
Merci, mais j'ai déjà la formule, j'ai juste besoin de fixer la valeur du point parce que j'ai un compte en EUR et non en USD :
Et j'ai besoin de remplacer le Point par TICKVALUE* TICKSIZE, donc ça ressemblerait à ça
Si quelqu'un peut confirmer que cette idée est correcte, alors le problème est résolu, je suppose. Alors, s'il vous plaît, aidez-moi rapidement, et Joyeux Noël après !
J'ai supprimé votre code . . . .
Merci pour votre aide.
Merci mais j'ai déjà la formule, j'ai juste besoin de fixer la valeur du point parce que j'ai un compte en EUR et non en USD.le code est le suivant :
Et j'ai besoin de remplacer le Point par TICKVALUE* TICKSIZE, donc cela ressemblerait à ceci
Si quelqu'un peut confirmer que cette idée est correcte, alors le problème est résolu, je suppose. Alors, s'il vous plaît, aidez-moi rapidement, et Joyeux Noël après !
Je ne peux pas le confirmer mais je suggère de le déboguer avec la fonction Alert() ; comme ceci ?
ou
Alert("AccountEquity : ",(AccountEquity()," RISK : " ,RISK," MODE_STOPLEVEL : ", MODE_STOPLEVEL," MYSTOPLOSS : ",MYSTOPLOSS," MODE_TICKVALUE : " ,MODE_TICKVALUE," MODE_TICKSIZE : ,MODE_TICKSIZE);Et vous le confirmerez par vous-même.
Merci pour votre aide.
Je ne peux pas le confirmer mais je suggère de le déboguer avec la fonction Alert() ; comme ceci ?
ou
Et vous le confirmerez par vous-même.
Non, ce que je voulais dire, c'est qu'il est correct d'utiliser TICKVALUE* TICKSIZE ou TICKVALUE/ TICKSIZE comme WHRoeder l'a suggéré, car l'astérisque semble plus logique dans ce cas.
Proximus: WTF guys, shouldnt that be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE ? I think there is a big mistake there
Si TickValue est de 10$ et Ticksize=0.0001. Si le marché bouge de 0.0020, la valeur est de $10/0.0001 * 0.0020=$200 / par lot. 10 $ par pip * 20 pips / par lot.
Si TickValue est 1$ et Ticksize=0.00001. Si le marché bouge de 0,0020, la valeur est de 1 $/0,00001 * 0,0020 = 200 $ / par lot. Il n'y a pas d'erreur ici.
Ok, cela devrait être les étapes pour le CALCUL DE LA TAILLE DU VOLUME(maximum) :
(merci de me corriger si je me trompe ^_^)
AccountMoneyRisk = AccountMoney * Risk%
Cotation du compte/contre-devise = Cotation(Compte-devise/contre-devise)
CounterCurrencyRisk = AccountMoneyRisk * AccountCounterQuote
PipValue = CounterCurrencyRisk / StopLoss
LotTickValue = LotSize * TickSize
Volume = PipValue * LotTickValue
Exemple :
Devise du compte : EUR
Paire de devises : GBPUSD
Devise de base : GBP
Contre-devise : USD
Argent du compte : 5000 EUR
Risque : 1 %.
StopLoss : 200 pips (contre monnaie)
LotSize : 100000 (Contre-Devise)
Taille des tics : 0. 00001
AccountMoneyRisk = AccountMoney * Risk% = 5000 EUR * 1% = 50 EUR
Cotation de la devise du compte = Cotation (devise du compte/devise de la contrepartie) = Cotation (EUR/USD) = 1,5000
CounterCurrencyRisk = AccountMoneyRisk * AccountCounterQuote = 50 EUR * 1,5000 = 75 USD
PipValue = CounterCurrencyRisk / StopLoss = 75 / 200 = 0,375
LotTickValue = LotSize * TickSize = 100000 * 0.00001 = 1 USD
Volume = PipValue * LotTickValue = 0.375 * 1 USD = 0.375
Cela suppose que la CounterCurrency est la même que la AccountCurrency, et n'inclut pas le spread, et suppose à tort qu'un pip == un point sur un courtier à 5 chiffres et que ticksize == point.
Pas nécessairement. Solde du compte * pourcentage = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots * DeltaPerlot (Note OOP-OSL inclut le SPREAD)
Ok, voici la version finale, veuillez confirmer si elle est correcte, je ne comprends pas pourquoi vous insistez sur votre truc DeltaPerlot alors qu'il ne fonctionne clairement pas dans ma situation, car j'ai un compte en EUR.
C'est ma fonction de dimensionnement de lot :
- Le STOPSLIP ajoute un nombre X de pips au niveau actuel de la position+SPREAD.
- J'utilise TICKVALUE * TICKSIZE parce que j'ai un compte en EUR et non en USD. Il est donc logique que la valeur du pip soit de 0,000007 au lieu de 0,00001 chez mon courtier à 5 chiffres, car elle est comptabilisée dans le taux de change de l'EUR.
Donc quelqu'un peut-il me confirmer si c'est correct, ou si ce n'est pas le cas alors corrigez MA formule, ne me donnez pas de liens vers d'autres posts, parce que je ne les comprends pas, corrigez juste ma fonction LOT() et je serai content, aidez-moi s'il vous plaît !J'ai mal à la tête rien qu'en essayant de comprendre les parenthèses !
Pour être honnête, je n'ai absolument aucune idée de ce que vous essayez d'obtenir ici.
Je ne vois pas en quoi MODE_STOPLEVEL ou SPREAD sont pertinents, vous devriez sûrement baser vos calculs sur la distance stop-loss du prix actuel ?
La devise du compte ne devrait pas faire de différence, le calcul devrait être le même car TICKVALUE est dans la devise du compte.
Veuillez noter qu'en mettant votre ligne de code sur 2 lignes, le message n'est pas aussi large et est plus facile à lire sans avoir à scroller de droite à gauche :)