智能交易网,程序化交易,自动交易,量化交易

 找回密码
 注册

QQ登录

只需一步,快速开始

手机短信登录

参加MT4智能交易编程培训,7课免费在线试听MT4指标,EA代写,或EA指标加密账户远程验证服务 最完善商业MT4跟单系统(0.1秒极速响应不漏单)
为论坛做贡献有奖学金,奖学金可直接换真钱 扫本站微信公 众号部分视频课程指标EA免费得智能交易网MT4操盘神器,扫公众号免费得
查看: 609|回复: 0

MT5的课程中数据库Zigzag指标,不能调用指定品种和周期!

[复制链接]
发表于 2018-7-12 19:59:48 | 显示全部楼层 |阅读模式
在shuju.mqh的库文件中,获取ZIGZAG的值中,没有指定品种和周期。
附源码:
void shuju::getzigzag(double &zigzag[][4],int geshu,int ExtDepth,int ExtDeviation,int ExtBackstep)
  ArrayResize(zigzag,geshu);
    ArrayInitialize(zigzag,0);
    double zigzagzhi[];
    int bars=Bars(Symbol(),0);
    ZigZag(zigzagzhi,bars,Symbol(),0,ExtDepth,ExtDeviation,ExtBackstep);
    datetime time[];
    gettime(time,bars);
    double low[];
    getlow(low,bars);
    int jishu=0;
    for(int i=0;i<bars;i++)
     {
        if(jishu>(geshu-1))
         {
           break;
         }
        if(zigzagzhi>0)
         {
           zigzag[jishu][0]=zigzagzhi;//记录高低点的值
           zigzag[jishu][1]=i;//记录高低点所在的K线序号
           zigzag[jishu][2]=(int)time;//记录高低点所在K线的时间
           
           if(zigzagzhi<=low)//低点
            {
              zigzag[jishu][3]=1;//如果值等于1,说明是低点
            }
           else//高点
            {
              zigzag[jishu][3]=2;//如果值等于2,说明是高点
            }
           jishu++;
         }
     }
}



但是自己修改之后:
void shuju::getzigzag(double &zigzag[][4],int geshu,string symbol,ENUM_TIMEFRAMES period,int ExtDepth,int ExtDeviation,int ExtBackstep)
{
    ArrayResize(zigzag,geshu);
    ArrayInitialize(zigzag,0);
    double zigzagzhi[];
    int bars=Bars(symbol,period);
    ZigZag(zigzagzhi,bars,symbol,period,ExtDepth,ExtDeviation,ExtBackstep);
    datetime time[];
    gettime(time,bars);
    double low[];
    getlow(low,bars);
    int jishu=0;
    for(int i=0;i<bars;i++)
     {
        if(jishu>(geshu-1))
         {
           break;
         }
        if(zigzagzhi>0)
         {
           zigzag[jishu][0]=zigzagzhi;//记录高低点的值
           zigzag[jishu][1]=i;//记录高低点所在的K线序号
         zigzag[jishu][2]=(int)time;//记录高低点所在K线的时间
           
           if(zigzagzhi<=low)//低点
            {
              zigzag[jishu][3]=1;//如果值等于1,说明是低点
            }
           else//高点
            {
              zigzag[jishu][3]=2;//如果值等于2,说明是高点
            }
           jishu++;
         }
     }
}

修改之后也没问题,测试单步也试过值没有问题,但是在实盘回撤就有问题了;
出现了这两个错误:

        array out of range in 'shuju.mqh' (1217,36)
        OnTick critical error


后面就出现这个:        MetaTester 5 forced to stop

问题就出在记录高低点的时间。这个要怎么解决呢?
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|sitemap|智能交易网,程序化交易,自动交易,量化交易 ( 苏ICP备08108698号,苏州智德金网络科技股份有限公司版权所有 )

GMT+8, 2019-10-14 09:59 , Processed in 0.033323 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表