Öğrenme mantığı - sayfa 13

 
xrust :

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

İç içe if'ami ile yapı her zaman öldürülür - böyle bir yuvalamayı sıfırdan üretmek için ne gerekiyor?

tamamen anlaşılmaz...

Eğer anlamadıysan, sadece anlayışla karşılayabilirim.

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

Mantığınız standart değil. O hatalı.
 
xrust :

Benim için parantezleri tek satıra veya sütuna yerleştirmek çok daha mantıklı. Bloğun nerede başlayıp nerede bittiğinin net olmadığı kodu anlamak çok zordur. Eh, böyle bir biçimlendirmenin amacı, kodun anlamını düşmanlardan gizlemekse, o zaman hedefe ulaşılır.
 
TheXpert :
İç içe if'ami ile yapı her zaman öldürülür - böyle bir yuvalamayı sıfırdan üretmek için ne gerekiyor?

Eğer anlamadıysan, sadece anlayışla karşılayabilirim.

Mantığınız standart değil. O hatalı.

düzeltme, sadece ifadeyi kes :-)

--

Standart olmayan mantık - yanlış olduğu anlamına gelmez

--

standart olmayan mantığın yolu standart olandan daha kısa olduğunda - giriş ve çıkışta eşit koşullar altında

sonra cehenneme standartlar!

o zaman standart olmayan mantık içindeyim

--

Evet, yukarıdaki kodun sıkıntısını okumak zor ...

eskiden çok kısa bir kodla tanışmış olmama rağmen! Okunması zor...

bakım için - bu tür bir kodun kopyalanması ideal değildir

dolaşım için yazarsanız, genellikle tüm bunlara eşlik eden meslektaşlarınızla ilgilenirsiniz.

hesaplamaya yazarsanız, birisinin kodu kıracağını!

Vahşi doğada ilerlemek için ideal MANTIK - doğru yazın ama çok okunamaz kodlar yapın

 
drknn :

Delinme nerede anlamadım? Ve neden ikincisi? Eğer bu ikincisiyse, o zaman birincisi nerede?

Azarlanan kod gerçekten harika değil, kafa karıştırmak için mükemmel!

 

2 Vinin. Victor, neden her zaman sipariş seçimi işlevini çağırıyorsun ? Tüm değişkenleri tek bir döngüde doldurmak daha kolaydır.

 

ve benim için oldukça iyi:

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

MQL'de && ve || davranışı C++'da ondan farklıdır, bu nedenle koşulları ayırmak mantıklıdır.

FION :

2 Vinin. Victor, neden her zaman sipariş seçimi işlevini çağırıyorsun? Tüm değişkenleri tek bir döngüde doldurmak daha kolaydır.

Herkes için aynı değil.
 
TheXpert :

...herkes için aynı değil.


Bu açıktır. Kodu optimize etmenin amacı nedir? Satır sayısını azaltarak mı? Ben sadece kodun hızını arttırmaktaki noktayı görüyorum ve bu, örneğin döngüsel işlevlere yapılan çağrıların sayısını azaltarak başarılabilir. Veya göstergelerin hesaplanmasının tekrarlarının hariç tutulması . Aşağı yukarı böyle.
 
FION :

Noktayı sadece kodun hızını arttırmada görüyorum

Genel olarak, vakaların %90'ında hız kritik değildir. Buradaki nokta, başlangıçta kodu oluşturmak ve mümkün olduğunca okunması kolay olacak şekilde yapmaktır.

Ardından, zaman kritikse hızı optimize ederiz.

 

Buradan buraya taşın

 int AnaliseFunc ( string sy, int tf)
{
   
   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5, 0 );
   OpnPrice1=iOpen(NULL,PERIOD_M5, 1 );
   ClsPrice1=iClose(NULL,PERIOD_M5, 1 );
         
   if (sy== "" || sy== "0" ) sy=Symbol();
