Fractal Break Out-Stuck - Seite 4

 
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;
//-----The Differnt Order types---//

if(OrderType()==OP_BUY)
{
 if(BreakEven>0)
    {
     if(Bid-OrderOpenPrice() >= Point*BreakEven*mypoint)
      {
       if(OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()*Point*mypoint;
          }}}}}

if(SL!=OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(), SL,OrderTakeProfit(),0,CLR_NONE);
if(result!=true){error=GetLastError(); Print("ModifyError=",OrderTicket()," ",error);}

//--------CHECKING FOR ERRORS-------------------//

return(0);
}
}



Ich habe die Verkaufsseite auch erstellt, aber dann gelöscht, weil ich Fehler bekam, also habe ich die Seite, die deVries mir gezeigt hat, wieder eingefügt und bekomme immer noch die gleichen Fehlercodes.


4051

4108


Außerdem, warum fügen wir Point zu OrderOpenPrice()=SL ? hinzu? Das fügt nur die richtigen Ziffern zum Stop Loss hinzu.

 
ZacharyRC:

Ich habe die Verkaufsseite auch erstellt, aber dann gelöscht, weil ich Fehler bekam, also habe ich den Code, den deVries mir gezeigt hat, wieder eingefügt und bekomme immer noch die gleichen Fehlercodes.

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;
//-----The Differnt Order types---//

if(OrderType()==OP_BUY)
{
 if(BreakEven>0)
    {
     if(Bid-OrderOpenPrice() >= Point*BreakEven*mypoint)
      {
       if(OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()*Point*mypoint;       // WRONG HERE
          }}}}}

if(SL!=OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(), SL,OrderTakeProfit(),0,CLR_NONE);
if(result!=true){error=GetLastError(); Print("ModifyError=",OrderTicket()," ",error);}
     //Where is the  }  ??
//--------CHECKING FOR ERRORS-------------------//

return(0);
}
}

4051

4108


Außerdem, warum fügen wir Point zu OrderOpenPrice()=SL? hinzu? Das fügt nur die richtigen Ziffern zum Stop Loss hinzu.

Sehen Sie sich meinen Code noch einmal an und ändern Sie die rote Zeile

sie unterscheidet sich von dem, was ich angegeben habe !!!!

Können wir den Code so sehen, wie er jetzt ist

und die Nachricht, die Sie bei diesen Fehlern zu lesen bekommen

fügen Sie einen Punkt zu orderopenprice ist, um zu vermeiden, versuchen zu ändern Handel wieder bei Breakevenjeden Tick

 
deVries:

Sehen Sie sich meinen Code noch einmal an und ändern Sie die rote Zeile

sie unterscheidet sich von dem, was ich !!!! gegeben habe.

Können wir den Code so sehen, wie er jetzt ist

und die Nachricht, die man bei diesen Fehlern zu lesen bekommt

fügen Sie einen Punkt zu orderopenprice hinzu, um zu vermeiden, dass Sie versuchen, den Handel bei Breakeven jeden Tick erneut zu ändern


Ja, ich habe den Fehler entdeckt, ich habe nur ein paar Dinge geändert und vergessen, ihn vor dem Posten des Codes zu löschen. Entschuldigung.


//-----------------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;
//-----The Differnt Order types---//

if(OrderType()==OP_BUY)
{
 if(BreakEven>0)
    {
     if(Bid-OrderOpenPrice() >= Point*BreakEven*mypoint)
      {
       if(OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()+Point;
          }}}}}
          

if(OrderType()==OP_SELL)
{
 if(OrderOpenPrice()-Ask >= Point*BreakEven*mypoint)
 {
  if(OrderStopLoss()>OrderOpenPrice())
   {
    SL=OrderOpenPrice() + Point;
    
}}}


if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);}     
//--------CHECKING FOR ERRORS-------------------//
Print(GetLastError());
return(0);
}
}
 
2013.03.18 17:55:51 2013.03.11 23:59 Tester: Order #6 ist geschlossen
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: 0
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: ModifyError = 6 0
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: modify #6 buy 0.03 EURUSD at 1.30390 sl: 1.30055 tp: 1.30855 ok
2013.03.18 17:55:51 2013.03.11 15:48 BreakOutEA EURUSD,M1: open #6 buy 0.03 EURUSD at 1.30390 ok
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: 0
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: ModifyError = 5 4108
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: OrderModify error 4108
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: unknown ticket 5 for OrderModify function
2013.03.18 17:55:51 2013.03.11 15:47 BreakOutEA EURUSD,M1: 0
 
