Auftrag automatisch nach einem bestimmten Zeitraum und/oder SL schließen - Seite 4

 

Bitte verwenden Sie die SRC-Schaltfläche, um den Code zu posten. . . .

 

Es kann sein, dass Sie versuchen, einen Auftrag zweimal abzuschließen.

if (OrderType() == OP_BUY || OP_SELL) 
{
bool Closed = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red); 
openbuy = 0;
opensell = 0;
}


if (OrderType() == OP_SELL) 
{
Closed = OrderClose(OrderTicket(),OrderLots(), OrderClosePrice(), UseSlippage, Red); 
opensell = 0;
openbuy = 0; 
} 
}

Sie brauchen nur einen von diesen... und benutzen...

if (OrderType() <= OP_SELL) 

die OP_SELL und OP_BUY abdeckt, lesen Sie dies: https://docs.mql4.com/constants/trading

 

Ich habe den Code wie folgt geändert:

for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if((OrderOpenTime()+3600) < TimeCurrent())
          { 
           if (OrderType() == OP_BUY)          
              {
               bool Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);           
               openbuy = 0;
              }
           if (OrderType() == OP_SELL)          
              {
               Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);  
               opensell = 0;
              }              
          }
       }
    }

Jetzt muss ich herausfinden, wie ich den Code opensell und openbuy auf 0 zählen lasse, wenn ich den StopLoss oder TakeProfit treffe

 
nirvanamac:

Ich habe den Code wie folgt geändert:

Jetzt muss ich herausfinden, wie ich den Code opensell und openbuy auf 0 zählen lasse, wenn ich den StopLoss oder TakeProfit treffe


opensell = 0;
openbuy =0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
    {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))   //==> select also on magicnumber and symbol
       {
       if(OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol() && OrderType() == OP_BUY){openbuy++;}
       if(OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol() && OrderType() == OP_SELL){opensell++;}
       if((OrderOpenTime()+3600) < TimeCurrent() && OrderMagicnumber()== magicnumber && OrderSymbol()== Symbol())
          { 
           if (OrderType() == OP_BUY)          
              {
               bool Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);           
               openbuy = openbuy-1;    //openbuy--;
              }
           if (OrderType() == OP_SELL)          
              {
               Closed = OrderClose(OrderTicket() ,OrderLots(), OrderClosePrice(), UseSlippage, Red);  
               opensell = opensell-1;    //opensell--;
              }              
          }
       }
    }

Wählen Sie direkt auf magicnumber und symbol dieser Code wird dann in einer besseren Weise geschrieben werden

Wenn Sie ihn so verwenden, wie Sie ihn gemacht haben, dann schließen Sie alle offenen Trades, die länger als eine Stunde laufen (auch nicht von diesem)

 
deVries:

Wählen Sie direkt auf magicnumber und symbol dieser Code wird dann in einer besseren Weise geschrieben werden

Wenn Sie es so verwenden, wie Sie es gemacht haben, dann schließen Sie alle offenen Trades, die länger als eine Stunde laufen (auch nicht von diesem)


Hallo deVries...ich habe es ausprobiert und werde es jetzt mit TP und SL überprüfen...vielen Dank...
 

Wow, jetzt sieht es gut aus :) nicht die Leistung, aber die EA mit SL und TP