double
   BB_1  =iCustom(sy,tf, "BB_MA" , 13 , 1 , 1 , 1 ),
   BB_2  =iCustom(sy,tf, "BB_MA" , 13 , 1 , 1 , 2 ),
   BB_3  =iCustom(sy,tf, "BB_MA" , 13 , 1 , 1 , 3 ),
   AO1   =iAO(sy,tf, 1 ),
   AO2   =iAO(sy,tf, 2 ),
   AO3   =iAO(sy,tf, 3 ),
   AC1   =NormalizeDouble(iAC(sy,tf, 1 ), 8 )* 1000 ,
   AC2   =NormalizeDouble(iAC(sy,tf, 2 ), 8 )* 1000 ,
   AC3   =NormalizeDouble(iAC(sy,tf, 3 ), 8 )* 1000 ,
   AC4   =NormalizeDouble(iAC(sy,tf, 4 ), 8 )* 1000 ,
   AC5   =NormalizeDouble(iAC(sy,tf, 5 ), 8 )* 1000 ,
   SpMan1=iCustom(sy,tf, "SpearmanRankCorr" , 14 , 1000 , 30 , true , 0 , 1 ),
   SpMan2=iCustom(sy,tf, "SpearmanRankCorr" , 14 , 1000 , 30 , true , 0 , 2 ),
   DeM_1 =iDeMarker(sy,tf, 14 , 1 ),
   DeM_2 =iDeMarker(sy,tf, 14 , 2 ),
   Mom_1 =iMomentum(sy,tf, 14 ,PRICE_CLOSE, 1 ),
   Mom_2 =iMomentum(sy,tf, 14 ,PRICE_CLOSE, 2 ),
   Mom_3 =iMomentum(sy,tf, 14 ,PRICE_CLOSE, 3 );
   
//---------------- Проверка на разворот BB_MA -------------------------------------------------------   
   
   if (BB_1>BB_2 && BB_2<=BB_3 && BB_1< 0 )                               // Найден разворот BB вверх
      {
       switch (tf)
         {
             case 1 :     TrBBTurnUP_M1 = true ;  TrBBTurnDN_M1= false ;       // Флаг разворота вверх на М1
             case 5 :     TrBBTurnUP_M5 = true ;  TrBBTurnDN_M5= false ;       // Флаг разворота вверх на М5
             case 15 :    TrBBTurnUP_M15= true ;  TrBBTurnDN_M15= false ;     // Флаг разворота вверх на М15 
             case 30 :    TrBBTurnUP_M30= true ;  TrBBTurnDN_M30= false ;     // Флаг разворота вверх на М30 
             case 60 :    TrBBTurnUP_H1 = true ;  TrBBTurnDN_H1= false ;       // Флаг разворота вверх на H1
             case 240 :   TrBBTurnUP_H4 = true ;  TrBBTurnDN_H4= false ;       // Флаг разворота вверх на H4
             case 1440 :  TrBBTurnUP_D1 = true ;  TrBBTurnDN_D1= false ;       // Флаг разворота вверх на D1
             case 10080 : TrBBTurnUP_W1 = true ;  TrBBTurnDN_W1= false ;       // Флаг разворота вверх на W1
             case 43200 : TrBBTurnUP_MN = true ;  TrBBTurnDN_MN= false ;       // Флаг разворота вверх на MN
         }
      }
   if (BB_1<BB_2 && BB_2>=BB_3 && BB_1> 0 )                               // Найден разворот BB вниз
      {
       switch (tf)
         {
             case 1 :     TrBBTurnUP_M1 = false ;  TrBBTurnDN_M1= true ;       // Флаг разворота вниз на М1
             case 5 :     TrBBTurnUP_M5 = false ;  TrBBTurnDN_M5= true ;       // Флаг разворота вниз на М5
             case 15 :    TrBBTurnUP_M15= false ;  TrBBTurnDN_M15= true ;     // Флаг разворота вниз на М15 
             case 30 :    TrBBTurnUP_M30= false ;  TrBBTurnDN_M30= true ;     // Флаг разворота вниз на М30 
             case 60 :    TrBBTurnUP_H1 = false ;  TrBBTurnDN_H1= true ;       // Флаг разворота вниз на H1
             case 240 :   TrBBTurnUP_H4 = false ;  TrBBTurnDN_H4= true ;       // Флаг разворота вниз на H4
             case 1440 :  TrBBTurnUP_D1 = false ;  TrBBTurnDN_D1= true ;       // Флаг разворота вниз на D1
             case 10080 : TrBBTurnUP_W1 = false ;  TrBBTurnDN_W1= true ;       // Флаг разворота вниз на W1
             case 43200 : TrBBTurnUP_MN = false ;  TrBBTurnDN_MN= true ;       // Флаг разворота вниз на MN
         }
      }
