Code simple nécessaire pour l'EA (modifier deux ordres ouverts) - page 5

 
deVries:


Voulez-vous qu'il modifie le StopLoss pour les transactions d'achat et de vente avec le même pip ?

Réfléchissez à nouveau si c'est ce que vous voulez et si vous pouvez comprendre pourquoi il ne se modifie pas de cette façon.....

Ne modifiez pas non plus les trades avec chaque nouveau point dans la bonne direction, choisissez un pas de retard pour permettre la modification (xx Points peut choisir 10 ou plus pour éviter beaucoup d'erreurs de tradecontext trop occupé).

" !" est quelque chose comme pas dans le codage

Pour l'instant, je veux seulement que le TakeProfit soit modifié sur les deux transactions, le StopLoss est le même pour toute la transaction (pour les tests actuels en tout cas).
 

OK, j'ai trouvé le problème... L'écart est retourné comme le nombre de points...

Donc, changez ces lignes...

if(OrderTakeProfit() > Candle23Open - ((TakeProfitModified - 1) * Point) + Spread )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open - (TakeProfitModified * Point) + Spread, 0, Blue))

en ceci...

if(OrderTakeProfit() > Candle23Open + ((Spread - TakeProfitModified + 1 ) * Point)  )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open + ((Spread - TakeProfitModified) * Point) , 0, Blue))
 
RaptorUK:

OK, j'ai trouvé le problème... L'écart est retourné en tant que nombre de points. ...

Donc, changeons ces lignes. . .

en ceci...

Cela fonctionne, merci ! Les transactions d'achat et de vente sont modifiées maintenant, cependant, pour certaines raisons, elles sont modifiées plusieurs fois au cours des transactions et le take profit semble parfois aller plus loin que ce que les entrées exigent. Cela semble se produire à des moments entiers comme 2:00 ou 7:00, je ne suis pas sûr de la raison pour laquelle cela se produit, est-ce que par hasard cela a quelque chose à voir avec le spread qui change tout le temps ? Cela se produit à l'achat et à la vente, donc je pense que cela ne peut pas être le spread. La seule possibilité à laquelle je pense est que la bougie de 23h00 semble changer, mais cela n'aurait aucun sens et je ne sais pas comment tester cela.

 
Ajoutez quelques instructions Print ici et là pour vous montrer ce que font les variables, puis vous pourrez déterminer ce qui ne va pas et le corriger.
 

J'essaie d'utiliser ceci :

Print(Open [iBarShift(NULL, 0, StrToTime("23:00") )]);

Pour voir si le prix d'ouverture de la barre change mais il semble que l'impression soit aléatoire à chaque fois.

De plus, un jour, j'ai remarqué que les transactions ne suivent pas la règle de clôture de toutes les transactions à 22:59, indépendamment de ce qui se passe, je pense que cela a cessé de fonctionner.

J'utilise ceci

   if (TimeDayOfWeek(TimeCurrent())==5 && TimeCurrent()>=StrToTime("22:59")) { CloseAll(); return(0); }

et ceci

void CloseAll()
   {
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber()!=MagicNumber) continue;
         
      //
      //
      //
      //
      //
         
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
         {
         for(int c=0; c<3; c++)
            {
            RefreshRates();
            if (OrderType()==OP_BUY)
                  { double cp = Bid;}  
            else  {        cp = Ask;}
               
            OrderClose(OrderTicket(),OrderLots(),cp,0,Yellow);
            int err=GetLastError();
            if(err==4 || err==136 || err==137 || err==138 || err==146)
               {
               Sleep(5000); continue;
               }  
               break;                     
            }
            break;

Pour fermer les transactions à l'heure spécifiée.

 

Un message entièrement en majuscules a été supprimé.

Veuillez ne pas faire un usage excessif des majuscules lorsque vous postez un message, car cela est considéré comme un cri et est très impoli.