![]() |
|
![]() |
|
Vendredi 10 Février 2012
Trader-Forex.fr en RSS
Je met le code de mon dernier poste.
Il y a peut être des erreures de syntaxe car je l'ai pas testé, je l'ai juste écrit sur un éditeur de texte:
Code:bool reverse=true; int start() { if (reverse==true) { int a = OrdersTotal()-1; //comptage des ordres int tabl[a,2]; //définition du tableau int i; //définition compteur for(i=0;i<=a;i++) //boucle de selection d'ordre { OrderSelect(i,SELECT_BY_POS); //selection ordre tabl[i,0] = OrderType(); //stockage type ordre tabl[i,1] = OrderLots(); //stockage taille du lot } CloseOrders(); //appel de fonction* for(i=0;i<=a;i++) //boucle de création d'ordre { switch(tabl[i,0]) //condition sur le type d'ordre { //Si ordre BUY >>> ouverture ordre SELL case OP_BUY : OrderSend(Symbol(),OP_SELL,tabl[i,1],Bid,,,,"My order",99999,0,Green); break; //Si ordre SELL >>> ouverture ordre BUY case OP_SELL: OrderSend(Symbol(),OP_BUY,tabl[i,1],Ask,,,,"My order",99999,0,Green); break; } } reverse=false; //Retourner une seule fois } } int CloseOrders() //*Fonction qui ferme tout les ordres en cours { for(int i= OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); bool result = false; switch(type) { //Fermeture des positions d’achat case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; // Fermeture des positions de vente case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); break; //Fermeture des ordres en attente case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT : case OP_SELLSTOP : result = OrderDelete( OrderTicket() ); } if(result == false) { Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() ); Sleep(3000); } } return(0); } }
bonjour et merci harry le ravi pour cette implication j'ai essaye de mettre ce fichier dans meta editor mais a la compillation il y a 14erreurs et 0alert ...et cela marche pas avez vous essaye de compiller le fichier ?
peut etre on pourait corriger les erreurs ...
a+++
Je n'ai pas le compilateur avec moi là.
Mais si vous me donnez les erreures (avec les numéros de lignes), je peux surrement vous aider
Woups je me suis trompé sur l'utilisation de mon tableau.
Voici le code corrigé, il dois y avoir moin d'érreures:
Code:bool reverse=true; int start() { if (reverse==true) { int a = OrdersTotal()-1; //comptage des ordres int tabl[a][2]; //définition du tableau int i; //définition compteur for(i=0;i<=a;i++) //boucle de selection d'ordre { OrderSelect(i,SELECT_BY_POS); //selection ordre tabl[i][0] = OrderType(); //stockage type ordre tabl[i][1] = OrderLots(); //stockage taille du lot } CloseOrders(); //appel de fonction* for(i=0;i<=a;i++) //boucle de création d'ordre { switch(tabl[i][0]) //condition sur le type d'ordre { //Si ordre BUY >>> ouverture ordre SELL case OP_BUY : OrderSend(Symbol(),OP_SELL,tabl[i][1],Bid,0,,,"My order",99999,0,Green); break; //Si ordre SELL >>> ouverture ordre BUY case OP_SELL : OrderSend(Symbol(),OP_BUY,tabl[i][1],Ask,0,,,"My order",99999,0,Green); break; } } reverse=false; //Retourner une seule fois } } int CloseOrders() //*Fonction qui ferme tout les ordres en cours { for(int i= OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); bool result = false; switch(type) { //Fermeture des positions d’achat case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; // Fermeture des positions de vente case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); break; //Fermeture des ordres en attente case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT : case OP_SELLSTOP : result = OrderDelete( OrderTicket() ); } if(result == false) { Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() ); Sleep(3000); } } return(0); } }
re je viens de refaire la compillation il y a maintenant 8erreurs
je pense que le mieux est de pouvoir corriger dans meta editor au fur et a mesure
merci encore
Si vous me donnez les erreures et la ligne je peux vous le débugger rapidement.
Bonjour Harry,
Le code mq4 ne reconnait pas "int tabl[a][2];".
La compilation renvoie l'erreur :
" 'a' - integer number expected "
Les erreurs suivantes sont directement liées à celle-ci. (tabl[i][0] et suivante).
![]()
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
Qu'est-ce que ca donne là?
Il me semble en fait qu'il n'est pas possible de dimentionner un tableau à l'aide d'une variable.Code:bool reverse=true; int start() { if (reverse==true) { int a = OrdersTotal()-1; //comptage des ordres int tabl[][2]; //définition du tableau ArrayResize(tabl, a); //dimentionnement du tableau int i; //définition compteur for(i=0;i<=a;i++) //boucle de selection d'ordre { OrderSelect(i,SELECT_BY_POS); //selection ordre tabl[i][0] = OrderType(); //stockage type ordre tabl[i][1] = OrderLots(); //stockage taille du lot } CloseOrders(); //appel de fonction* for(i=0;i<=a;i++) //boucle de création d'ordre { switch(tabl[i][0]) //condition sur le type d'ordre { //Si ordre BUY >>> ouverture ordre SELL case OP_BUY : OrderSend(Symbol(),OP_SELL,tabl[i][1],Bid,0,,,"My order",99999,0,Green); break; //Si ordre SELL >>> ouverture ordre BUY case OP_SELL : OrderSend(Symbol(),OP_BUY,tabl[i][1],Ask,0,,,"My order",99999,0,Green); break; } } reverse=false; //Retourner une seule fois } } int CloseOrders() //*Fonction qui ferme tout les ordres en cours { for(int i= OrdersTotal()-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); bool result = false; switch(type) { //Fermeture des positions d’achat case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; // Fermeture des positions de vente case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red ); break; //Fermeture des ordres en attente case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT : case OP_SELLSTOP : result = OrderDelete( OrderTicket() ); } if(result == false) { Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() ); Sleep(3000); } } return(0); } }
Or il y a une fonction qui permet de redimentionner la taille de la première dimention d'un tableau. Ca tombe bien s'est la dimention que je veux.
Dernière modification par harry le ravi ; 10/02/2010 à 16h49.
Je viens de vérifier la compilation.
J'ai juste corrigé en ajoutant "0" pour le S/L et pour le T/P.
La compilation est OK
Gillou : à toi de tester maintenant...
Edit : Oups ! Ce n'est pas le bon fichier. Voila qui est rectifié![]()
Dernière modification par louprebel ; 10/02/2010 à 17h23. Motif: Oups ! le bon fichier !
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