Bonjour.
voila je me suis lance dans la prog d'ea ( le mien ) je voudrais savoir comment faire pour couper toute mes positions si je dépasse un certain seuil de perte et éventuellement idem pour les gains .
merci de votre aide.
![]() |
|
![]() |
|
Dimanche 27 Mai 2012
Trader-Forex.fr en RSS
Bonjour.
voila je me suis lance dans la prog d'ea ( le mien ) je voudrais savoir comment faire pour couper toute mes positions si je dépasse un certain seuil de perte et éventuellement idem pour les gains .
merci de votre aide.
merci kerof , mais pourrais tu être plus précis je débute et j'ai du mal .
exemple je voudrais couper tout les ordres si ma perte >= a 200 $ ou si mes gains >= 250 $ comment tu met ça dans ton exemple ?
merci
bonjour blaxs .
oui j'utilise un magic number mais peut tu me faire un exemple de ce que tu dit avec du code ?
autre question :
je voudrais que a chaque fois que mon ea est en route recevoir un email cela est possible ?
et puis je avoir aussi par email les trades effectué et ceux en cours ?
merci pour votre aide.
salut zao77
je vais te donner le code pour calculer la perte / profit en cour
mais avant je vais t'expliquer comment ca marche , sinon tu pourras pas reproduire ce type de recherche pour un prochain code
c est inutile de copier sans comprendre ce que l'on copie
il te faut analyser les trades en cour
donc
double CalculateProfit() {
double Profit = 0;
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--)
{
création de la boucle , ca marche toujours pareil , ca peut être aussi int au lieu de double
ensuite
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
pour sélectionner les trade en cours
ensuite
if ( OrderMagicNumber() == MagicNumber)
pour filtrer les numéro de magic number
ensuite
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
pour sélectionner le type d'ordre
tu as aussi la solution
if (OrderType() == OP_BUY && OrderType() == OP_SELL)
ensuite
Profit += OrderProfit() ;
renvoie sur la variable Profit la valeur de OrderProfit() qui est une fonction mq4
et tu finis par ca
}
return (Profit);
}
tu n'as plus ensuite qu'a appeler la fonction CalculateProfit() par ce type de ligne en début de code
double calculduprofit;
calculduprofit = CalculateProfit()
et tu peux même le mettre en "comment" a l'écran
Comment(
"\n Balance: ",AccountBalance(),", Equitée: ",DoubleToStr(AccountEquity(),2),", Profit: "," = ",DoubleToStr(calculduprofit,2)
);
Bonjour,
Je cherche à comprendre ta logique : Pourquoi veux-tu fermer tout les trades quand ton gain/perte global atteint un niveau donné ?
Dans ce système, comment peux-tu déterminer ton money management (taille des lots) ?
Bref, ça me fait penser à un pêcheur qui déciderait de remonter toutes ses lignes quand un poisson est accroché à l'une d'elle, ou que un ligne a perdu son appât...
En toute logique, chaque ligne, chaque trade, devrait être traité indépendamment l'un de l'autre.
![]()
Cordialement,
Loup
--------------------------------------------------------------------------------------
Gestion des trades : EA Trade Management, par Tanaïs et Loup REBEL
----------------------- Indicateur de Money Management
Chandelier Multi TF : Graphique multi Chandeliers Multi Time Frame
merci pour toutes vos reponses vraiment un grand merci .
Louprebel je désire fermé tout mes trades pour une question de sécurité mon EA tourneras probablement tout le temps MAIS il peut arriver que je doivent m'absenter une demi journée et on ne sait jamais ce qui peut arriver car apres tout ce n'est qu'un EA .
la taille de mes lots est fonction du capital et du risque que je désire prendre .
Comme je connais pas ( ou disons maintenant presque pas MQL ) je regarde donc des codes pour mieux comprendre pas facile .
par exemple si vous pouvez repondre a cette question :
dans un code dont je desire prendre une partie j'ai un probleme car il ne corresponds pas tout a fait a ce que je souhaite .
ps) pour info mon EA est une martingale( la mienne ) + hedging .
je recherche le moyen de modifier ce code afin d'avoir comme lot 0.1 ensuite 0.1+0.1 etc..
dans ce code il utilise un coeficient multiplicateur donc comment modifier cette partie de code pour avoir +0.1 voici le code :
lot2 = NormalizeDouble(lot*MathPow(Multiplier, SellLevel)+LotInc, LotDigits);
par defaut LotInc est a zero et multiplier est a 2 ce qui donne 0.1,0.2,0.4,0.8 etc...
moi je voudrais 0.1,0.2,0.3,0.4etc..
merci
c'est simple voici comment tu dois passer tes ordres
il te faut analyser la taille du dernier lot passé et ensuite ajouter le lotsize qui est le lot de base , dans l'exemple 0.1
pour savoir la taille du dernier lot il te faut créer une fonction double
c'est le même principe que la fonction précédente
et dans le passage d'ordre en taille de lot appel la taille précédente + le lot size
Bonjour a tous .
Blaxs oui la base c'est blessing j'ai reussi a trouver une traduction et comme pour sur fire hedging j'ai reussi a modifier le principe et a l'optimiser .
Vamm972 desolé mais je comprends pas tres bien peut tu me faire un exemple avec le bout de code que j'ai mis ?
puis je garder le meme code et mettre la valeur 1 a multiplier et 0.1 a lotinc ? cela me donneras le resultat que je veux ?
merci
Dernière modification par zhao77 ; 30/10/2010 à 04h46.
Bonjour a tous .
Ta solution Blaxs pour des lots linéaire ne fonctionne pas dommage.
Bonjour Keroff .
non a cause de mon algo les stop loss ne sont pas une bonne solution sinon je vous aurais pas demandé votre aide je suis néophyte ok mais pas a ce point .
mais pour le moment Keroff mon plus gros problème c'est de mettre des lots linéaire en prenant l'exemple que j'ai mis plus haut , la je sèche c'est mon plus gros souci donc si tu as une solution ça serais génial .
merci