[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 170

 
splxgf :
귀하의 버전은 작성자 버전에 추가된 이 두 줄로 축소할 수 있으며, 원칙적으로 조건을 약간 변경하면 속도가 빨라집니다.
확신하는??
 
MaxZ :
확신하는??

본질적으로, UPprice / LOWprice 범위에 속하지 않는 수표 및 계산에서 양초를 제외하려는 귀하의 제안은 ... 이것은 두 줄로 제외됩니다. 사이클에서 벗어나지 않는다면 가격은 우리가 필요로 하는 범위에 있으며 표준 검사를 수행합니다. INS로 작업하는 논리가 이전 반복에서 이 변수의 값을 사용하는 것이 매우 영리하기 때문에 코드가 더 빨리 실행되어 결과가 손상될 수 있습니다. 이는 말도 안되는 소리입니다.

 
splxgf :

본질적으로, UPprice / LOWprice 범위에 속하지 않는 수표 및 계산에서 양초를 제외하려는 귀하의 제안은 ... 이것은 두 줄로 제외됩니다. 사이클에서 벗어나지 않는다면 가격은 우리가 필요로 하는 범위에 있으며 표준 검사를 수행합니다. INS로 작업하는 논리가 이전 반복에서 이 변수의 값을 사용하는 것이 매우 영리하기 때문에 코드가 더 빨리 실행되어 결과가 손상될 수 있습니다. 이는 말도 안되는 소리입니다.

확신! :)))))


이전에 다음 코드를 제공했습니다.

splxgf :
        if (LOWprice > iHigh ( NULL , 60 ,i)) continue;
         if (UPPprice < iLow ( NULL , 60 ,i)) continue;

가격이 저가보다 낮으면 가격이 고가보다 높은지 확인해야 하는 이유는 무엇입니까? 귀하의 버전에서는 이 조건이 제외되지 않습니다. 내 제안된 버전에서:

         if (UPP)
            ... // не выполнится
         if (LOW)
             if (LOWprice < iLow ( NULL , 60 ,i))
               continue ;
             else
            ..

제외된.

내 코드가 최적이 아닐 수 있음을 부인하지 않습니다.

그러나 몇 배나 더 빠를 것 같습니까?

         if (UPP)

일보다

         if (LOWprice > iHigh ( NULL , 60 ,i))

?

실제로, 본질적으로:

UPP = LOWprice > iHigh ( NULL , 60 , i);

나는 이것을 확실히 알고(입찰가가 현재 역사적 막대 안에 있는 경우를 제외하고), 당신이 그것을 계산합니다...

 
abolk :


응.

마찬가지로 코드의 세 줄의 명확한 코드가 이해하기 어려운 코드로 변환되도록 왜곡되어야 합니다.

수표 iLow, iHigh를 분할하려는 아이디어가 있다면 즉시 분할할 수 있습니다.

그리고 아무것도 하지 않는다

