Öğrenme mantığı - sayfa 12

 

Victor, IMHO anahtarı burada daha iyi - hem daha hızlı hem de daha görsel olarak.

 bool IsOrderType( int type)
{
   switch (type)
   {
       case OP_BUY:
       case OP_SELL:
       case OP_BUYLIMIT:
       case OP_SELLLIMIT:
       case OP_BUYSTOP:
       case OP_SELLSTOP:
         return ( true );
   }
   return ( false );
}


Oh, bu arada - test cihazında makul bir çalışma optimizasyonu - Son zamanlarda kullanmaya başladım.

 int FindLastOpenTime( int tip, int imagic) 
{
   int Res=- 1 ;
   int lOrderOpenTime=- 1 ;
   
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--) 
   {
       if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES))   continue ;
       if (OrderSymbol() != Symbol ())                     continue ;
       if (OrderMagicNumber() != imagic)                   continue ;
       if (!(tip==- 1 || isOrderType(tip)))                 continue ;

       if (IsTesting()) return (OrderTicket());   // тут

       if (lOrderOpenTime==- 1 ) { 
         lOrderOpenTime=OrderOpenTime(); 
         Res=OrderTicket();
      } else if (lOrderOpenTime<OrderOpenTime()) {
         lOrderOpenTime=OrderOpenTime(); 
         Res=OrderTicket();
      }
   }
   return (Res);
}

Bu arada, işlevin adı FindLastOpenTime ve bir bilet döndürür.

Belki böylesi daha iyidir?

 datetime FindLastOpenTime( int tip, int imagic, int & ticket) 
{
   //...
}
 
TheXpert :

Victor, IMHO anahtarı burada daha iyi - hem daha hızlı hem de daha görsel olarak.


Gerçekten daha görünür.
 

TheXpert :

Bu arada, işlevin adı FindLastOpenTime, ...

Teoride
 if (lOrderOpenTime<OrderOpenTime()) {
         lOrderOpenTime=OrderOpenTime(); 
         Res=OrderTicket();
      }
-1'den itibaren çalışmaya başlayabilir, harici if...else neden burada tam olarak açık değil. IMHO'ya dönmek, lOrderOpenTime'dan gerçekten daha iyidir, ardından -1'i döndürmek bir hatayı tespit etmenize izin verir.
 
Evet, takılma.
 

Bu tür kullanmak mantıklı mı?

 int Z[];

int Fn()
{
....
   int Z = 0 ;

  Z++;
....

return(Z);
}
start()
{
   .......
   Z[f]=3;
   ......
}
 
Numara. mantıksal z (küçük) içeride. Genel olarak, bu tür şeylerle şaka yapmamak daha iyidir.
 

döngüsel işlenenlerde böyle bir yapı her zaman mantık tarafından öldürülür:

if (! OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderMagicNumber() != imagic) continue ;
if (!(tip==- 1 || isOrderType(tip))) continue ;

yardıma bakın:

Devam ifadesi, kontrolü en yakın dış while veya for döngüsü ifadesinin başlangıcına aktararak bir sonraki yinelemenin başlamasına neden olur. Bu ifade break ifadesinin tersidir.

hiç belli değil ama şartlara göre düzen geçmezse ne olacak? döngü çıkışı? op devam ise op break'in tam tersiyse...

bana gelince, standart mantık hem daha görünür hem de anlaşılır:

 int FindLastOpenTime( int type, int imagic){ int time = 0 ;
   for ( int i = OrdersTotal () - 1 ;i>= 0 ;i--){
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)){
         if (OrderSymbol()== Symbol ()){
           if (OrderType()==type){
               if (OrderMagicNumber()==magic){
                 if (OrderOpenTime()>time){
                    time=OrderOpenTime();
                 }
              }
           }
        }
     }
  }
   return (time);
}  
 
TheXpert :

Delinme numarası 2. Mantık (mantıksallık) ve kısalık zayıf bir şekilde ilişkilidir.

Bu arada, birçoğunun kullanmaktan çekinmediği doğrudan MQL'den canlı bir örnek.

Bu mantık değil - bu onun cinayetidir. Ayrıca, örtük böcekler için potansiyel bir üreme alanı.


Delinme nerede anlamadım? Ve neden ikincisi? Eğer bu ikincisiyse, o zaman birincisi nerede?
 
Integer :
Ayrıca özellikle becerikli olanlar, ofisi veya fermuarı olmayanlar için.

Dima, metaeditor.exe'ye sahip olmayanlar için bir şeyler ekleyin :-)

 
Vinin :


Victor, bir kez daha tebrikler!