L'EA ne fonctionne pas sur plusieurs paires, besoin d'aide - page 4

 
whroeder1 2016.12.14 03:35| 74.162.37.113ban FR
Keith Watford: boucler les ordres ouverts et ne compter que les transactions qui ont le numéro magique et le symbole graphique de l'EA.
Exactement, et ce n'est pas ce que fait votre dernier post.
 
J'ai supprimé votre autre sujet car il s'agissait du même sujet que celui-ci. J'ai copié le commentaire de WHRoeder et l'ai collé ici avant de le supprimer.
 
Keith Watford:
J'ai supprimé votre autre sujet car il s'agissait du même sujet que celui-ci. J'ai copié le commentaire de WHRoeder et l'ai collé ici avant de le supprimer.
Ok c'est bien, donc pour la boucle, doit-elle être encadrée de façon similaire à celle que j'ai pour le closeorder, et si oui, dois-je faire en sorte que le programme compte les ordres vers le haut ou vers le bas ?
 

   int buy_count=0;
   int sell_count=0;

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
        {
         if(OrderType()==OP_BUY)
           {
            buy_count++;
           }
         if(OrderType()==OP_SELL)
           {
            sell_count++;
           }
        }
     }

Quelque chose comme ça

Je compte toujours à rebours, sauf si j'ai une raison spécifique de ne pas le faire.

 
  1. Vous avez maintenant une boucle OrderSelect qui filtre sur le MN et le symbole.
  2. Maintenant, avec quel MN ouvrez-vous des transactions ?
 
Matt_Townsend:
Ok c'est bien, donc pour la boucle, doit-elle être encadrée de façon similaire à celle que j'ai pour le closeorder, et si oui, dois-je faire en sorte que le programme compte les ordres vers le haut ou vers le bas ?
J'ai donc maintenant une fonction de boucle à la fois sur ma fonction de fermeture d'ordre et sur ma fonction de fin d'ordre, mais il n'y a toujours pas de négociation indépendante. Bien qu'il ouvre des transactions et les ferme en fonction des paramètres définis, comme je peux le voir dans le testeur de stratégie, bien qu'il ne fonctionne pas sur plusieurs graphiques dans une démo en direct.
 
Matt_Townsend:
J'ai donc maintenant une fonction de boucle à la fois sur ma fonction de fermeture d'ordre et sur ma fonction de fin d'ordre, mais il n'y a toujours pas de trading indépendant. Bien qu'il ouvre des transactions et les ferme en fonction des paramètres définis, comme je peux le voir dans le testeur de stratégie, il ne fonctionne pas sur plusieurs graphiques dans une démo en direct.

Est-ce que chaque EA a un nombre magique différent ?

Montrez vos boucles que vous utilisez maintenant.

 
Keith Watford:

Est-ce que chaque EA a un nombre magique différent ?

Montrez les boucles que vous utilisez actuellement.

for(int i=OrdersTotal();i<=0;i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
    //--- Check for buy order
       if(fastma > slowma)
        {
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
            Print("Buy order opened :", OrderOpenPrice());
         else
            Print("Order failed to open : ", GetLastError());      
         return(0);
        }
     //--- Check for sell order          
       if(fastma < slowma)
        {
         if(OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,0,"",MagicNumber,0,Red))
            Print("Order opened : ", OrderOpenPrice());                
         else
            Print("Order failed to open : ", GetLastError());
         return(0);        
        }
        break;
      }

Voici la boucle ordersend

De même que j'ai le MN comme un int externe, donc je peux le changer sur chaque graphique sur lequel je mets l'EA.
 
Vous avez d'abord
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
ce qui est correct
Mais vous avez
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
Ce qui n'est pas correct. Et vous avez ignoré ma question.


Puis vous changez discrètement l'envoi en
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
Ce qui est maintenant correct.
Mais vous brisez discrètement la boucle de sélection.
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) break;
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
Ce qui n'est pas le cas.

En présence d'ordres multiples (un EA, plusieurs graphiques, plusieurs EA, trading manuel)
 
whroeder1:
D'abord, vous avez
      if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
ce qui est correct
Mais vous avez
         ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",0,0,Blue);
ce qui n'était pas le cas.

Alors vous changez tranquillement l'envoi en
         if(OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,0,"",MagicNumber,0,Blue))
Ce qui est correct.
et vous brisez la boucle de sélection.
      if(OrderMagicNumber()==MagicNumber || OrderSymbol()==Symbol()) continue;
Ce qui n'est pas le cas.
Donc je ne devrais pas avoir de Continue ou Break dans la boucle du tout ?
Raison: