多级别均线

楼主  收藏   举报   帖子创建时间:  2019-05-05 09:32 回复:0 关注量:891

#property indicator_chart_window    //指标放在主图; indicator_separate_window 附图
#property indicator_buffers 2        //设置指标线数组1条

#property indicator_color1  BlueViolet      //第一条指标线为白色;
#property indicator_color2  Magenta

#property indicator_style1 STYLE_SOLID //线为实体的
#property indicator_width1 2           //宽度为1
#property indicator_width2 1           //宽度为1


extern int MA1=160;                    //设立二个整数型变量,默认值为12和26,允许外部修改值
extern int MA2=20;

double     buf1[];                     //创建一个数组
double     buf2[];  

int init()                            //初始化函数,该函数进在指标加载时只运行一次。init是系统默认的函数名
  {
   SetIndexBuffer(0,buf1);             //设置数组buf1为第一条指标线
   SetIndexStyle(0,DRAW_LINE);        // 设置第一条指标线线型为连续型曲线
   SetIndexBuffer(1,buf2);             //设置数组buf1为第一条指标线
   SetIndexStyle(1,DRAW_LINE);        // 设置第一条指标线线型为连续型曲线
   IndicatorDigits(Digits);          //设置指标精确到小数位数
   return(0);
  }

//指标触发函数。与init函数相区别,该函数在有行情数据变化时被触发,
//如果数据被不断更新,则该函数则将被不断执行。

int start()      
  {
   int limit=Bars-IndicatorCounted();     //自定义了一个变量limit,并对其赋值;ars是图表中的柱数(K线数)
                                         //IndicatorCounted()函数调用的是缓存中的柱数,就是已经计算过的有值的柱数。
   if(Period()==PERIOD_M1)                 //判断当前为什么周期图 PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1
   {  MA1=100;   }
   if(Period()==PERIOD_M5)               
   {  MA1=120;   }
   if(Period()==PERIOD_M15 || Period()==PERIOD_H1)               
   {  MA1=80;   }
    if(Period()==PERIOD_M30)               
   {  MA1=160;   }
    if(Period()==PERIOD_H4 || Period()==PERIOD_D1 )               
   {  MA1=110;   }
  
   for(int i=0; i<limit;i++)
    {
//给数组buf赋值,其值分别为相应位置上两条均线计算出的差
//i是水平位置索引值,即烛柱从右到左的序号,右边第一个烛柱序号为0

    buf1[i]= iMA(NULL,0,MA1,0,1,0,i);
    buf2[i]= iMA(NULL,0,MA2,0,1,0,i);
       }
   return(0);
  }



打赏