Yardım: EA neden bir takası kapatmıyor? - sayfa 4

 

Kodunuzu göndermek için SRC düğmesini kullanmıyorsanız, kimsenin size cevap vermemesi sorunu yaşayacaksınız: D

 
crossy :

merhaba arkadaşlar,


OrderT, sipariş Bilet numarasıdır,




SORUNUM: EA bazen ticareti çok iyi kapatır, ancak bazen EA tarde'yi kapatır ANCAK zaten kapalı olmasına rağmen onu kapatmak için bileti aramaya devam ediyor.

("Bilinmeyen bilet numarası.." hatası alıyorum.

Sanırım mantık hatası var.

Nazik yardımın için teşekkür ederim.

Y

Çok, çok basit. . . .

Sadece bu basit soruyu cevaplayın ve cevabınızı alacaksınız. . .

Biletin kapatılabilmesi için BİLET numarasını İşlev'e iletirsiniz. . . . neden o zaman diğer TÜM siparişler arasında dolaşıyorsunuz? Kapatmanız gereken Bilet numarasını zaten BİLİYORSUNUZ . . . neden döngü?

 
...
   for ( int cnt = OrdersTotal ()- 1 ; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         CodeY    = true;
         OrderS   = OrderSymbol ();
         OrderT   = OrderTicket ();
         OrderM   = OrderMagicNumber ();
         OrderTyp = OrderType ();
         OrderL   = OrderLots ();
      }   
       if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
    
         CLOSE_Single_P(Pair1, "LONG" ,OrderT,OrderL);

//-----------------------------------------------+
void CLOSE_Single_P( string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt= 0 ; cntt< 20000 ; cntt++ )
   {
       if ( Check )
      {
         Check_Ini();
         return ;
      }
       for ( int vvv = OrdersTotal ()- 1 ; vvv >= 0 ; vvv-- )
      {  
         if ( OrderSelect (vvv, SELECT_BY_POS, MODE_TRADES) )
         {   
            Check = false;
             if ( TREN == "LONG" )
              PRC = MarketInfo (SYMB,MODE_BID);
             else
             if ( TREN == "SHORT" )
               PRC = MarketInfo (SYMB,MODE_ASK);
         
            Check = OrderClose (TICKET,LOTT,PRC,Slippage, Yellow );
             if ( Check )
               break ;
         }      
      } 
   }
   return ;
}
//-----------------------------------------------+

Umarım şimdi daha net olmuştur.

teşekkürler

 
RaptorUK :

Çok, çok basit. . . .

Sadece bu basit soruyu cevaplayın ve cevabınızı alacaksınız. . .

Biletin kapatılabilmesi için BİLET numarasını İşlev'e iletirsiniz. . . . neden o zaman diğer TÜM siparişler arasında dolaşıyorsunuz? Kapatmanız gereken Bilet numarasını zaten BİLİYORSUNUZ . . . neden döngü?


Teşekkürler Raptor, ORDERSELECT olmadan bir kez yaptım ama aynı hatayı verdi.

Y.

 
Zaten ilk sayfada bir ipucu verdim. https://www.mql5.com/en/forum/139543
 

Teşekkürler onewithzachy ve önerdiğiniz gibi yaptım ve hatayı aldım

BİLETİ bulamadığı masajı..

 
crossy :

merhaba arkadaşlar,


OrderT, sipariş Bilet numarasıdır,




SORUNUM: EA bazen ticareti çok iyi kapatır, ancak bazen EA tarde'yi kapatır ANCAK zaten kapalı olmasına rağmen onu kapatmak için bileti aramaya devam ediyor.

("Bilinmeyen bilet numarası.." hatası alıyorum.

Sanırım mantık hatası var.

Nazik yardımın için teşekkür ederim.

Y

Çok, çok basit. . . .

Sadece bu basit soruyu cevaplayın ve cevabınızı alacaksınız. . .

Biletin kapatılabilmesi için BİLET numarasını İşlev'e iletirsiniz. . . . neden o zaman diğer TÜM siparişler arasında dolaşıyorsunuz? Kapatmanız gereken Bilet numarasını zaten BİLİYORSUNUZ . . . neden döngü?

 
onewithzachy :
Zaten ilk sayfada bir ipucu verdim. https://www.mql5.com/en/forum/139543
Ve ben de cevabı verdim. . . https://www.mql5.com/en/forum/139543
 
crossy :


Teşekkürler Raptor, ORDERSELECT olmadan bir kez yaptım ama aynı hatayı verdi.

Yazdıklarımı ve sorduğumu okumuyorsun. . . . neden döngü? Bu durumda döngünün işlevi nedir?
 
...
   for ( int cnt = OrdersTotal ()- 1 ; cnt >= 0 ; cnt--) 
   {
      CodeY = false;
       if ( OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES) )
      {
         CodeY    = true;
         OrderS   = OrderSymbol ();
         OrderT   = OrderTicket ();
         OrderM   = OrderMagicNumber ();
         OrderTyp = OrderType ();
         OrderL   = OrderLots ();
      }   
       if ( CodeY && OrderS == Pair1 && OrderTyp == OP_BUY && OrderM == MAG &&.... )
    
         CLOSE_Single_P(Pair1, "LONG" ,OrderT,OrderL);

//-----------------------------------------------+
void CLOSE_Single_P( string SYMB, string TREN, int TICKET, double LOTT)
{
   double PRC;
   bool Check = false;

   for ( int cntt= 0 ; cntt< 20000 ; cntt++ )
   {
       if ( Check )
      {
         Check_Ini();
         return ;
      }
      Check = false;
       if ( TREN == "LONG" )
         PRC = MarketInfo (SYMB,MODE_BID);
       else
       if ( TREN == "SHORT" )
         PRC = MarketInfo (SYMB,MODE_ASK);
         
      Check = OrderClose (TICKET,LOTT,PRC,Slippage, Yellow );
   }
   return ;
}
//-----------------------------------------------+

Tamam İşte aynı hatayı aldığım değiştirilmiş versiyon.

Y.