Belirli bir süre ve/veya SL'den sonra siparişi otomatik olarak kapat - sayfa 4

 

Lütfen kodu göndermek için SRC düğmesini kullanın. . . .

 

Bir siparişi iki kez kapatmaya çalışıyor olabilirsiniz. .

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

Bunlardan sadece birine ihtiyacınız var. . . ve kullan . . .

 if ( OrderType () <= OP_SELL) 

OP_SELL ve OP_BUY'u kapsayan, şunu okuyun: https://docs.mql4.com/constants/trading

 

Kodu şöyle değiştirdim:

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

Şimdi, StopLoss veya TakeProfit'e basarken kodun openell ve openbuy'ı 0'a nasıl saymasına izin verdiğimi bulmam gerekiyor.

 
nirvanamac :

Kodu şöyle değiştirdim:

Şimdi, StopLoss veya TakeProfit'e basarken kodun openell ve openbuy'ı 0'a nasıl saymasına izin verdiğimi bulmam gerekiyor.


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

Sihirli sayı ve sembol üzerinde doğrudan seçin, bu kod daha sonra daha iyi bir şekilde yazılacaktır.

Yaptığınız şekilde kullanırsanız, bir saatten daha uzun süren tüm açık işlemleri kapatacaksınız (bundan da değil)

 
deVries :

Sihirli sayı ve sembol üzerinde doğrudan seçin, bu kod daha sonra daha iyi bir şekilde yazılacaktır.

Yaptığınız şekilde kullanırsanız, bir saatten daha uzun süren tüm açık işlemleri kapatacaksınız (bundan da değil)


Merhaba deVries...Denedim ve şimdi TP ve SL ile kontrol edeceğim...çok teşekkürler...
 

Vay be şimdi iyi görünüyor :) performans değil, SL ve TP ile EA