Bonjour à tous,
M'essayant à la création d'un EA, j'ai quelques soucis avec mon OrderSelect.
Mon souhait :
J'ai un Buy (Achat_1) en cours avec un Take Profit.
En attente, je souhaite positionner un BuyLimit (Achat_2) ou le supprimer si Achat_1 s'est cloturé avec le Take Profit.
Je pense qu'il me manque une commande après OrderSelect.
J'avais pensé à OrderType, mais je n'y arrive pas.
Merci pour votre aide
Code://+------------------------------------------------------------------+ // Ouverture comparaison Total<1 //| Buy Achat_1 | //+------------------------------------------------------------------+ Achat_1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+(TakeProfitLong/10000)," Achat_1",10000,0,Navy); if(Achat_1>0) { // Ouverture Achat_1 if(OrderSelect(Achat_1,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY Achat_1 en cours : ",OrderOpenPrice()); } // Fermeture Achat_1 else Print("Erreur ouverture BUY Achat_1 : ",GetLastError()); // Récupération dans la variable du prix d'achat de Achat_1 PrixAchat_1=OrderOpenPrice(); //+------------------------------------------------------------------+ // Ouverture comparaison Total<1 //| BuyLimit Achat_2 | //+------------------------------------------------------------------+ Achat_2=OrderSend(Symbol(),OP_BUYLIMIT,Lots,PrixAchat_1-(Montante/10000),3,0,0," Achat_2",10000,0,Navy); // Suppression du BuyLimit en attente si Achat_1 est cloturé if(OrderSelect(Achat_1,SELECT_BY_TICKET,MODE_TRADES)==true) { // Ouverture Suppression BuyLimit Achat_2 OrderDelete(Achat_2, Olive); return(0); } // Fermeture Suppression BuyLimit Achat_2 // Si l'ordre Achat_2 est passé if(Achat_2>0) { // Ouverture Achat_2 if(OrderSelect(Achat_2,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY Achat_2 en cours : ",OrderOpenPrice());
Affichage des résultats 1 à 7 sur 7
-
02/08/2012, 13h16 #1Membre lvl 5
- Date d'inscription
- June 2012
- Messages
- 6
- Pouvoir de réputation
- 3
MQL4 J'ai un trou dans ma raquette avec un OrderSelect
-
05/08/2012, 18h31 #2Membre lvl 5
- Date d'inscription
- July 2011
- Messages
- 12
- Pouvoir de réputation
- 4
Si ton Buylimit ne se place pas , le problème viens d'un de tes paramètre dans l'ordersend ...
Par contre pour fermer ton ordre en attente, tu dois tester si Orderselect(ACHAT_1) == FALSE et pas a true vu que tu veux le fermer si et seulement si ton premier ordre est fermer ...
La tu le ferme alors que l'autre est toujours ouvert ...
-
06/08/2012, 21h17 #3Membre lvl 5
- Date d'inscription
- June 2012
- Messages
- 6
- Pouvoir de réputation
- 3
Merci pour la réponse,
J'avance petit à petit
A tout hazard, si quelqu'un dispose d'un code simple permettant de fermer l'ensemble des ordres en attente disposant du même Magic Number
Merci
-
07/08/2012, 07h00 #4Membre lvl 75
- Date d'inscription
- October 2009
- Localisation
- Côte d'Ivoire, Abidjan
- Messages
- 88
- Pouvoir de réputation
- 6
salut
J'aurais aimé t'aider, mais ne connaissant pas grande chose dans la programmation, je ne peux que t'encourager.
-
08/08/2012, 17h56 #5Membre lvl 5
- Date d'inscription
- July 2011
- Messages
- 12
- Pouvoir de réputation
- 4
-
22/08/2012, 12h22 #6Membre lvl 5
- Date d'inscription
- June 2012
- Messages
- 6
- Pouvoir de réputation
- 3
Bonjour à tous,
Pour ceux qui comme moi considère qu'un forum est un lieu de partage de connaissance, et non pas une tractation commerciale pour une ligne de code, voici la ligne que j'ai trouvé pour intégrer le Magic Number.
Vous aurez en amont déclaré les variables.//+------------------------------------------------------------------+
//| Suppression des Buy Pending Order |
//+------------------------------------------------------------------+
// Récupération du nombre de Trades en cours
Total=OrdersTotal();
//Suppression du BuyLimit Achat_2 en attente
if(OrderSelect(Achat_1, SELECT_BY_TICKET, MODE_HISTORY)==true && Total==1)
{
for(int i=0; i<Total; i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
Cmd=OrderType();
// Les Ordres en attentes sont uniquement pris en compte
if(Cmd!=OP_BUY && Cmd!=OP_SELL && Magic==OrderMagicNumber())
{
// Suppression de l'ordre en attente
Result=OrderDelete(OrderTicket());
if(Result==TRUE) Print("Suppression du BUY Limit effectué : ",OrderTicket());
if(Result!=TRUE) Print("Erreur lors de la Suppression du BUY Limit : ",OrderTicket());
break;
}
}
else { Print( "Erreur lors de la sélection du Buy Limit à supprimer ", GetLastError()); break; }
}
}
return(0);
}
Cordialementbool Result;
int Cmd;
-
22/08/2012, 15h59 #7Membre lvl 5
- Date d'inscription
- July 2011
- Messages
- 12
- Pouvoir de réputation
- 4
Partage de connaissance pas de code source ;-)
La plus part des programmeur débutant, veulent qu'on leurs servent leur code tout prêt ! bah non désolé la vie sa ne fonctionne pas comme ça ...
Et puis mon "tu as des sous" était ironique de toute façon ...
Discussions similaires
-
Japon : l'économie dans un trou d’air en octobre
Par BNP Paribas dans le forum Actualité marchésRéponses: 0Dernier message: 30/11/2010, 16h17 -
Orderselect
Par TAAD dans le forum ProgrammationRéponses: 0Dernier message: 22/07/2010, 14h23 -
Trou de mémoire ?
Par morgane dans le forum Comptoir des Traders ForexRéponses: 0Dernier message: 11/11/2009, 19h47 -
Boucles et Fonctions avec language MQL4
Par Edellion dans le forum Systèmes de Trading AutoRéponses: 14Dernier message: 04/03/2009, 22h39
![]() |
|
Mercredi 20 Mars 2013
Trader-Forex.fr en RSS
LinkBack URL
About LinkBacks
Répondre avec citation

