[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 6

 
DhP :


Her onay işaretiyle bekleyen siparişlerin sayısını yeniden hesaplayın.

Daha az varsa, bekleyen bir emir piyasa emrine dönüşmüştür.

Kalan (gereksiz hale gelen) tümü silinebilir.


Silme sırasında, her iki emir de piyasa emridir. Ancak, bekleyen son emir silinse veya tetiklense bile, bileti hala tetikleniyor ve hata veriyor. Ve sondan bir önceki olan asılı kalır.
 
Andreev :

Bağlantı için teşekkürler!!! Çalışacağım :) Zamanla, sihirli sayı ve sipariş türü (buylimit veya selllimit) - iyi bir fikir. Ama muhtemelen beni yanlış anladın. Benim sorunum bir sipariş belirlemek değil, NASIL KALDIRILIR. Sondan bir önceki siparişi nasıl tanımladığımdan bağımsız olarak, yalnızca bekleyen son siparişi silebilirim.
 // ------------------------------------------------Ищете Ваши отложенники---------------------------------

   int orderType;
   for ( int orderIndex = ( OrdersTotal () - 1 ); orderIndex >= 0 ; orderIndex--)
   {
       if (! OrderSelect (orderIndex, SELECT_BY_POS))
      {
         continue ;
      }

       if (( OrderSymbol () != Symbol ()) || ( OrderMagicNumber () != MagicNumber))
      {
         continue ;
      }

      orderType = OrderType ();
       if ((orderType == OP_BUY) || (orderType == OP_SELL))
      {
         continue ;
      }
          ticket = OrderTicket ( );                         // Номер ордера
          orderLots = OrderLots ();                         // Lots   
          
          
          SL =   OrderStopLoss ();                           // Значение StopLoss ордера
          TP = OrderTakeProfit ();                           // Значение TakeProfit ордера
          
          
             if (ticket> 0 )                                               // 
                    {
                             while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep ( 100 );
                                 }
                                  
      
                             OrderDelete (ticket, CLR_NONE ); // и удаляете их                       
                     
                            
                    }

       
       return ( 0 );
   }
İlk mesajınızdan anladığım kadarıyla "Aşağıdaki örneği belirlemek için kullanıyorum ama ilk bekleyen emir yerine sadece son bekleyen emri kapatıyor, ilk bekleyen emir için tüm şartlar sağlanmış olmasına rağmen. Hata bulmama yardım edin!!! !!!!!!!!!!" - Bir kısmını piyasa emrine dönüştürdükten sonra kalan tüm bekleyen emirleri silmeniz gerekiyor - bu kodu işlem koşullarınıza girin ve gidin...
 
Roman. :
İlk mesajınızdan anladığım kadarıyla "Aşağıdaki örneği belirlemek için kullanıyorum ama ilk bekleyen emir yerine sadece son bekleyen emri kapatıyor, halbuki ilk bekleyen emir için tüm şartlar sağlanıyor. Hatayı bulmama yardım edin!! !!!!!!!!!!!" - Bir kısmını piyasa emrine dönüştürdükten sonra kalan tüm bekleyen emirleri silmeniz gerekiyor - bu kodu işlem koşullarınıza girin ve gidin...

Teşekkürler!!! Bu kadar zor olacağını tahmin etmemiştim :)
 
Roman. :
İlk mesajınızdan anladığım kadarıyla "Aşağıdaki örneği belirlemek için kullanıyorum ama ilk bekleyen emir yerine sadece son bekleyen emri kapatıyor, halbuki ilk bekleyen emir için tüm şartlar sağlanıyor. Hatayı bulmama yardım edin!! !!!!!!!!!!!" - Bir kısmını piyasa emrine dönüştürdükten sonra kalan tüm bekleyen emirleri silmeniz gerekiyor - bu kodu işlem koşullarınıza girin ve gidin...

Birkaç satıra sığabileceğini düşündüm... :)
 
Andreev :

Silme sırasında, her iki emir de piyasa emridir. Ancak, bekleyen son emir silinse veya tetiklense bile, bileti hala tetikleniyor ve hata veriyor. Ve sondan bir önceki olan asılı kalır.


Bunun nasıl mümkün olduğunu hayal bile edemiyorum.

Bekleyen emirleri yeniden hesapladıktan sonra, Uzman Danışman bir emri saymazsa, kalanları silmek için hemen bir komut verir.

Gereksiz geciktiricilerin kaldırılması işlemi, herhangi bir açma işleminden mutlaka önce (önce gelen) olmalıdır.

 
Roman. :