그리고 변태된 성가신 코드가 때때로 간단한 세 줄보다 빠르게 실행될 수 있다고 생각하지 않았습니까? :)))
 
 INS = True;
   
   for ( int i= 1 ; i<= 6000 ; i++)
   {
       if (INS)
      {
         if (LOWprice > iHigh ( NULL , 60 ,i))
         {
            INS = False;
            UPP = True;
            LOW = False;
             continue ;

이 코드를 고려하십시오

INS=참;

주기가 갔다

if (INS) 일반 비행

if (LOWprice...) 예를 들어 조건이 충족되지만 여기서는 INS=False를 얻고 다음 반복으로 이동하기 때문에 불투명한 것으로 판명되었습니다.

그런 다음 (거짓) 항해하면 이것은 또 다른 막대이므로 어느 막대가 궁금합니다 ...

내 코드에 관해서는 가격을 확인하지 않고 현재 가격 에서 +300/-300핍의 복도로 들어가는 바를 확인합니다. 그렇다면 계산해야 합니다. 다른 모든 최적화는 그렇게 중요하지 않습니다. 처음 두 가지 검사는 예를 들어 불필요한 막대를 90% 제거하기 때문입니다.

 
splxgf :

그런 다음 (거짓) 항해하면 이것은 또 다른 막대이므로 어느 막대가 궁금합니다 ...

그들은 항해하지 않았지만 다른 { ... }을 따라 더 항해했습니다.
 

그리고 그들은 정말로 떠 다녔습니다 ...

이것이 부울 변수가 각 조건 후에 다른 if (LOWprice > iHigh (NULL,60,i))가 있는 경우 가속을 제공하는 것으로 간주되는 이유입니다. 측면에만 동일한 계란, 하나의 조건 및 많은 과제 추가...

 

앗!

여기서 논란은 농담이 아니라 불타올랐다.

지금까지 이 작업을 수행했습니다.

 extern int Distance = 3000 ;
 int CountH,NewCountH,CountL,NewCountL,CountB,NewCountB;
 
 double ResistH,ResistL,ResistB;
 
//======================================================================
int start(){


   double bid = Bid;
   double UPPprice = bid+Distance* Point ;
   double LOWprice = bid-Distance* Point ;
      NewCountH= 0 ;
      NewCountL= 0 ;
      NewCountB= 0 ;
      ResistH= 0 ;
      ResistL= 0 ;
      ResistB= 0 ;
  
   while (LOWprice<UPPprice)
    {
      CountH= 0 ;
      CountL= 0 ;
       for ( int i= 1 ; i<= 6000 ; i++){  
           if ( iHigh ( NULL , 60 ,i)>LOWprice) 
           if (LOWprice> iLow ( NULL , 60 ,i)) 
           if (LOWprice> bid) CountH++; else CountL++;
       }  
       if (CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
       if (CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+ 25 * Point ;
    }
      CountB= 0 ;
       for (i= 1 ; i<= 6000 ; i++){  
           if ( iHigh ( NULL , 60 ,i)>=bid) if (bid>= iLow ( NULL , 60 ,i)) CountB++;
       }
       if (CountB>NewCountB){NewCountB=CountB;ResistB=bid;}  
 
     
   
     Comment ( "\n" , 
       "\n" ,     
//      "\n", "     Spread                                ", MarketInfo(Symbol(), MODE_SPREAD),  
       "\n" , "     Distance                             " , Distance, 
       "\n" , "     CountH                               " , NewCountH, 
       "\n" , "     CountB                               " , NewCountB, 
       "\n" , "     CountL                                " , NewCountL, 
       "\n" , "-------------------------------------------------- " ,     
       "\n" );
      

     if ( ObjectFind ( "RH" ) == - 1 ) {
       ObjectCreate ( "RH" , OBJ_HLINE , 0 , 0 , ResistH);
       ObjectSet ( "RH" , OBJPROP_COLOR , Magenta );
       ObjectSet ( "RH" , OBJPROP_STYLE , STYLE_DOT );
     } else ObjectMove ( "RH" , 0 , iTime ( NULL , 0 , 0 ), ResistH);

     string text= DoubleToStr (NewCountH, 0 );
     ObjectDelete ( "RHtxt" ); 
     if ( ObjectFind ( "RHtxt" ) == - 1 ) {
       ObjectCreate ( "RHtxt" , OBJ_TEXT , 0 , 0 , 0 );
       ObjectSetText ( "RHtxt" , text , 8 , "Arial" , Aqua );
       ObjectMove ( "RHtxt" , 0 , iTime ( NULL , 0 , 0 ), ResistH);
      } else ObjectMove ( "RHtxt" , 0 , iTime ( NULL , 0 , 0 ), ResistH);
      
     string text3= DoubleToStr (NewCountB, 0 );
     ObjectDelete ( "RBtxt" ); 
     if ( ObjectFind ( "RBtxt" ) == - 1 ) {
       ObjectCreate ( "RBtxt" , OBJ_TEXT , 0 , 0 , 0 );
       ObjectSetText ( "RBtxt" , text3 , 8 , "Arial" , Aqua );
       ObjectMove ( "RBtxt" , 0 , iTime ( NULL , 60 , 0 ), ResistB);
      } else ObjectMove ( "RBtxt" , 0 , iTime ( NULL , 60 , 0 ), ResistB);

     if ( ObjectFind ( "RL" ) == - 1 ) {
       ObjectCreate ( "RL" , OBJ_HLINE , 0 , 0 , ResistL);
       ObjectSet ( "RL" , OBJPROP_COLOR , Magenta );
       ObjectSet ( "RL" , OBJPROP_STYLE , STYLE_DOT );
     } else ObjectMove ( "RL" , 0 , iTime ( NULL , 0 , 0 ), ResistL);
     
     string text2= DoubleToStr (NewCountL, 0 );
     ObjectDelete ( "RLtxt" );
     if ( ObjectFind ( "RLtxt" ) == - 1 ) {
       ObjectCreate ( "RLtxt" , OBJ_TEXT , 0 , 0 , 0 );
       ObjectSetText ( "RLtxt" , text2 , 8 , "Arial" , Aqua );
       ObjectMove ( "RLtxt" , 0 , iTime ( NULL , 0 , 0 ), ResistL);
     } else ObjectMove ( "RLtxt" , 0 , iTime ( NULL , 0 , 0 ), ResistL);

 return ( 0 );}             //====== THE END ======================

가격의 움직임을 관찰하는 것은 매우 흥미 롭습니다. 항상 저항이 가장 적은 방향으로 가십시오.

미래의 움직임을 예측할 수도 있습니다. 보다.

물가는 강바닥을 따라 흐른다.

모두 감사합니다!

 

가장 높은 값을 가진 막대의 번호를 찾는 방법을 알려주세요.


Search_High=MathMax( 높음[i],높음[1])

 
001 :

가장 높은 값을 가진 막대의 번호를 찾는 방법을 알려주세요.


Search_High=MathMax( 높음[i],높음[1])

https://docs.mql4.com/ru/array/ArrayMaximum 을 통해 이동할 수 있습니다.

High 어레이에 의해.