모닝 플랫의 고장 - 어떤 쌍입니까? - 페이지 22

 

Dserg , Nlin 대신 채널 시작 시간과 채널 종료 시간 이 있는 표시기 http://Dserg-LinRegressionBreakout_v1.1.mq4 의 다른 버전을 만들 수 있습니까?

나는 매우 감사하게 될 것입니다.
 
gince :

Dserg , Nlin 대신 채널 시작 시간과 채널 종료 시간 이 있는 표시기 http://Dserg-LinRegressionBreakout_v1.1.mq4 의 다른 버전을 만들 수 있습니까?

나는 매우 감사하게 될 것입니다.

새로운 채널의 형성이 반드시 이전 채널이 끝난 후에 발생하지 않는다면 더 좋을 것입니다. 새로운 트렌드는 종종 이전 채널이 끝나기도 전에 시작되기 때문입니다. 즉, 겹치는 채널을 형성할 수 있어야 하며, 사진이 더 잘 보이려면 인접한 채널의 색상이 달라야 합니다(2색이면 충분).

 

직접 해봤는데 안되네요. 아마도 누군가가 고칠 것입니다.

 //+------------------------------------------------------------------+
//|                                                                  |
//|       Èíäèêàòîð äëÿ àâòîìàòè÷åñêîãî ïîñòðîåíèÿ ñóæåíèÿ           |
//|       êàíàëîâ ëèíåéíîé ðåãðåññèè                                 |
//|                               https://www.mql5.com/ru/users/dserg |
//+------------------------------------------------------------------+
#property  copyright "Dserg, 2010"
#property  link       "https://www.mql5.com/ru/users/dserg"

//---- indicator settings
#property  indicator_chart_window
#property  indicator_buffers 8
#property indicator_color1 DeepSkyBlue
#property indicator_color2 DeepSkyBlue
#property indicator_color3 FireBrick
#property indicator_color4 DeepSkyBlue
#property indicator_color5 DeepSkyBlue
#property indicator_color6 Yellow
#property indicator_color7 HotPink
#property indicator_color8 LawnGreen 

//---- buffers
double B0[];
double B1[];
double Stop[];
double B3[];
double B4[];
double Up[];
double Dn[];
double Target[];

extern string S1= "Ìèí. äëèíà êàíàëà ëèíåéíîé ðåãðåññèè" ;
extern int Nlin;
extern int start = 20 ;
extern int   stop = 7 ;
extern string S2= "Ìàêñ. âûñîòà êàíàëà â ïóíêòàõ" ;
extern int r0= 150 ;
extern string S3= "Öåëü ïðè ïðîáîå îòí. øèðèíû êàíàëà" ;
extern double t0= 2.618 ;
extern string S4= "Èñïîëüçîâàòü äëÿ ðàñ÷¸òà Close,\n åñëè false - High/Low" ;
extern bool useClose= true ;
extern string S5= "Êîëè÷åñòâî áàðîâ äëÿ ðàññ÷¸òà" ;
extern int Nbars= 5000 ;

bool isChannel;
datetime chEnd;
double a0;
double b0;
double range0;
datetime PrevTime;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 3additional buffers are used for counting.
   
