Skip to content

第一个程序

让我们尝试在脚本中添加一些简单但能说明问题的内容来演示其操作。将修改后的脚本重命名为HelloChart.mq5

在许多编程教科书中,初始示例都会打印神圣的"Hello, world"。在MQL5中,类似的问候可以这样实现:

cpp
void OnStart()
{
  Print("Hello, world");
}

但我们将其做得更具信息量:

cpp
void OnStart()
{
  Print("Hello, ", Symbol());
}

代码解析

  • Print函数

    • MQL5终端内置函数
    • 用于在"EA交易"日志中显示消息(通过工具 > EA交易窗口查看)
    • 支持多个参数,用逗号分隔
  • Symbol()函数

    • 无参数函数
    • 返回当前图表交易品种名称(如EURUSD)
    • 动态替换为当前图表品种

执行效果示例

当在EURUSD图表运行脚本时:

HelloChart (EURUSD,H1)        Hello, EURUSD

语法要点

  1. 字符串字面量

    • 使用双引号包裹固定字符序列
    • 示例中的"Hello, "包含逗号会原样输出
  2. 参数分隔符

    • 函数参数间的逗号是语法分隔符
    • 缺少参数分隔符会导致编译错误

常见错误示例

缺失分号错误

cpp
void OnStart()
{
  Print("Hello, ", Symbol()) // 缺少分号
}

编译错误

'}' - semicolon expected        HelloChart.mq5        17        1
'}' - unexpected end of program HelloChart.mq5        17        1

参数分隔符错误

cpp
Print("Hello, " Symbol()); // 缺少参数逗号

编译错误

'Symbol' - some operator expected HelloChart.mq5 16 19

重要结论

  1. 严格遵循语言语法规则
  2. 相同符号在不同上下文中作用不同(如字符串逗号vs参数逗号)
  3. 分号是语句结束的强制要求
  4. 动态函数调用(如Symbol())会在运行时解析值

执行验证

脚本执行后:

  • 在"EA交易"日志中立即显示结果
  • 脚本执行后自动从图表移除
  • 日志记录保留执行信息

通过这个简单示例,展示了MQL5的基本函数调用、参数传递和语法规范的重要性。