微信扫一扫 分享朋友圈

已有 62 人浏览分享

开启左侧

MQL4自定义外汇MT4指标编写相关函数(一)

[复制链接]
62 0
MQL4自定义外汇MT4指标编写相关函数(一)
本组函数用于设计和编写自定义外汇MT4指标。
这些函数不能用在智能交易和脚本中。
  • IndicatorBuffers() – 外汇MT4指标数据缓冲区
  • IndicatorCounted() – 外汇MT4指标计数
  • IndicatorDigits() – 设置外汇MT4指标精度
  • IndicatorShortName() – 设置外汇MT4指标简称
  • SetIndexArrow() – 设置外汇MT4指标箭头符号
  • SetIndexBuffer() – 设置外汇MT4指标缓冲区位置
  • SetIndexDrawBegin() – 设置外汇MT4指标线起始位置
  • SetIndexEmptyValue() – 设置图表画线空值
  • SetIndexLabel() – 设置外汇MT4指标线标签
  • SetIndexShift() – 设置外汇MT4指标线偏移值
  • SetIndexStyle() – 设置外汇MT4指标线样式
  • SetLevelStyle() – 设置水平线样式
  • SetLevelValue() – 设置水平线值

    IndicatorBuffers() – 外汇MT4指标数据缓冲区void IndicatorBuffers(int count)为外汇MT4指标缓冲区分配内存,用于自定义外汇MT4指标计算。缓冲区的个数不能超过8个或者是小于在自定义缓冲区属性中所给出的值。
    如果自定义外汇MT4指标要求额外的缓冲区用于统计,那么这个函数必须使用指定的总缓冲区数。
    参数:
    count - 分配缓冲区的总数。缓冲区数应该在 indicator_buffers常量值 和8之间。 示例:
    #property  indicator_separate_window#property  indicator_buffers 1#property  indicator_color1  Silver//---- 外汇MT4指标参数extern int FastEMA=12;extern int SlowEMA=26;extern int SignalSMA=9;//---- 外汇MT4指标缓冲区double     ind_buffer1[];double     ind_buffer2[];double     ind_buffer3[];//+------------------------------------------------------------------+//| Custom indicator initialization function                         |//+------------------------------------------------------------------+int init()  {//---- 使用2个额外的缓冲区用于计算。   IndicatorBuffers(3);//---- 画线设置   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);   SetIndexDrawBegin(0,SignalSMA);   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);//---- 设置 3 个外汇MT4指标缓冲区位置   SetIndexBuffer(0,ind_buffer1);   SetIndexBuffer(1,ind_buffer2);   SetIndexBuffer(2,ind_buffer3);//----  数据窗口和自定义窗口的外汇MT4指标标签名称   IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");//---- 初始化结束   return(0);  }IndicatorCounted() – 外汇MT4指标计数int IndicatorCounted()在自定义外汇MT4指标上次计算运行之后,本函数返回已经计算好的的柱体(K线)数量。曾计算过的柱体(K线)不必重新计算。大多数情况下,相同的外汇MT4指标值不需要重算,因此本函数用于优化计算。
    注:最新的柱体(K线)不必考虑重算,在多数情况下,这个柱子有必要重算,然而,有时会遇到边界情况,也就是在新柱体的第一个价位时从智能交易调用自定义外汇MT4指标。可能先前柱子的最后一个价位还没有处理完(因为在这一跳进入时上一跳还没有处理完),因为这个原因,自定义外汇MT4指标将不会被调用和计算。为了避免外汇MT4指标计算出错,IndicatorCounted()函数将返回前一个柱数。
    示例:
      int start()    {     int limit;     int counted_bars=IndicatorCounted();  //---- 检验可能出现错误     if(counted_bars0) counted_bars--;     limit=Bars-counted_bars;  //---- 主循环     for(int i=0; i设置外汇MT4指标精度(小数点后位数)使其值显示直观化。货币对价格精度采用默认值,外汇MT4指标会添加到图表上。
    参数:
    digits - 精度要求(小数点后位数)。 示例:
    int init()  {//---- 使用2个额外的缓冲区用于计算。   IndicatorBuffers(3);//---- 画出参数设置   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);   SetIndexDrawBegin(0,SignalSMA);   IndicatorDigits(Digits+2); //设置外汇MT4指标精度 //----设置 3 个外汇MT4指标缓冲区位置    SetIndexBuffer(0,ind_buffer1);   SetIndexBuffer(1,ind_buffer2);   SetIndexBuffer(2,ind_buffer3);//---- 数据窗口和自定义窗口的外汇MT4指标标签名称   IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");//---- 初始化完成   return(0);  }IndicatorShortName() – 设置外汇MT4指标简称void IndicatorShortName(string name)设置显示在数据窗口和子窗口中自定义外汇MT4指标的“简称”。
    参数:
    name - 设置的名称。 示例:
    int init()  {//----使用2个额外的缓冲区用于计算   IndicatorBuffers(3);//---- 画出参数设置   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);   SetIndexDrawBegin(0,SignalSMA);   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);//---- 设置 3 个外汇MT4指标缓冲区位置   SetIndexBuffer(0,ind_buffer1);   SetIndexBuffer(1,ind_buffer2);   SetIndexBuffer(2,ind_buffer3);//---- 数据窗口和自定义窗口的外汇MT4指标标签名称   IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");//---- 初始化完成   return(0);  }SetIndexArrow() – 设置外汇MT4指标箭头符号void SetIndexArrow(int index, int code)为 DRAW_ARROW类型 的外汇MT4指标线设置一个箭头符号。
    箭头代码 范围限于33到255之间,超过无效。
    参数:
    index - 外汇MT4指标线。必须是 0 - 7 之间 code - 来自 Wingdings字体 或 箭头代码 的符号代码示例:
    int init()  {//---- 2 个外汇MT4指标缓冲区    SetIndexBuffer(0,ExtUppperBuffer);    SetIndexBuffer(1,ExtLowerBuffer);//---- 画线参数设置    SetIndexStyle(0,DRAW_ARROW);    SetIndexArrow(0,217);    SetIndexStyle(1,DRAW_ARROW);    SetIndexArrow(1,218);//---- 显示在DataWindow窗口    SetIndexLabel(0,"Fractal Up");    SetIndexLabel(1,"Fractal Down");//---- 初始化完成   return(0);  }SetIndexBuffer() – 设置外汇MT4指标缓冲区位置void SetIndexBuffer(int index, double array[])将自定义外汇MT4指标预定义的缓冲区绑定到全局数组。需要计算外汇MT4指标缓冲区的个数由 IndicatorBuffers() 函数设定并且不能超过8个。如果成功,返回TRUE,否则,将返回FALSE。如果想获得更详细的信息,可以调用 GetLastError() 函数。
    参数:
    index - 外汇MT4指标线。必须是 0 - 7 之间 array[] - 存储计算外汇MT4指标值的数组。示例:
      double ExtBufferSilver[];  int init()    {      SetIndexBuffer(0, ExtBufferSilver); // 第1个外汇MT4指标线外汇MT4指标值的缓冲区      // ...    }
    大家在看了小编以上对"MQL4自定义外汇MT4指标编写相关函数(一)"的介绍后应该都清楚了吧,希望对大家做单有所帮助。如果大家还想要下载更多有关"MQL4自定义外汇MT4指标编写相关函数(一)"的相关EA源码,敬请关注汇探网下载。我们会持续更新交易系统,EA源码。
  • 举报 使用道具

    回复
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    精彩推荐
    热门资讯
    网友晒图
    图文推荐
    • 联系我们
    • 邮箱:1912582076#qq.com(请把#改成@)
    • 电话:400-178-8526
    • QQ客服 1912582076
    • 工作时间:周一至周五(早上9点至下午5:30点)
    • 微信公众平台

    • 客服微信号

    QQ|外汇EA|炒外汇论坛|外汇ea|汇探网 |网站地图

    GMT+8, 2026-3-20 04:44 , Processed in 0.186593 second(s), 29 queries .

    Powered by 汇探网 免责申明:本平台仅提供 外汇ea, 外汇指标模板所有产品及展示信息均由第三方发布提供.|投资有风险,交易需谨慎.

    Copyright © 2014-2023, 汇探网-提供 外汇MT4指标,外汇EA下载,外汇交易系统,外汇开户赠金视频教程,外汇软件工具等.版权所有,复制必究.