//---- drawing settings

   SetIndexStyle( 0 , DRAW_LINE , STYLE_SOLID , 2 );
   SetIndexBuffer ( 0 , B0);      
   SetIndexStyle( 1 , DRAW_LINE , STYLE_SOLID , 2 );
   SetIndexBuffer ( 1 , B1);      
   SetIndexStyle( 2 , DRAW_ARROW , 0 , 2 );
   SetIndexBuffer ( 2 , Stop);      
   SetIndexStyle( 3 , DRAW_LINE , STYLE_DOT );
   SetIndexBuffer ( 3 , B3);      
   SetIndexStyle( 4 , DRAW_LINE , STYLE_DOT );
   SetIndexBuffer ( 4 , B4);      

   SetIndexStyle( 5 , DRAW_ARROW , 0 , 1 );
   SetIndexBuffer ( 5 , Up);      
   SetIndexArrow( 5 , 233 );        
   SetIndexStyle( 6 , DRAW_ARROW , 0 , 1 );
   SetIndexBuffer ( 6 , Dn);      
   SetIndexArrow( 6 , 234 );        
   SetIndexStyle( 7 , DRAW_ARROW , 0 , 1 );
   SetIndexBuffer ( 7 , Target);      
   SetIndexArrow( 7 , 231 );        

   SetIndexEmptyValue( 0 , 0.0 );   
   SetIndexEmptyValue( 1 , 0.0 );   
   SetIndexEmptyValue( 2 , 0.0 );   
   SetIndexEmptyValue( 3 , 0.0 );   
   SetIndexEmptyValue( 4 , 0.0 );   
   SetIndexEmptyValue( 5 , 0.0 );   
   SetIndexEmptyValue( 6 , 0.0 );   
   SetIndexEmptyValue( 7 , 0.0 );   

   SetIndexLabel( 0 , "Channel Low" );
   SetIndexLabel( 1 , "Channel High" );
   SetIndexLabel( 2 , "Stop/Reverse" );
   SetIndexLabel( 3 , "Channel Low Extended" );
   SetIndexLabel( 4 , "Channel High Extended" );
   SetIndexLabel( 5 , "BUY Signal" );
   SetIndexLabel( 6 , "SELL Signal" );
   SetIndexLabel( 7 , "Target" );

   isChannel= false ;
   
   return ( 0 );
  } 

int deinit()
  {
  } 
//---------------------------------------------------------------------------------------
int start()

  {
   Nlin = ( 24 - (start-stop))* 60 / Period (); 
         Comment ( "Nlin = " + Nlin);
 //if (iTime(NULL,PERIOD_D1,0)!=PrevTime)  return(0);
 //PrevTime = iTime(NULL,PERIOD_D1,0);
 
     if ( Bars -IndicatorCounted()== 0 ) return ( 0 );
     // int loopbegin = Bars - IndicatorCounted()+20*Nlin;
       int loopbegin = Nbars;
 
       int i,j;
       double a,b,c,
             sumy= 0.0 ,
             sumx= 0.0 ,
             sumxy= 0.0 ,
             sumx2= 0.0 ,
             h= 0.0 ,l= 0.0 ,
             range = 0.0 ;   
      isChannel= false ;
       for (i = loopbegin; i >= 0 ; i--) {
         B0[i]= 0 ;
         B1[i]= 0 ;
         B3[i]= 0 ;
         B4[i]= 0 ;
         Up[i]= 0 ;
         Dn[i]= 0 ;
         Stop[i]= 0 ;
         Target[i]= 0 ;
      }
      
       for (i = loopbegin; i >= 0 ; i--) {
         
         
         //ó íàñ óæå åñòü êàíàë, æä¸ì, ïîêà åãî ïðîáü¸ò
         if (isChannel) {
             //double up0=a0*(i-chEnd)+b0+range0;
             //double dn0=a0*(i-chEnd)+b0-range0;
             double up0=a0*i+b0+range0;
             double dn0=a0*i+b0-range0;
            B3[i]=up0;
            B4[i]=dn0;
             //ïðîâåðÿåì ïðîáèòèå
             //ââåðõ
             if (Open[i]>up0) {
               Up[i]=up0;
               Stop[i]=dn0;
               Target[i]=up0+(up0-dn0)*(t0- 1 );
               isChannel= false ;
               //continue;
            }
             //âíèç
             if (Open[i]<dn0) {
               Dn[i]=dn0;
               Stop[i]=up0;
               Target[i]=dn0-(up0-dn0)*(t0- 1 );
               isChannel= false ;
               //continue;
            }
             continue ;
         }            

         bool flag= false ;
         for (j= 0 ;j<Nlin+ 1 ;j++) {
             if (B3[i+j]> 0.0 &&!isChannel) {
               flag= true ;
            }
         }
         if (flag) continue ;
         
         
         a= 0.0 ;b= 0.0 ;c= 0.0 ;
         sumx= 0.0 ;sumy= 0.0 ;
         sumxy= 0.0 ;sumx2= 0.0 ;
         h= 0.0 ;l= 0.0 ;

         //ñ÷èòàåì êàíàë ëèíåéíîé ðåãðåññèè îò i+Nlin äî i 
         if (StrToTime(stop) != Hour()) return ( 0 );
         for (j= 0 ; j<Nlin; j++)
         {
            sumy+=Close[i+j];
            sumxy+=Close[i+j]*(i+j);
            sumx+=(i+j);
            sumx2+=(i+j)*(i+j);
         }
         c=sumx2*Nlin-sumx*sumx;
         if (c== 0.0 ) {
             Alert ( "Error in linear regression!" );
             return (- 1 );
         }
         a=(sumxy*Nlin-sumx*sumy)/c;
         b=(sumy-sumx*a)/Nlin;
         
         //îïðåäåëÿåì ãðàíèöû êàíàëà
         for (j= 0 ;j<Nlin;j++)
         {
           double LR=a*(i+j)+b;
           if (useClose) {
             if (Close[j+i]-LR > h) h = Close[i+j]-LR;
             if (LR - Close[i+j]> l) l = LR - Close[i+j];
           } else {
             if (High[j+i]-LR > h) h = High[i+j]-LR;
             if (LR - Low[i+j]> l) l = LR - Low[i+j];
           }           
         }  
         range = MathMax (l,h);
         
         //ïðîâåðêà øèðèíû êàíàëà
         //if (range<r0*Point) {
             //åñòü êàíàë, ñîõðàíÿåì
            isChannel= true ;
            a0=a;
            b0=b;
            chEnd=iTime( NULL , 0 ,i);
            range0=range;
            
             for (j= 0 ;j<Nlin;j++) {
               B3[i+j]=a*(i+j)+b+range;
               B4[i+j]=a*(i+j)+b-range;
               B0[i+j]=a*(i+j)+b+range;
               B1[i+j]=a*(i+j)+b-range;
            }
         //}
            

         
      }
       return ( 0 );
  }
