有您的持续关注
我们会做得更好

之字形通道和KD结合的指标Channel@Stoch



Channel@Stoch指标在主图绘制通道并提示KD超买超卖。

Channel@Stoch指标图表效果如下:Channel@Stoch指标

Channel@Stoch指标源码如下:

//+------------------------------------------------------------------+
//|                                                Channel@Stoch.mq4 |
//|                                     Copyright 2014, QQ:125808047 |
//+------------------------------------------------------------------+
#property copyright "www.125808047.com"
#property link      "http://www.125808047.com/"

#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Magenta
#property indicator_color3 Red
#property indicator_color4 Blue

extern double 超卖水平     = 20;
extern int    K周期        = 50;
extern int    慢周期       = 3;
extern int    均类         = 0;
extern int    用价         = 0;
extern int    显示通道方式 = 2; // 
extern int    显示之转方式 = 1; // 

double   之峰[], 
         之谷[], 
         红顶轨[], 
         蓝底轨[], 
         KD[]; 
double   JT[], JP[];
double 超买水平;
bool   已查峰;
double 统一顶价, 统一底价;
int    jDn, jUp;
bool   count    = 1;

//-----------初始化-------------+

int init()
  {
   if(显示之转方式<0 || 显示通道方式<0)
      count= 0;
   显示之转方式= MathAbs(显示之转方式);
   显示通道方式= MathAbs(显示通道方式);
   超买水平= 100.0-超卖水平; 

   SetIndexBuffer(0, 之峰);
   SetIndexEmptyValue(0, 0.0);
   SetIndexLabel(0, "之峰价");
   
   SetIndexBuffer(1, 之谷);
   SetIndexEmptyValue(1, 0.0);
   SetIndexLabel(1, "之谷价");
   
   if(显示之转方式>0){
      SetIndexStyle(0, DRAW_ZIGZAG);
      SetIndexStyle(1, DRAW_ZIGZAG);
     }
   else{     
      SetIndexStyle(0, DRAW_NONE);
      SetIndexStyle(1, DRAW_NONE);
     }

   SetIndexBuffer(2, 红顶轨);
   SetIndexEmptyValue(2, 0.0);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexLabel(2, "红顶轨");

   SetIndexBuffer(3, 蓝底轨);
   SetIndexEmptyValue(3, 0.0);
   SetIndexStyle(3, DRAW_LINE);
   SetIndexLabel(3, "蓝底轨");

   if(显示通道方式>0){
      SetIndexStyle(2, DRAW_LINE);
      SetIndexStyle(3, DRAW_LINE);
     }
   else{     
      SetIndexStyle(2, DRAW_NONE);
      SetIndexStyle(3, DRAW_NONE);
     }

   SetIndexBuffer(4, KD);
   SetIndexStyle(4, DRAW_NONE);
   string 标签4= "St("+K周期+", "+慢周期+") "+均类+", "+用价;
   SetIndexLabel(4, 标签4);

   IndicatorShortName("ZZ@KD"); 

   return(0);
  }
int deinit()
  {
//---- 
  Comment("www.125808047.com"); 
//----
   return(0);
  }
//-----------主函数-------------+

int start()
  {
   int 已计= IndicatorCounted();
   if(Bars-已计-1>1)
      已计= 重新初始化子();
   int 最少计= Bars-已计-1;

   for(int i=最少计; i>=0; i--)
      KD[i]= iStochastic(NULL, 0, K周期, 1, 慢周期, 均类, 用价, 0, i); 

   for(i=最少计; i>0; i--){
      double KD值= KD[i];
      jDn++;
      jUp++;

      bool 进入超买= KD值>=超买水平;
      bool 进入超卖= KD值<=超卖水平;
      
      if(已查峰==1){
         if(进入超买){
            double 极低值= High[i]*100;
            if(count){
               for(int k=jUp; k>=0; k--)
                  if(Low[i+k]<极低值){
                     int 极拐时= i+k;
                     极低值= Low[i+k];
                    }
              }
            else{
               for(k=0; k<=jUp; k++)
                  if(Low[i+k]<极低值){
                     极拐时= i+k;
                     极低值= Low[i+k];
                 }
              }

            统一底价= Low[极拐时];
            if(显示之转方式==1)
               之谷[极拐时]= 统一底价;
            else
               之谷[i]= 统一底价;

            if(显示通道方式==1)
               for(k=极拐时; k>i; k--)
                  蓝底轨[k]= 统一底价;
            已查峰= 0;
           }
        }

      else
      if(已查峰==0){
         if(进入超卖){
            double 极高值= 0;
            if(count){
               for(k=jDn; k>=0; k--)
                  if(High[i+k]>极高值){
                     极拐时= i+k;
                     极高值= High[i+k];}}
                  else{
                     for(k=0; k<=jDn; k++)
                        if(High[i+k]>极高值){
                           极拐时= i+k;
                           极高值= High[i+k];
                          }
                    }

            统一顶价= High[极拐时];
            if(显示之转方式==1)
               之峰[极拐时]= 统一顶价;
            else
               之峰[i]= 统一顶价;

            if(显示通道方式==1)
               for(k=极拐时; k>i; k--)
                   红顶轨[k]= 统一顶价;
            已查峰=1;
           }
        }

      if(进入超买)
         jUp= -2;
      if(进入超卖)
         jDn= -2;

      for(k=0; k<2; k++) {
         红顶轨[i-k]= 统一顶价;
         蓝底轨[i-k]= 统一底价;
        }
     }
        
   return(0);
  }

//------------------------+

int 重新初始化子()
  {
   ArrayInitialize(之峰, 0.0);
   ArrayInitialize(之谷, 0.0);
   ArrayInitialize(红顶轨, 0.0);
   ArrayInitialize(蓝底轨, 0.0);
   ArrayInitialize(KD, 0.0);
   已查峰= 0; 统一顶价= 0;统一底价= 0;jDn= 0;jUp= 0;
   return(0);
  }

//------------------------+

如您喜欢此文章请点下面分享按钮↴峰汇在线 » 之字形通道和KD结合的指标Channel@Stoch
上一篇:
下一篇:
分享到:更多 ()