Trailing stop
Modérateur : Administrateurs
Trailing stop
Bonjour,
Je ne suis pas certain de poster au bon endroit, si c'est le cas veuillez m'en excuser
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);
}
}
}
Je ne suis pas certain de poster au bon endroit, si c'est le cas veuillez m'en excuser
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);
}
}
}
Re: Trailing stop
J'ai déplacé ton sujet dans la partie "trading auto" qui est plus approprié
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 ?
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
L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte
Re: Trailing stop
Bonjour Madjes,
Tout d'abord merci d'avoir placé mon post au bon endroit
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);
}
}
}
Tout d'abord merci d'avoir placé mon post au bon endroit
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);
}
}
}
Re: Trailing stop
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
Merci
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
Merci
Re: Trailing stop
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
L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte
Re: Trailing stop
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...
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...
Re: Trailing stop
si tu avais regardé un topic plus bas t'aurai trouvé une fonction dans l'expertturfer 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...
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);
}
}
}
}}
Re: Trailing stop
Bonjour Kenoby,
Merci pour ton aide
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
Merci pour ton aide
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
Re: Trailing stop
Oui tu fais bien de le rappeler, j'ai oublier d'enlever les parties de l'EA en question...turfer a écrit :Bonjour Kenoby,
Merci pour ton aide
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
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);
}
}
}
}}
Re: Trailing stop
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
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
Re: Trailing stop
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
L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte
- Fabien LABROUSSE
- Administrateur
- Messages : 17158
- Inscription : 17 mars 2008, 19:41
- Localisation : Paris, France
Re: Trailing stop
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.
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.
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
Re: Trailing stop
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 :
Le SL de base étant égale à zéro, il ne peut pas être supérieur à "ts"
En fait cela venait de cette partie du code :
Code : Tout sélectionner
if (OrderStopLoss()>ts)
"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
L'art d'être tantôt très audacieux et tantôt très prudent est l'art de réussir-Napoléon Bonaparte
- Fabien LABROUSSE
- Administrateur
- Messages : 17158
- Inscription : 17 mars 2008, 19:41
- Localisation : Paris, France
Re: Trailing stop
Putain il est fort ce mec...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"
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
Re: Trailing stop
Ouep, j'ai pas mal galéré et j'avais pas trouvé...
Un grand merci!!
Un grand merci!!