Trailing stop

Présentation, Développement, Améliorations et Ressources pour les Stratégies de Trading Automatique.

Modérateur : Administrateurs

Répondre
Message
Auteur
turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Trailing stop

#1 Message par turfer »

Bonjour,

Je ne suis pas certain de poster au bon endroit, si c'est le cas veuillez m'en excuser :oops:

Je rencontre un problème lors du développement de mon EA, mes stops suiveurs ne fonctionnent que pour les ordres BUY! Pour les ordres SELL, rien est pris en compte...
J'ai beau chercher, je ne trouve pas d'ou vient le problème donc si une bonne ame pouvait m'aider je suis preneur!

Merci d'avance

Voici la partie du code:

//************************************************
//********************Trailling stop**************

double ts;
int trailing_stop = 20;
for (int i = OrdersTotal()-1; i >= 0; i --) // on parcourt tous les ordres
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY) // trailing stop pour un ordre d’achat
{
ts = Bid-(Point*trailing_stop); // calcul trailing stop
if (OrderStopLoss()<ts) // test si nouveau plus haut
OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,White);
}
if (OrderType() == OP_SELL) // trailing stop pour un ordre de vente
{
ts = Ask+(Point*trailing_stop); // calcul trailing stop
if (OrderStopLoss()>ts) // test si nouveau plus bas
OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,White);
}
}
}

Avatar de l’utilisateur
madjes
Administrateur
Messages : 1194
Inscription : 28 oct. 2008, 16:00

Re: Trailing stop

#2 Message par madjes »

J'ai déplacé ton sujet dans la partie "trading auto" qui est plus approprié :wink:

Pour ton problème, j'ai remarqué que la couleur était la même pour tes 2 modifications d'ordres.
Dans ton ordersend, quelle est la couleur pour la short ?
"The market is like a beautiful woman-endlessly fascinating, endlessly complex, always changing, always mystifying." The Money Game - Adam Smith

L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte

turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Re: Trailing stop

#3 Message par turfer »

Bonjour Madjes,

Tout d'abord merci d'avoir placé mon post au bon endroit :wink:

Ensuite, pour ce qui est du trailing stop, pour mon ordersend BUY j'ai la couleur Blue et pour mon ordersend SELL j'ai la couleur Red.

J'ai changé la couleur comme tu l'as indiqué(voir code ci-dessous) mais ça ne fonctionne toujours pas, les ordres SELL ne sont pas pris en compte!

double ts;
int trailing_stop = 20;
for (int i = OrdersTotal()-1; i >= 0; i --) // on parcourt tous les ordres
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY) // trailing stop pour un ordre d’achat
{
ts = Bid-(Point*trailing_stop); // calcul trailing stop
if (OrderStopLoss()<ts) // test si nouveau plus haut
OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Blue);
}
if (OrderType() == OP_SELL) // trailing stop pour un ordre de vente
{
ts = Ask+(Point*trailing_stop); // calcul trailing stop
if (OrderStopLoss()>ts) // test si nouveau plus bas
OrderModify(OrderTicket(),OrderOpenPrice(),ts,OrderTakeProfit(),0,Red);
}
}
}

turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Re: Trailing stop

#4 Message par turfer »

Ce qui est étange, c'est que je modifie la ligne "OrderSelect(i, SELECT_BY_POS, MODE_TRADES);" par "OrderSelect(6,SELECT_BY_TICKET);" ou le 6 correspond à un ordre de BUY et ça fonctionne!

Si je mets 2, qui correspond à un ordre SELL, ça ne fonctionne plus!

Comme si la fonction OrderSelect ne lisait pas les ordres SELL!!!

Je ne comprends plus rien!

A l'aide :roll:

Merci

Avatar de l’utilisateur
madjes
Administrateur
Messages : 1194
Inscription : 28 oct. 2008, 16:00

Re: Trailing stop

#5 Message par madjes »

tu n'as pas d'erreur dans le journal ?
"The market is like a beautiful woman-endlessly fascinating, endlessly complex, always changing, always mystifying." The Money Game - Adam Smith

L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte

turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Re: Trailing stop

#6 Message par turfer »

Non aucune erreur!
Je cherche a afficher un popup pour chaque modification de trailing stop pour voir si tous les ordres ouverts sont bien traités, mais je ne sais pas comment faire...

kenoby
Membre assidu
Messages : 483
Inscription : 26 sept. 2010, 11:05

Re: Trailing stop

#7 Message par kenoby »

turfer a écrit :Non aucune erreur!
Je cherche a afficher un popup pour chaque modification de trailing stop pour voir si tous les ordres ouverts sont bien traités, mais je ne sais pas comment faire...
si tu avais regardé un topic plus bas t'aurai trouvé une fonction dans l'expert

Code : Tout sélectionner

void Trailing() {

double Trailingstop = 20;
double Ask1 = Ask + Trailingstop * Point;
double Bid1 = Bid - Trailingstop * Point;
if (OrdersTotal() > 0) {
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
if (Ask < OrderOpenPrice() - Trailingstop * Point && Ask1 < OrderStopLoss()) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask1, OrderTakeProfit(), 0, Green);
return (0);
}
}
if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
if (GetBid() > OrderOpenPrice() + Trailingstop * Point && Bid1 > OrderStopLoss()) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid1, OrderTakeProfit(), 0, Green);
return (0);
}
}
}
}}

turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Re: Trailing stop

#8 Message par turfer »

Bonjour Kenoby,

Merci pour ton aide :wink:

De quel topic parles-tu?ça m'intéresse puisque dans le code que tu m'as fourni il manque des déclarations de fonctions et de variables...

Merci encore

kenoby
Membre assidu
Messages : 483
Inscription : 26 sept. 2010, 11:05

Re: Trailing stop

#9 Message par kenoby »

turfer a écrit :Bonjour Kenoby,

Merci pour ton aide :wink:

De quel topic parles-tu?ça m'intéresse puisque dans le code que tu m'as fourni il manque des déclarations de fonctions et de variables...

Merci encore
Oui tu fais bien de le rappeler, j'ai oublier d'enlever les parties de l'EA en question...
maintenant il suffit juste de changer la valeur trailing stop ou de mettre la variable en globale, ca devrait marcher

Code : Tout sélectionner

void Trailing() {

double Trailingstop = 20;
double Ask1 = Ask + Trailingstop * Point;
double Bid1 = Bid - Trailingstop * Point;
if (OrdersTotal() > 0) {
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType() == OP_SELL) {
if (Ask < OrderOpenPrice() - Trailingstop * Point && Ask1 < OrderStopLoss()) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask1, OrderTakeProfit(), 0, Green);
return (0);
}
}
if (OrderType() == OP_BUY) {
if (Bid > OrderOpenPrice() + Trailingstop * Point && Bid1 > OrderStopLoss()) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid1, OrderTakeProfit(), 0, Green);
return (0);
}
}
}
}}

turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Re: Trailing stop

#10 Message par turfer »

Kenoby,

Désolé mais ton code ci-dessous ne fonctionne pas, il n'y a aucune modification de SL...

J'ai remarqué que c'était cette ligne là qui posait problème:
if (Ask < OrderOpenPrice() - Trailingstop * Point && Ask1 < OrderStopLoss())

et quand je la remplace par cette ligne là, ça fonctionne à nouveau mais que pour les BUY:
if (Ask1 < OrderStopLoss())

Si quelqu'un a la solution...

Merci d'avance

Avatar de l’utilisateur
madjes
Administrateur
Messages : 1194
Inscription : 28 oct. 2008, 16:00

Re: Trailing stop

#11 Message par madjes »

j'aurai besoin d'un plus gros morceau de ton code pour t'aider. Je pense que si ça ne marche qu'avec les buy c'est qu'il y a un problème ailleurs
"The market is like a beautiful woman-endlessly fascinating, endlessly complex, always changing, always mystifying." The Money Game - Adam Smith

L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte

Avatar de l’utilisateur
Fabien LABROUSSE
Administrateur
Messages : 17157
Inscription : 17 mars 2008, 19:41
Localisation : Paris, France

Re: Trailing stop

#12 Message par Fabien LABROUSSE »

Très bizarre.

Je ne vois pas d'où vient le problème.

Pour une fonction de trailing stop toute faite et complète tu peux peut être utiliser celle d'expert advisor builder turfer?

Dis moi si ça fonctionne pour toi.
Image

La Structure (par VideoBourse) : Formation sur mesure et évolutive pour optimiser compréhension et résultats en trading

📈 Informations et inscriptions : https://forms.gle/A2vnZduSwv2wPFSS7

🤝 Contact et échanges avec la communauté : Discord, mail, téléphone, LinkedIn...

📖 Marchés en aparté : Témoignages de traders, investisseurs, analystes et économistes sur les marchés financiers

Avatar de l’utilisateur
madjes
Administrateur
Messages : 1194
Inscription : 28 oct. 2008, 16:00

Re: Trailing stop

#13 Message par madjes »

le problème a été résolu fab, on a échangé quelques mail avec turfer et j'ai trouvé la solution.

En fait cela venait de cette partie du code :

Code : Tout sélectionner

if (OrderStopLoss()>ts) 
Le SL de base étant égale à zéro, il ne peut pas être supérieur à "ts" :lol:
"The market is like a beautiful woman-endlessly fascinating, endlessly complex, always changing, always mystifying." The Money Game - Adam Smith

L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte

Avatar de l’utilisateur
Fabien LABROUSSE
Administrateur
Messages : 17157
Inscription : 17 mars 2008, 19:41
Localisation : Paris, France

Re: Trailing stop

#14 Message par Fabien LABROUSSE »

madjes a écrit :le problème a été résolu fab, on a échangé quelques mail avec turfer et j'ai trouvé la solution.

En fait cela venait de cette partie du code :

Code:
if (OrderStopLoss()>ts)

Le SL de base étant égale à zéro, il ne peut pas être supérieur à "ts"
Putain il est fort ce mec...
Image

La Structure (par VideoBourse) : Formation sur mesure et évolutive pour optimiser compréhension et résultats en trading

📈 Informations et inscriptions : https://forms.gle/A2vnZduSwv2wPFSS7

🤝 Contact et échanges avec la communauté : Discord, mail, téléphone, LinkedIn...

📖 Marchés en aparté : Témoignages de traders, investisseurs, analystes et économistes sur les marchés financiers

turfer
Membre assidu
Messages : 318
Inscription : 22 juil. 2010, 11:18

Re: Trailing stop

#15 Message par turfer »

Ouep, j'ai pas mal galéré et j'avais pas trouvé...
Un grand merci!! :)

Répondre