公告:
  • 如需开户,可联系客服指导操作。
  • 客服微信:Jin-DaoCheng
    1. 首页 > 新闻资讯

    EA编程教程:变量作用范围详解

    1 本地变量:

    定义在函数内部的变量称为本地变量,其作用域仅限于该函数之内。只有函数内部的代码才能访问这些变量,函数外部的代码无法访问函数内定义的变量。例如:

    int funcname(int a)

    {

    int abc; // 函数内部的变量,只能由函数内部的代码访问,外部代码无法使用变量abc。

    }

    2 函数参数:

    函数参数的变量名称不能与函数内部的变量名称相同。参数也可以指定默认值,例如:

    void func(int x, double y = 0.0, bool z = true)

    {

    ...

    }

    这个函数指定了y的默认值为0.0,z的默认值为true。在使用盾博EA时,理解这种参数设置能更好地优化策略。

    调用该函数时,可以不指定带有默认值的参数。例如func(9)相当于调用func(9, 0.0, true)。如果调用func(9, 1.5),则相当于调用func(9, 1.5, true)。

    一般情况下,函数参数是传值调用。在函数内部改变参数的值,不会影响调用该函数的程序块。即使是数组也是按传值方式传递。

    那么如何实现传引用呢?通过传引用,如果函数内部的参数值发生改变,调用该函数的代码段的变量值也会随之改变。要实现传引用,需要在函数参数类型后面添加符号 '&',例如:

    void func(int& x, double& y, double& z[])

    {

    x = 8;

    }

    需要注意:如果是传引用的函数参数,不能对其预设默认值。

    函数参数的数量不能超过64个。

    3 全局变量:

    全局变量是与函数同级别的变量,其作用域覆盖整个MQL代码,也就是说整个MQL代码的各个位置都可以访问全局变量。例如:

    int a = 10;

    int funca()

    {

    Print(a); // 可以访问全局变量a

    return (0);

    }

    int funcb()

    {

    Print(a); // 可以访问全局变量a

    return (1);

    }

    4 外部变量:

    如果一个变量被定义为外部变量,那么EA客户端可以直接设置这个外部变量的值,这一特性在盾博EA的调试和优化过程中很实用。

    例如:

    extern int a = 10;

    extern color c = red;

    点击咨询交易开户相关问题

    转载请注明出处:https://www.daoctech.com/fxnews/2311.html

    免责声明: 本文内容不代表道诚外汇官网观点,内容仅供参考,不构成投资建议。投资者若据此操作,风险自担。