Emir bulma görevi - sayfa 13

 
Vladimir Pastushak :
Belki birinin daha iyi bir şey bildiğini düşündüm ....
   double Max1= 0 ;
   double Max2= 0 ; 
   
   int Ticket1= 0 ;
   int Ticket2= 0 ;

   int t= OrdersTotal ();
   for ( int i= 0 ;i<t;i++){
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)){
         if (OrderMagicNumber()==Magic && OrderSymbol()== Symbol ()){
             if (OrderType()==OP_BUY){
               if (OrderOpenPrice()>Max1){
                  Max2=Max1;
                  Ticket2=Ticket1;                  
                  Max1=OrderOpenPrice();
                  Ticket1=OrderTicket();
               }
               else if (OrderOpenPrice()>Max2){
                  Max2=OrderOpenPrice();
                  Ticket2=OrderTicket();                  
               }
            }
         }
      }
       else {
         return ( false );
      }
   }

Hiçbir yerde daha hızlı. Daha hızlı ihtiyacınız varsa, danışmanın tüm algoritmasını düşünmeniz gerekir, belki her tikte iki alt, iki üst arama ihtiyacından kurtulabilirsiniz.
 
Dmitry Fedoseev :

Hiçbir yerde daha hızlı. Daha hızlı ihtiyacınız varsa, danışmanın tüm algoritmasını düşünmeniz gerekir, belki her tikte iki alt, iki üst arama ihtiyacından kurtulabilirsiniz.

Varyantınızda veriler eşit olacaktır, yani birinci ve ikinci en yüksek siparişler aynı bilete sahip olacaktır.

acele et pardon...

 

öyle yaptım

 void OrdersInfo :: SearchTicketPriceType()
  {
   double    price_max= 0 ,price_min= 0 ,price_max2= 0 ,price_min2= 0 ,op= 0 ;
   int       tc=- 1 ;
   m_tick_upper  = 0 ;
   m_tick_upper_ = 0 ;
   m_tick_lower  = 0 ;
   m_tick_lower_ = 0 ;
   Counter= 0 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
         if (OrderMagicNumber()==m_magic || m_magic==- 1 )
             if (OrderSymbol  ()==m_symbol || m_symbol== NULL )
               if (OrderType()==m_type_order)
                 {
                  Counter++;
                  op=OrderOpenPrice();
                  tc=OrderTicket   ();
                   //---
                   if (op>price_max) // Самый верхний ордер
                    {
                     price_max=op;
                     m_tick_upper=tc;
                    }
                   if (op<price_min || price_min== 0 ) // Самый нижний ордер
                    {
                     price_min=op;
                     m_tick_lower=tc;
                    }
                   if (tc!=m_tick_upper) // Предпоследний верхний ордер
                     if (op>price_max2)
                       {
                        price_max2=op;
                        m_tick_upper_=tc;
                       }
                   if (tc!=m_tick_lower)
                     if (op<price_min2 || price_min2== 0 ) // Предпоследний нижний ордер
                       {
                        price_min2=op;
                        m_tick_lower_=tc;
                       }
                   //---
                 }
  }
 
Dmitry Fedoseev :

Evrensel bir şey yapmaya çalışmaktansa, yalnızca bu görevler için özel olarak tasarlanmış çeşitli görevler için işlevler toplamak daha iyidir.


100%

Taşınabilir bir çözüm yaparsanız, belirli bir göreve uygulandığında mutlaka bir kısmı gereksiz olacaktır. Ne kadar evrensel hale getirmeye çalışırsanız, artıklık kuyruğu o kadar uzun olur. Bu fazlalığın hem kodlayıcının hem de ürünün ömrünü daha sonra zorlaştırmaması için zamanında durdurmaya değer

 
Vladimir Pastushak :

öyle yaptım

Düzgün çalışıyor mu, kontrol ettiniz mi?
 
Dmitry Fedoseev :
Ve doğru çalışıyor, kontrol edildi mi?
Evet görünüyor))) ...
 
Alexander Puzanov :


100%

Taşınabilir bir çözüm yaparsanız, belirli bir göreve uygulandığında mutlaka bir kısmı gereksiz olacaktır. Ne kadar evrensel hale getirmeye çalışırsanız, artıklık kuyruğu o kadar uzun olur. Bu fazlalığın hem kodlayıcının hem de ürünün ömrünü daha sonra zorlaştırmaması için zamanında durdurmaya değer

ve tüm bunları nasıl bir araya getireceğim, neden OOP'ye geçmeye çalışıyorum, bu çok OOP'nin övülmesiyle, birçok işlevi toplamanıza ve kataloglamanıza izin verdiği yazılmıştır, daha önce birçok işleve sahip dosyalarım vardı. .. Her şeyi düzenlemeyi düşündüm, ama eğer ayrı bir seçeneğe ihtiyacınız varsa, o zaman kütüphane dizinlerinin anlamı kaybolur ...

Fazlalıktan kaçınmak için, vakaların% 99'unda hala tüm kodu manuel olarak yazmanız gerektiği ortaya çıktı ... Sıfırdan, yani ...

 
Vladimir Pastushak :
Evet görünüyor))) ...
Evet. Norm.
 
Dmitry Fedoseev :
Evet. Norm.
Bu konuyu oluşturarak elde etmek istediğim buydu, hepinize teşekkür ederim!
 
Vladimir Pastushak :
Bu konuyu oluşturarak elde etmek istediğim buydu, hepinize teşekkür ederim!

Ben değil, OTC değil :) Test cihazındaki siparişlerde veya bir demo hesabında test edin. İlk bakışta yanılıyor olabilirsiniz.