📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    [转帖]MT编程入门教程(2)----指标画哪里?价格窗口还是独立窗口?

    leftme LV3
    2011-11-30 · 9142 阅读
    其实,都可以,不过是坐标的规格化,使得它们在相近的数据范围,就可以画在一起。
    看你自己的习惯。画在价格窗口,方便和价格同时感受。

    //+本例展示了如何把MA转换后画到独立窗口,同样也可以把独立窗口的指标改画在价格窗口
    //要达到这些目的,需要考虑两个方面 1 估计数据的范围,以确定以什么为单位? 2 确定坐标偏移,也就是确定坐标零点。
    //目的就是让你要画的多条线在同样的数值范围,这样才能同时画出,达到参考目的
    //比如-1000到+1000和0到+4这样两套数据要变换后才能在同图画出,
    //转换方法复习中学数学直角坐标系的缩放和平移部分-------------------------+
    &lt

    [转帖]MT编程入门教程(2)----指标画哪里?价格窗口还是独立窗口?

    [转帖]MT编程入门教程(2)----指标画哪里?价格窗口还是独立窗口?
    RE>// 共画2条线
      #property indicator_separate_window
      #property indicator_buffers 2
      #property indicator_color1 Red
      #property indicator_color2 Yellow
       
      // Parameter
      // MA-Properties
      extern double MovingFast     = 7;   
      extern   double MovingSlow     = 13;   
      extern   double MovingSlow02     = 13;   
      extern   int MaM=2;
      extern   int MaP=2;
      extern   int MaM0=3;
      extern   int MaP0=3;如改
       
      extern   int range1 = 11;
      extern   int range2 = 4;
       
      int i;
       
      // Buffer
      //// 共画2条线,用2个数组存储线数据
      double bufferMA1[];
      double bufferMA2[];
      //+------------------------------------------------------------------+
      //| Custom indicator initialization function                 |
      //+------------------------------------------------------------------+
      int init()
      {
      //// 设置2条线的顺序编号,画法,对应数组,
        SetIndexStyle( 0, DRAW_LINE );
        SetIndexBuffer( 0, bufferMA1 );
        SetIndexStyle( 1, DRAW_LINE );
        SetIndexBuffer( 1, bufferMA2 );
        return(0);
      }
      int deinit() {   return(0);}
      int start()
      {
      double Buffer10,Buffer11,Buffer20,Buffer21,Buffer30, Buffer31;
      int countedBars = IndicatorCounted();
        //---- check for possible errors
      if ( countedBars < 0 )   { return(-1);   }
      if ( countedBars > 0 ) { countedBars--; }
      int   barsToCount = Bars - countedBars;
      for ( int i = barsToCount; i >= 0; i-- )
      {
        //// 开始计算
        Buffer20 = iMA(NULL,0,MovingFast,0,MaM,MaP, i) ;//MovingFast
        Buffer30 = iMA(NULL,0,MovingSlow,0,MaM,MaP, i) ;//MovingSlow
        Buffer21 = iMA(NULL,0,MovingFast,0,MaM,MaP, i+range1) ;
        Buffer31 = iMA(NULL,0,MovingSlow02,0,MaM,MaP, i+range2) ;
        //赋值给数组以便画线,使用Point使得坐标以点为单位,保证本指标对不同货币的一致y轴单位和视觉效果
        bufferMA1<i> = MathRound((Buffer20-Buffer21)/Point);
        bufferMA2<i> = MathRound((Buffer30-Buffer31)/Point);
      }
      return(0);
      }
    上面把两个MA的差值画在独立窗口,当然若把差值再加上一个MA,就可以画在价格窗口。
    MA及其各种变化是最常用的指标基础。MA一般常用来替代价格本身 再做进一步计算。

    &ltRE>#property indicator_chart_window
      //......
        Buffer10 = iMA(NULL,0,MovingFast*6,0,MaM,MaP, i)
        bufferMA1 = MathRound(Buffer20-Buffer21)+Buffer10 ;
        bufferMA2 = MathRound(Buffer30-Buffer31)+Buffer10 ;
      //.........
    就可以把它们跌加到价格上画了。

    你只需修改Buffer10 ,Buffer20, Buffer21 Buffer30, Buffer31为你需要的,在考虑一下数据范围坐标问题,你可以画任意的指标了。
    [/td][/tr]
    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 27 个

    whyhui LV5

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    不是吧  

    chen1110 LV6

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    顶你一下.  

    alisa LV5

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    牛牛牛牛  

    小yo LV4

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    给推荐一个好的平台,这样EA才能很好的发挥啊  

    kalialy LV5

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    围观来了哦  

    郁闷小甜甜 LV5

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    EA!EA都要被他弄疯了!  

    xiaodong LV6

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    最好的,我们一般很难遇到,否则全球通用了,那谁亏呢  

    福尔摩斯 LV6

    发表于 2012-11-22 00:28:10 | 显示全部楼层

    不早了 各位晚安~~~~  

    严沃底 LV4

    发表于 2014-11-14 22:32:24 | 显示全部楼层

    亏损中……………………
    123下一页
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服