这段时间总会有人问我,外汇EA见底怎么运用,尤其是外汇EA的外部参数见底代表什么意思。老实说,仅仅去看变量的名字,你还真没有办法证实外汇EA的外部参数见底是什么意思,由于不同的策略开发人士有相同的定义习惯,假如仅仅从变量名去证实变量的用法,那么很多时候就会出困难。
那么怎么去确定变量的运用?最直接的方式就是需要寻到变量名在函数中的调用的位置,这个才是真正的理解与确定。
诚然,我们这里讲解变量,那就必须说变量的定义,这里先引用官方的定义吧。
可变量务必在声明以前运用。可变量务必拥有特殊的辨认名。有关可变量的定义描述会表明。
基本类型如下:
● 字符型,短整型,整型,长整型,无符号字符型,无符号短整型,无字符整型,无符号长整型-整数;
● 颜色-代表RGB-颜色的整数;
● 日期时间-日期和时间,从1970年1月1号起无符号整数包含秒数;
● 布尔报告-布尔值的true和 false;
● 双精度数字-带有浮点的双精度数字;
● 浮点型-带有浮点的单精度数字;
● 字串符报告-特殊字符串。
其实看了这官方的解释,好像意义不大,除非你有适当的基础,那么我们就举个例子来看明吧。我们这里以MT5自带的一个策略逻辑MQL5\Experts\Examples\Moving Average为例来执行讲解。
我们首先加载Moving Averages.mq5这个策略逻辑,我们打开导航器,在EA交易里面寻到Moving Averages策略逻辑。
双击该策略逻辑,就会显现下面的对话框:
我们假使通过编译器打开 Moving Averages.mq5文件,我们可以目睹一行一行的源代码,首先我们可以目睹下面的变量如下:
input double MaximumRisk= 0.02; // Maximum Risk in percentage
input double DecreaseFactor = 3; // Descrease factor
input int MovingPeriod = 12; // Moving Average period
input int MovingShift = 6; // Moving Average shift
假使我们用这几行代码与对话框输入变量来比较,我们迅速发现对话框的输入变量却是我们代码定义的变量的就是,也就是“//”后面的解释,这与老版MQL4是完全不一样的。所以,我们假使仅仅通过对话框输入变量来推导外部变量的具体运用,那就会变得极其不可理解。
那么再回归到源代码,我们发下,凡是在对话框输入的变量前,全将有一个input ,在这里我们可以证实input 代表的外部输入变量,也就是值得通过外部输入来更改的。那么这个外部输入变量,假使我们在调用的过程当中,原始的赋值会否更改呢?比如说我们MaximumRisk= 0.02;这个值能不能执行在主文件里面执行从新赋值呢?那么我们这里可以通过打印来执行检验。比如:我们可以在主题函数
void OnTick(void)
{
//---
if(SelectPosition())
CheckForClose();
else
CheckForOpen();
//---
}
里面对MaximumRisk从新赋值看看,赋值如下
而我们在编译的时机,迅速就会发现显现错误,表明这个外部变量已经不能从新赋值了。这个也检验了我们的初始推断,外部输入变量是不能在运行过程当中来又一次修改其值的。
诚然,MQL5里面不仅只有外部输入变量,还会有局部变量,局部变量又会有函数内部的局部变量,而函数内部的局部变量其余函数是不能调用的。
因次,学习变量,也是你在运用EA以前最基本的内容,无论你会否编撰EA,只要你运用EA,就需要真正的懂得变量的基础知识,你才不会那么盲目。
在这里我依旧要强调一下,EA导致工具,绝不是我们说的圣杯。真正的圣杯,则是EA+正确的运用。