Mon compte
Déjà membre ? S'identifier
Non inscrit ? S'inscrire
 
+ Répondre à la discussion
Page 3 sur 4 PremièrePremière 1 2 3 4 DernièreDernière
Affichage des résultats 21 à 30 sur 34
  1. #21
    Membre Star harry le ravi est très intéressant
    Date d'inscription
    November 2009
    Messages
    208
    Pouvoir de réputation
    8

    En espérant que ca convient à ce qui était demandé.

    Salutations.

  2. #22
    Membre Star gillou33 est actif et passionnant gillou33 est actif et passionnant gillou33 est actif et passionnant
    Date d'inscription
    June 2008
    Localisation
    nord
    Messages
    1 293
    Pouvoir de réputation
    28

    Citation Envoyé par harry le ravi Voir le message
    En espérant que ca convient à ce qui était demandé.

    Salutations.
    re bon je viens de tester le l'ea reverse harry : a la compilation il n'y a plus d'erreurs ni d'alertes mais l'ea ferme la derniere ligne de la file et la remplace par rien
    donc voila desole de vous donner tant de travail
    merci a vous deux

  3. #23
    Membre Star louprebel is just really nice louprebel is just really nice louprebel is just really nice louprebel is just really nice Avatar de louprebel
    Date d'inscription
    February 2009
    Messages
    1 070
    Pouvoir de réputation
    42

    Citation Envoyé par gillou33 Voir le message
    re bon je viens de tester le l'ea reverse harry : a la compilation il n'y a plus d'erreurs ni d'alertes mais l'ea ferme la derniere ligne de la file et la remplace par rien
    donc voila desole de vous donner tant de travail
    merci a vous deux
    Mais de rien, ça nous fait réfléchir (en tout cas moi) sur la façon de coder des conditions un peu particulières dans un EA.

    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

  4. #24
    Membre Star gillou33 est actif et passionnant gillou33 est actif et passionnant gillou33 est actif et passionnant
    Date d'inscription
    June 2008
    Localisation
    nord
    Messages
    1 293
    Pouvoir de réputation
    28

    re ...je viens de refaire des test avec l'ea close and reverse et bien j'ai trouve une chose : il faut l'arreter avec le bouton Expert Advisor du haut et la serie des trades continuent a se stoper puis a s'inverser meme l'ea coupe .....franchement c'est la premiere fois que je vois cela ...avant je cliquais sur le graph puis expert advisor puis retirer le temps que je fasse tous cela il y avait souvant une autre boucle engagee
    donc voila pour que cela marche il faut engager la boucle puis couper l'ea , les trades se ferment puis se relancent en etant inverser
    encore merci a tous.... je remets l'ea pour que vous visualisiez le code
    Fichiers attachés

  5. #25
    Membre Star harry le ravi est très intéressant
    Date d'inscription
    November 2009
    Messages
    208
    Pouvoir de réputation
    8

    J'ai regardé l'EA, il semble avoir grosso modo la même logique.

    J'ai modifié un peu mon EA (boucle inversées, boucle de fermeture forcée).

    Peut être que ca ira mieu.

    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=a;i>=0;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=a;i>=0;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,0,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,0,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;
    		
    		while (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() );
    			}
    		}
    	  }
    	  
    	  return(0);
    	}
    }

    Je n'ai pas le temps le soir de jouer avec le compilateur.

  6. #26
    Membre Star gillou33 est actif et passionnant gillou33 est actif et passionnant gillou33 est actif et passionnant
    Date d'inscription
    June 2008
    Localisation
    nord
    Messages
    1 293
    Pouvoir de réputation
    28

    je viens de tester ...l'ea a la complilation il y avait une erreur et 0 alert l'erreur venait de la derniere parenthese ...je l'ai donc enleve(peut etre faut il la remplacer par autre choseje sais pas ) il n'y a plus d'erreur mais l'ea ne marche pas il ferme toutes les positions mais ne les remplace pas par d'autres ,
    Dernière modification par gillou33 ; 11/02/2010 à 11h03. Motif: fautes

  7. #27
    Membre Star harry le ravi est très intéressant
    Date d'inscription
    November 2009
    Messages
    208
    Pouvoir de réputation
    8

    Très bien alors quand c'est comme ca, il faut tester quelques valeures.

    Nous allons tester la valeur de a (pour voir si le nombre de trades est bien stocké) et la taille du tableau (pour voir si le redimentionnement est OK).

    Pour cela, juste apres la commande:
    Code:
    ArrayResize(tabl, a);
    Ajouter:
    Code:
    Alert (a);
    Alert (ArrayRange(tabl, 1););
    Déjà je crois que j'ai fait une érreure, modifier:
    Code:
    ArrayResize(tabl, a);
    par:
    Code:
    ArrayResize(tabl, a+1);
    En effet, si il y a 1 seul trade, le tableau a une taille de 0....

  8. #28
    Membre Star gillou33 est actif et passionnant gillou33 est actif et passionnant gillou33 est actif et passionnant
    Date d'inscription
    June 2008
    Localisation
    nord
    Messages
    1 293
    Pouvoir de réputation
    28

    re...non rien n'y fait cela coupe le tout et puis plus rien !!!

  9. #29
    Membre Star harry le ravi est très intéressant
    Date d'inscription
    November 2009
    Messages
    208
    Pouvoir de réputation
    8

    J'ai rajouté une boucle de passage des ordres inverses. En effet, il ce peut qu'il y ait un tick entre le début du script et le passage d'ordre (dans ce cas il ne passe pas), donc je boucle tant que l'ordre n'a pas été ouvert.

    De plus, j'ai ajouté des alertes:
    - Detection d'un ordre (OK Detect)
    - Fermeture d'un ordre (OK Close)
    - Renversement OP_BUY>OP_SELL (OK OP_BUY 2 OP_SELL)
    - Renversement OP_SELL>OP_BUY (OK OP_SELL 2 OP_BUY)

    Ce que je conseille pour bien tester le tout:

    - Ouvrir 3 ordres : 1 op_buy, 1 op_sell, 1 op_buy
    - lancer l'EA
    - voir les alertes

    Normalement il devrait y avoir:
    OK Detect
    OK Detect
    OK Detect
    OK Close
    OK Close
    OK Close
    OK OP_BUY 2 OP_SELL
    OK OP_SELL 2 OP_BUY
    OK OP_BUY 2 OP_SELL

    Si il n'y a pas tout çà, alors on pourra savoir où il y a un soucis dans le code.

    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=a;i>=0;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
    			Alert("OK Detect");
    		}
    		
    		CloseOrders();						//appel de fonction*
    		
    		for(i=a;i>=0;i--)					//boucle de création d'ordre
    		{
    			int ticket = -1;
    			switch(tabl[i][0])				//condition sur le type d'ordre
    			{
    											//Si ordre BUY >>> ouverture ordre SELL
    				case OP_BUY	:	while (ticket == -1) // tant que l’ordre n’est pas passé
    								{
    									Sleep(1000);      // on attend une seconde
    									RefreshRates();   //on rafraichit les valeurs du cours de la paire
    									ticket = OrderSend(Symbol(),OP_SELL,tabl[i][1],Bid,0,0,0,"My order",99999,0,Green); 
    								}
    								Alert("OK OP_BUY 2 OP_SELL");
    							break;
    											//Si ordre SELL >>> ouverture ordre BUY
    				case OP_SELL:	while (ticket == -1) // tant que l’ordre n’est pas passé
    								{
    									Sleep(1000);      // on attend une seconde
    									RefreshRates();   //on rafraichit les valeurs du cours de la paire
    									ticket = OrderSend(Symbol(),OP_BUY,tabl[i][1],Ask,0,0,0,"My order",99999,0,Green); 
    								}
    								Alert("OK OP_SELL 2 OP_BUY");
    							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;
    		
    		while (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() );
    			}
    		}
    		Alert("OK Close");
    	}  
    	return(0);
    }
    Dernière modification par harry le ravi ; 11/02/2010 à 15h07.

  10. #30
    Membre Star harry le ravi est très intéressant
    Date d'inscription
    November 2009
    Messages
    208
    Pouvoir de réputation
    8

    Et voila, ca marche mieux quand on veut débugger avec un compilateur...

    Code:
    bool reverse=true;
    
    int init()
    {
    	if (reverse==true)
    	{
    		int a = OrdersTotal()-1; 			//comptage des ordres
    		int OType[];						//définition du tableau de Type
    		double OLots[];                //définition du tableau de Lots
    		ArrayResize(OType, a+1);				//dimentionnement du tableau de Type
    		ArrayResize(OLots, a+1);				//dimentionnement du tableau de Lots
    		int i;								//définition compteur
    		for(i=a;i>=0;i--)					//boucle de selection d'ordre
    		{
    			OrderSelect(i,SELECT_BY_POS);	//selection ordre
    			OType[i] = OrderType();		//stockage type ordre
    			OLots[i] = OrderLots();		//stockage taille du lot
    		}
    		CloseOrders();						//appel de fonction*
    		
    		for(i=a;i>=0;i--)					//boucle de création d'ordre
    		{
    			int ticket = -1;
    			switch(OType[i])				//condition sur le type d'ordre
    			{
    											//Si ordre BUY >>> ouverture ordre SELL
    				case OP_BUY	:	while (ticket == -1) // tant que l’ordre n’est pas passé
    								{
    									Sleep(1000);      // on attend une seconde
    									RefreshRates();   //on rafraichit les valeurs du cours de la paire
    									ticket = OrderSend(Symbol(),OP_SELL,OLots[i],Bid,0,0,0,"My order",99999,0,Green); 
    								}
    							break;
    											//Si ordre SELL >>> ouverture ordre BUY
    				case OP_SELL:	while (ticket == -1) // tant que l’ordre n’est pas passé
    								{
    									Sleep(1000);      // on attend une seconde
    									RefreshRates();   //on rafraichit les valeurs du cours de la paire
    									ticket = OrderSend(Symbol(),OP_BUY,OLots[i],Ask,0,0,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;
    		
    		while (result == false)
    		{
    		   RefreshRates();
    			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() );
    			}
    		}
    	}  
    	return(0);
    }
    Il fonctionne au poil.
    Testé avec 3 ordres : Buy;Sell;Buy
    Résultat : Sell;Buy;Sell
    Taille du lot identique.

    J'ai placé le code dans la fonction init, ce qui permet de ne pas attendre le prochain tick.
    Par contre on ne peut pas ré-initialiser l'EA quand on clique sur le bouton "Expert Advisors", il faut retirer l'EA du graph puis le replacer....

    Je vous souhaite une très bonne réception.
    Dernière modification par harry le ravi ; 11/02/2010 à 22h27.

Discussions similaires

  1. Bonjour et merci
    Par Traniggo dans le forum Présentation des membres
    Réponses: 1
    Dernier message: 10/06/2009, 14h38
  2. aide-assistant des brokers peut aider dans votre trade
    Par simaoforex dans le forum Présentation des membres
    Réponses: 8
    Dernier message: 14/03/2009, 12h26
  3. J'aurai besoin de votre aide pour être orienté
    Par Christopher_trader dans le forum Systèmes de Trading Auto
    Réponses: 6
    Dernier message: 09/12/2008, 18h07
  4. Merci
    Par pipsforever dans le forum Comptoir des Traders Forex
    Réponses: 3
    Dernier message: 06/12/2008, 11h58
  5. votre aide m'est précieuse
    Par dinsie dans le forum Novice sur le Forex
    Réponses: 4
    Dernier message: 04/08/2008, 23h35

Ajouter aux Favoris | Plan du site | Archives | Forex | Contact