Fractal Break Out-Stuck - page 3

 

J'ai changé les paramètres dans les deux fonctions OrderModify et OrderSelect, sans résultat...

Le flux semble logique et j'ai vérifié deux fois tous les paramètres.


Cela se produit pendant le backtest, mais cela ne devrait pas avoir d'importance.

 
//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;
    if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;
    double SL=OrderStopLoss();
    bool   result;
    int    error;
    //Different OrderTypes
    if(OrderType()==OP_BUY)
       {
        if(BreakEven > 0) 
          {
           if(Bid - OrderOpenPrice() >= Point * BreakEven * mypoint)  //make input for BreakEven    StopLoss)
              {                                                                   //and don't forget mypoint !!!
               if(OrderStopLoss() < OrderOpenPrice()) 
                 {
                  SL = OrderOpenPrice()+Point;
                 }
              }
          }
       }
    if(OrderType()==OP_SELL)              
       {
         //For you to do
          
              
               
                
               
                  
                   
             
             
       }
    if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);}       
   }

Rendre le codage plus facile à lire

voir la différence avec votre propre écriture, c'est plus facile à compter {{{{{{{{{{{{{{{ }}}}}}}}}}}}}}

 
ZacharyRC:

J'ai toujours des difficultés. J'ai effectué des erreurs pour en trouver la raison.


Le journal a rapporté :

1) Erreur 4051=Paramètre incorrect

2) Ticket invalide pour la modification de la commande

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


   if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
   if(OrderType()==OP_BUY)
      {
      if(Move.BE && StopLoss > 0) 
         {
         if(Bid - OrderOpenPrice() >= Point * StopLoss)
            {
            if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
               {
               OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
               Print("Cant Modify Order"+GetLastError(),i);
               }
            } 
         }
      }
   else
      {
      if(Move.BE && StopLoss > 0) 
         {
         if(OrderOpenPrice() - Ask >= Point * StopLoss)
            {
            if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
               {
               OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
               Print("Cant Modify Order"+GetLastError(),i);
               }
            }
         }
      }
   }

Pour un achat, comment le SL peut-il être supérieur au prix d'ouverture? OrderOpenPrice() + Point * MoveStopTo

 
deVries:

pour BUY il est possible d'avoir OrderStopLoss() au-dessus de OrderOpenPrice() après que la modification ait réussi et que le trade soit en profit.
LOL . . oops <sourire rouge>.
 
RaptorUK:
LOL . . oups <sourire rouge>.


Attention à la honte, supprimez mon message
 
ZacharyRC:

J'ai toujours des difficultés. J'ai effectué des erreurs pour en trouver la raison.


Le journal a signalé :

1) Erreur 4051=Paramètre incorrect

2) Ticket invalide pour la modification de la commande

OK, peut-être que vos messages d'erreur sont faux....

 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);


               OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
               Print("Cant Modify Order"+GetLastError(),i);

Pourquoi appelez-vous GetLastError() si l'OrderSelect() fonctionne ? Si vous obtenez une erreur, elle ne sera pas due à l'OrderSelect().

Même chose pour la fonction OrderModify(), si la modification fonctionne vous appelez toujours GetLastError(), pourquoi ? ne l'appelez que si la fonction échoue....

            if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
               {
               if(!OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red))
                  Print("Cant Modify Order, error# " + GetLastError()," index ", i);
 
deVries:

attention à la honte supprimer mon post
Non, je suis humain, je fais des erreurs aussi, ça ne me dérange pas que les gens le sachent :-)
 

AHHHH j'adore ça. Vos deux points sont très sensés.


{{{{}}}}} - C'est aussi beaucoup plus facile !

Les erreurs ne devraient être appelées que si la fonction échoue.


Merci à vous deux, j'espère que vos week-ends se sont bien passés.

 
RaptorUK:

Pour un achat, comment le SL peut-il être supérieur au prix d'ouverture ? OrderOpenPrice() + Point * MoveStopTo


Le SL est en dessous de l'ordre.



Etes-vous sûr que vous ne faites pas référence à la section de vente ?

 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 
RaptorUK:
LOL . . oups <sourire rouge>.

C'était une erreur de ma part.