Fractal Break Out-Stuck - Seite 3

 

Ich habe die Parameter in den beiden Funktionen OrderModify und OrderSelect ausgetauscht, ohne Erfolg...

Der Ablauf scheint logisch zu sein, und ich habe alle Parameter doppelt überprüft.


Dies geschieht während des Backtests, sollte aber keine Rolle spielen.

 
//----------------------------------------------//
//-----------------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);}       
   }

Erleichtern Sie das Lesen der Kodierung

Sehen Sie den Unterschied zu Ihrer eigenen Schrift, die einfacher zu zählen ist {{{{{{{{{{{{{{{ }}}}}}}}}}}}}}

 
ZacharyRC:

Ich habe immer noch Schwierigkeiten. Ich habe Fehler durchgeführt, um herauszufinden, warum.


Journal Has Reported:

1) Fehler 4051=Fehlerhafte Parameter

2) Ungültiges Ticket zum Ändern der Bestellung

//----------------------------------------------//
//-----------------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);
               }
            }
         }
      }
   }

Wie kann bei einem Buy der SL über dem Open Price liegen? OrderOpenPrice() + Point * MoveStopTo

 
deVries:

für BUY möglich, OrderStopLoss() über OrderOpenPrice() zu haben, nachdem die Modifikation erfolgreich war und der Handel im Gewinn ist
LOL . . oops <rotes Gesicht smiley>
 
RaptorUK:
LOL . . oops <roter Smiley>


Hüte dich vor der Schande, lösche meinen Beitrag
 
ZacharyRC:

Ich habe immer noch Schwierigkeiten. Ich habe Fehler durchgeführt, um herauszufinden, warum.


Journal hat berichtet:

1) Fehler 4051=Fehlerhafte Parameter

2) Ungültiges Ticket zum Ändern der Bestellung

OK, vielleicht sind Ihre Fehlermeldungen fälschlich.

 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);

Warum rufen Sie GetLastError() auf, wenn OrderSelect() funktioniert? Wenn es Ihnen einen Fehler anzeigt, liegt das nicht an OrderSelect().

Dasselbe gilt für OrderModify(), wenn die Änderung funktioniert, rufen Sie trotzdem GetLastError() auf, warum? rufen Sie es nur auf, wenn die Funktion fehlschlägt.

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

Hüte dich vor der Schande, lösche meinen Beitrag
Nein, ich bin ein Mensch, ich mache auch Fehler, und es macht mir nichts aus, wenn die Leute das wissen :-)
 

AHHH Ich liebe es. Ihre beiden Punkte machen sehr viel Sinn.


{{{{}}}}}-ist auch viel einfacher!

Fehler sollten nur aufgerufen werden, wenn die Funktion fehlschlägt.


Danke euch beiden, ich hoffe, eure Wochenenden waren toll.

 
RaptorUK:

Wie kann der SL bei einem Kauf über dem Eröffnungskurs liegen? OrderOpenPrice() + Point * MoveStopTo


Der SL liegt unterhalb der Order.



Sind Sie sicher, dass Sie sich nicht auf den Verkaufsteil beziehen?

 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 . . oops <roter Smiley>

Das war ein Fehler meinerseits.