You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MQL4中Hour函数参数错误,寻求交易时间限制实现方案

交易时间限制实现及错误修复方案

错误原因与修复

你遇到的'Hour' - wrong parameters count错误,是因为在MQL4/MQL5中函数调用不符合规范:

  • 在MQL4里,Hour()是无参函数,仅用于获取当前K线的小时数;若要从指定datetime变量中提取小时,必须使用TimeHour()(接收一个datetime参数)。
  • 即使MQL5中Hour()支持带参数,统一使用TimeHour()也能保证跨版本兼容性。

修复后的基础校验函数:

// 校验交易时间是否合法的函数
bool IsTradeTime() {
    datetime now = TimeCurrent();
    int hour = TimeHour(now);
    int minute = TimeMinute(now); // 如需精确到分钟可启用

    // 示例:允许交易时段为9:00-15:30(注意:此处为服务器时区时间,需自行调整时区偏移)
    if ((hour > 9) || (hour == 9 && minute >= 0)) {
        if ((hour < 15) || (hour == 15 && minute <= 30)) {
            return true;
        }
    }
    return false;
}

交易时间限制进阶建议

  • 时区校准:MT4/MT5默认使用服务器时区,若需对应本地时区(如北京时间),需添加时区偏移。例如服务器为UTC时区,北京时间需加8小时:
    datetime now = TimeCurrent() + 8 * 3600; // 8小时转秒数
    
  • 排除非交易日:结合TimeDayOfWeek()函数过滤周末或节假日:
    int weekDay = TimeDayOfWeek(now);
    if (weekDay == 0 || weekDay == 6) { // 0=周日,6=周六,根据服务器时区调整
        return false;
    }
    
  • 精细时段控制:若要避开特定时段(如早盘跳空),可同时判断小时、分钟甚至秒数,提升校验精度。
  • 调试日志:添加日志输出便于排查问题:
    Print("当前时间:", TimeToString(now), ",校验结果:", IsTradeTime());
    

内容的提问来源于stack exchange,提问作者user1582596

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:20:19