학습 논리 - 페이지 13

 
xrust :

순환 피연산자의 구성과 같은 논리에 의해 항상 죽임을 당합니다.

중첩된 if'ami가 있는 구성은 항상 종료됩니다. 이러한 중첩을 처음부터 생성하려면 어떻게 해야 합니까?

완전 이해불가...

당신이 이해하지 못한다면, 나는 단지 동정할 수 있습니다.

저에게는 표준 논리가 더 눈에 띄고 이해하기 쉽습니다.

당신의 논리는 표준이 아닙니다. 그녀는 틀렸다.
 
xrust :

저에게는 한 줄이나 한 열에 대괄호를 배치하는 것이 훨씬 더 논리적입니다. 블록이 어디에서 시작되고 끝나는지 명확하지 않은 코드를 이해하는 것은 매우 어렵습니다. 글쎄, 그러한 형식화의 목적이 코드의 의미를 적으로부터 숨기는 것이라면 목표가 달성됩니다.
 
TheXpert :
중첩된 if'ami가 있는 구성은 항상 종료됩니다. 이러한 중첩을 처음부터 생성하려면 어떻게 해야 합니까?

당신이 이해하지 못한다면, 나는 단지 동정할 수 있습니다.

당신의 논리는 표준이 아닙니다. 그녀는 틀렸다.

수정, 문구만 잘라주세요 :-)

--

비표준 논리 - 그것이 틀렸다는 것을 의미하지는 않습니다.

--

비표준 로직의 경로가 표준 로직보다 짧은 경우 - 입력과 출력이 동일한 조건에서

지옥에 표준!

그렇다면 나는 비표준 논리를위한 것입니다

--

예, 위 코드의 위기는 읽기 어렵습니다 ...

아주 짧은 코드를 만나곤 했지만! 읽기 힘든...

유지 관리 - 이러한 코드 복제는 이상적이지 않습니다.

당신이 유통을 위해 글을 쓴다면, 당신은 일반적으로 이 모든 것을 동반하는 동료들을 돌보게 됩니다.

누군가가 코드를 깨뜨릴 것이라고 계산에 적는다면!

야생을 헤쳐나가기 위한 이상적인 논리 - 올바르게 작성하지만 읽을 수 없는 코드 를 만듭니다.

 
drknn :

펑크가 난 곳을 이해하지 못합니까? 그리고 왜 두 번째인가? 이것이 두 번째라면 첫 번째는 어디에 있습니까?

꾸지람을 당한 코드는 정말 별거 아닌데 헷갈리기 딱!

 

2 비냉. Victor, 왜 항상 주문 선택 기능을 호출 합니까? 하나의 루프에서 모든 변수를 채우는 것이 더 쉽습니다.

 

그리고 나를 위해 그것은 꽤 좋습니다 :

 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에서 && 및 || C++의 그것과 다르기 때문에 조건을 분리하는 것이 합리적입니다.

FION :

2 비냉. Victor, 왜 항상 주문 선택 기능을 호출합니까? 하나의 루프에서 모든 변수를 채우는 것이 더 쉽습니다.

모든 사람에게 동일하지는 않습니다.
 
TheXpert :

...모두에게 똑같지는 않습니다.


그것은 분명하다. 코드 최적화의 요점은 무엇입니까? 줄 수를 줄이면? 나는 코드의 속도를 높이는 것만이 요점이라고 생각합니다. 이것은 예를 들어 순환 함수에 대한 호출 수를 줄임으로써 달성할 수 있습니다. 또는 지표 계산의 반복 배제 . 다소 이렇습니다.
 
FION :

나는 코드의 속도를 높이는 것만으로 요점을 본다

대체로 90%의 경우 속도는 중요하지 않습니다. 요점은 초기에 코드를 작성하고 가능한 한 쉽게 읽을 수 있도록 만드는 것입니다.

그런 다음 시간이 중요한 경우 속도를 최적화합니다.

 

여기 에서 여기로 이동

 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
         }
      }