Skip to content

语句、代码块和函数

在向导生成的脚本中,OnStart函数结构如下:

c++
void OnStart()
{
}

这是我们在MQL5编程中接触的第一个核心概念。这里涉及几个需要解释的新概念和符号序列。

程序运行阶段

一个典型程序运行时通常包含以下阶段:

  1. 定义变量 - 在内存中创建命名存储单元
  2. 组织数据输入
  3. 数据处理 - 应用算法
  4. 组织结果输出

不过这些阶段并非语法强制的。例如计算2*2的程序可能不需要输入数据和变量,但这类程序缺乏实际功能。

函数的作用

程序语句可以通过函数进行组织管理。函数具有以下特点:

  • 是包含语句的命名代码块
  • 可通过名称调用执行
  • 支持代码复用和模块化设计

OnStart函数的特殊性

OnStart函数在脚本中有特殊地位:

  • 是脚本的入口函数(类似C语言的main函数)
  • 当用户通过右键菜单或拖放方式启动脚本时,终端会自动调用
  • 必须存在于所有脚本中,否则编译会报错

函数语法解析

以当前空函数为例:

c++
void OnStart()
{
}

关键组成部分

  1. 返回类型 void

    • 表示不返回任何值
    • 其他类型如int,double需要对应返回值
  2. 函数名 OnStart

    • 系统保留名称
    • 区分大小写
  3. 参数列表 ()

    • 当前为空表示不需要参数
    • 参数用于接收外部输入值
  4. 函数体 {}

    • 包含实际执行语句
    • 当前空大括号表示空实现

编译与执行

  1. 编译结果

    • 生成Hello.ex5文件于Scripts/MQL5Book/p1目录
    • 可在终端导航器中查看
  2. 运行表现

    • 终端日志显示:
    Scripts        script Hello (EURUSD,H1) loaded successfully
    Scripts        script Hello (EURUSD,H1) removed
    • 加载后立即退出,因没有实际功能

扩展说明

概念说明
代码块{}包裹的语句集合
保留字void等编译器专用关键词
函数参数后续章节详细介绍参数传递机制
EX5文件MQL5编译后的可执行格式

注意:虽然空函数可以编译通过,但实际开发中需要在大括号{}内添加功能代码来实现具体交易逻辑。后续章节将逐步介绍如何添加有效语句。