Also gut! Für einen Verkauf sollte ich also auch 1 Punkt abziehen
 
//-----------------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;
   //-----The Differnt Order types---//
   if(OrderType()==OP_BUY)
      {
      if(BreakEven>0)
         {
         if(Bid-OrderOpenPrice() >= Point*BreakEven*mypoint)
            {
            if(OrderStopLoss() <OrderOpenPrice())
               {
               SL=OrderOpenPrice()+Point;
               }}}}   }     //PLACE THE BRACKETS IN LINE OPEN/CLOSE BRACKET AND YOU WILL SEE THE ERROR HERE
          

   if(OrderType()==OP_SELL)
      {
      if(OrderOpenPrice()-Ask >= Point*BreakEven*mypoint)
         {
         if(OrderStopLoss()>OrderOpenPrice())
            {
            SL=OrderOpenPrice() + Point;    //OrderStopLoss has to become point lower then orderopenprice
            }}}


   if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);} 
   }    
//--------CHECKING FOR ERRORS-------------------//
Print(GetLastError(
return(0);
}
}

Innerhalb der Schleife prüfen wir jede Änderung auf Fehler, außerhalb der Schleife wissen wir nicht, in welcher Reihenfolge der letzte Fehler aufgetreten ist, in diesem Fall

letzte Zeile print( getlasterror()) b wird nicht benötigt

Ich möchte mehr Klammern in einer Zeile sehen

RaptorUK und ich haben die schließenden Klammern nicht auf diese Weise gesetzt }}}}}}

Sie haben jetzt Fehler gemacht, weil das

 
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;
//-----The Differnt Order types---//

if(OrderType()==OP_BUY)
{
 if(BreakEven>0)
   {
     if(Bid-OrderOpenPrice() >= Point*BreakEven*mypoint)
      {
       if(OrderStopLoss() <OrderOpenPrice())
         {
          SL=OrderOpenPrice()+Point;
}
   }
      }
         }
                  
          

if(OrderType()==OP_SELL)
{
 if(OrderOpenPrice()-Ask >= Point*BreakEven*mypoint)
 {
  if(OrderStopLoss()>OrderOpenPrice())
   {
    SL=OrderOpenPrice() - Point;
    
}
 }
   }


if(SL != OrderStopLoss()) result=OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,CLR_NONE);
         if(result!=TRUE) { error=GetLastError(); Print("ModifyError = ",OrderTicket(),"   ",error);}     
}
return(0);
}
}




Ist das die Reihenfolge, die Sie für die öffnenden und schließenden Klammern von {{{ }}} verlangen?

Das war ein Problem für mich, ich fühle mich sehr unorganisiert innerhalb des Codes.

 

Keine Fehler jetzt, aber in der visuellen Backtest, ist die SL nicht bewegt werden. Ich hatte Vertrauen in diese aber verletzt jetzt, Entschuldigungen für die Abhängigkeit so viel auf dem Message Board.

Die Klammern waren der Fehler, aber immer noch nicht richtig funktionieren.



Ich habe das Buch auch noch einmal gelesen.

 
if(OrderType()==OP_BUY){

 if(BreakEven>0){
   
     if(Bid-OrderOpenPrice() >=BreakEven*mypoint*Point){
      
       if(OrderStopLoss() <OrderOpenPrice()){
         
          SL=OrderOpenPrice()+Point;
}
  }
     }
       }
                  

Ich denke, das wird mir auch helfen, indem ich die Klammern direkt unter dem Bediener platziere.
 
ZacharyRC:
Ich denke, das wird mir auch helfen, indem ich die Klammern direkt unter dem Betreiber platziere.

Sieht für mich furchtbar aus, aber wenn es für Sie Sinn macht, dann ist es toll. Ich mache es so, damit die Einrückung zeigt, wo ein Block ist...

if(OrderType()==OP_BUY)
   {
   if(BreakEven>0)
      {
      if(Bid-OrderOpenPrice() >=BreakEven*mypoint*Point)
         {
         if(OrderStopLoss() <OrderOpenPrice())
            {
            SL=OrderOpenPrice()+Point;
            }
         }
      }
   }

oder machen Sie es so...

if(OrderType() == OP_BUY && BreakEven > 0 && 
   Bid - OrderOpenPrice() >= BreakEven * mypoint * Point &&
   OrderStopLoss() < OrderOpenPrice() )
   {
   SL = OrderOpenPrice() + Point;
   }