//---------------------- Проверка на разворот Momentum -----------------------------------------------
   
   if (Mom_1>Mom_2 && Mom_2<=Mom_3 && Mom_1< 100.0 )
      {
       switch (tf)
         {
             case 1 :     TrMomTurnUP_M1 = true ;  TrMomTurnDN_M1= false ;       // Флаг разворота вверх на М1
             case 5 :     TrMomTurnUP_M5 = true ;  TrMomTurnDN_M5= false ;       // Флаг разворота вверх на М5
             case 15 :    TrMomTurnUP_M15= true ;  TrMomTurnDN_M15= false ;     // Флаг разворота вверх на М15 
             case 30 :    TrMomTurnUP_M30= true ;  TrMomTurnDN_M30= false ;     // Флаг разворота вверх на М30 
             case 60 :    TrMomTurnUP_H1 = true ;  TrMomTurnDN_H1= false ;       // Флаг разворота вверх на H1
             case 240 :   TrMomTurnUP_H4 = true ;  TrMomTurnDN_H4= false ;       // Флаг разворота вверх на H4
             case 1440 :  TrMomTurnUP_D1 = true ;  TrMomTurnDN_D1= false ;       // Флаг разворота вверх на D1
             case 10080 : TrMomTurnUP_W1 = true ;  TrMomTurnDN_W1= false ;       // Флаг разворота вверх на W1
             case 43200 : TrMomTurnUP_MN = true ;  TrMomTurnDN_MN= false ;       // Флаг разворота вверх на MN
         }
      }
      
   if (Mom_1<Mom_2 && Mom_2>=Mom_3 && Mom_1> 100.0 )
      {
       switch (tf)
         {
             case 1 :     TrMomTurnUP_M1 = false ;  TrMomTurnDN_M1= true ;       // Флаг разворота вверх на М1
             case 5 :     TrMomTurnUP_M5 = false ;  TrMomTurnDN_M5= true ;       // Флаг разворота вверх на М5
             case 15 :    TrMomTurnUP_M15= false ;  TrMomTurnDN_M15= true ;     // Флаг разворота вверх на М15 
             case 30 :    TrMomTurnUP_M30= false ;  TrMomTurnDN_M30= true ;     // Флаг разворота вверх на М30 
             case 60 :    TrMomTurnUP_H1 = false ;  TrMomTurnDN_H1= true ;       // Флаг разворота вверх на H1
             case 240 :   TrMomTurnUP_H4 = false ;  TrMomTurnDN_H4= true ;       // Флаг разворота вверх на H4
             case 1440 :  TrMomTurnUP_D1 = false ;  TrMomTurnDN_D1= true ;       // Флаг разворота вверх на D1
             case 10080 : TrMomTurnUP_W1 = false ;  TrMomTurnDN_W1= true ;       // Флаг разворота вверх на W1
             case 43200 : TrMomTurnUP_MN = false ;  TrMomTurnDN_MN= true ;       // Флаг разворота вверх на MN
         }
      }