//+------------------------------------------------------------------+



            
            
 
정의에 따르면 B0[k]=B3[k]입니다. B1[k]=B4[k]; k=모두
 
타라 :
정의에 따르면 B0[k]=B3[k]입니다. B1[k]=B4[k]; k=모두

타라 :
정의에 따르면 B0[k]=B3[k]입니다. B1[k]=B4[k]; k=모두


| 이 글은 Dserg 작가의 글입니다. 하지만 그렇게 되어야 합니다. B0[k]; B1[k] 채널 라인 STYLE_SOLID , 다른 라인은 STYLE_DOT 스타일 의 처음 두 라인의 확장입니다.

코드에서 변경하려고 한 것은 굵게 표시됩니다. 처음에는 막대의 수, 즉 채널의 길이를 방어했습니다. 그런 채널은 하루에 한 번 그려지기 때문에 새로운 날이 나타나는지 확인합니다. 그런 다음 시간 확인을 추가했습니다. 채널이 시간 초과되면 보호하고 그립니다.

하지만 작동하지 않습니다

 
스레드를 읽지 않았습니다. 여기 봤어?
 
조금 다른 측면에서 살펴보고 싶지만 연구에는 지표가 필요합니다. 나는 그것을 스스로 쓸 수 없다, 지금까지 아무도 내 씨발에 따라 그것을 수정하지 않았다. 손으로 채널을 그리지만 바는 이미 채널을 그릴 쉴드에 지쳤습니다. 10칼랄의 역사에 대해서는 아무것도 결정할 수 없다
 

주제가 흥미롭습니다. 더 깊이 들어가고 싶은...

다음은 차량에 대한 설명입니다.

내가 파헤친 것 - "모닝 플랫 테스트" 스레드가 아니라 여기에 게시하겠습니다.

 

내 프로필 구독에서 우연히 이 주제를 찾았습니다.

누가이 방향으로 파고 있습니까?

IMHO - 더 깊이 들어갈 시간입니다 ...

 
Roman. :

내 프로필 구독에서 우연히 이 주제를 찾았습니다.

누가이 방향으로 파고 있습니까?

IMHO - 더 깊이 들어갈 시간입니다 ...

트렌드에 슈퍼입니다... 플랫에 고장은 절대 안 들어요...