İlk mesajınızdan anladığım kadarıyla "Aşağıdaki örneği belirlemek için kullanıyorum ama ilk bekleyen emir yerine sadece son bekleyen emri kapatıyor, halbuki ilk bekleyen emir için tüm şartlar sağlanıyor. Hatayı bulmama yardım edin!! !!!!!!!!!!!" - Bir kısmını piyasa emrine dönüştürdükten sonra kalan tüm bekleyen emirleri silmeniz gerekiyor - bu kodu işlem koşullarınıza girin ve gidin...

 // ------------------------------------------------Ищете Ваши отложенники---------------------------------

   int orderType;
   for ( int orderIndex = ( OrdersTotal () - 1 ); orderIndex >= 0 ; orderIndex--)
   {
       if (! OrderSelect (orderIndex, SELECT_BY_POS))
      {
         continue ;
      }

       if (( OrderSymbol () != Symbol ()) || ( OrderMagicNumber () != MagicNumber))
      {
         continue ;
      }

      orderType = OrderType ();
       if ((orderType == OP_BUY) || (orderType == OP_SELL))
      {
         continue ;
      }
          ticket = OrderTicket ( );                         // Номер ордера
          orderLots = OrderLots ();                         // Lots   
          
          
          SL =   OrderStopLoss ();                           // Значение StopLoss ордера
          TP = OrderTakeProfit ();                           // Значение TakeProfit ордера
          
          
             if (ticket> 0 )                                               // 
                    {
                             while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep ( 100 );
                                 }
                                  
      
                             OrderDelete (ticket, CLR_NONE ); // и удаляете их                       
                     
                            
                    }

       
       return ( 0 );
   }
Hiç kompakt kodlar yazmayı denediniz mi?

İşte kendi kodunuz:

 // ------------------------------------------------Ищете Ваши отложенники---------------------------------

   int orderType;
   for ( int orderIndex = ( OrdersTotal () - 1 ); orderIndex >= 0 ; orderIndex--) {
       if (! OrderSelect (orderIndex, SELECT_BY_POS))                             continue ;
       if (( OrderSymbol () != Symbol ()) || ( OrderMagicNumber () != MagicNumber)) continue ;
      orderType = OrderType ();
       if ((orderType == OP_BUY) || (orderType == OP_SELL))                     continue ;
      ticket = OrderTicket ( );                         // Номер ордера
      orderLots = OrderLots ();                         // Lots   
      SL =   OrderStopLoss ();                           // Значение StopLoss ордера
      TP = OrderTakeProfit ();                           // Значение TakeProfit ордера
       if (ticket> 0 ) {
         while ( OrderSelect (ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
             Sleep ( 100 );
             OrderDelete (ticket, CLR_NONE ); // и удаляете их                       
         }
       return ( 0 );
      }
 
Andreev :

Birkaç satıra sığabileceğini düşündüm... :)

İyi. artmedia70 (24.07.2011 20:01) her şeyi neredeyse iki satıra sığdırdı. İstediğin gibi.)))
 

lütfen yardım edin hatam nerede? Anlamı, siparişin kapatıldığı barda siparişin açılmaması gerektiğidir.


 OrderSelect ( OrdersHistoryTotal ()- 1 , SELECT_BY_POS, MODE_HISTORY);
if ((условие 1 )&&(условие 2 )&&( OrderCloseTime ()!=Time[ 0 ]))
 {
 OrderSend ...; 
 }

ancak test cihazında sipariş kapatıldıktan sonra şartlar yerine getirilmeye devam edilir ve aynı yönde 1 sipariş daha açılır.

 
artmedia70 :
Hiç kompakt kodlar yazmayı denediniz mi?

İşte kendi kodunuz:

Denedim... :-))) Pascal'dan beri alışkanlık devam ediyor... Okunabilirlik daha kötü... özellikle çok "başarılı" olmayanlar için... :-))) Evet ve girintiler iç içe döngüler ve genişlik koşulları sekmelerindeki işlemlerde veya 3 boşlukta gereklidir - aşırıya kadar ... :-)))
 
LazarevDenis :

lütfen yardım edin, hatam nerede? Anlamı, siparişin kapatıldığı barda siparişin açılmaması gerektiğidir.


ancak test cihazında sipariş kapatıldıktan sonra şartlar yerine getirilmeye devam edilir ve aynı yönde 1 sipariş daha açılır.


Yardım , ayrıca aramada Google yazın - şuna benzer bir şey: tek bir çubuk sitede bir siparişi açıp kapatmak site:mql4.com - ve mutlu olacaksınız.