保持敬畏之心
交易是一场持久战

​MQL4(4):什么是变量 (Variables)

今天来聊聊MQL4编程中最最基础,也最重要的一个概念:变量(Variable)。

什么是变量?为什么要用它?

你可以把变量想象成一个贴着标签的小抽屉。我们可以把数字、文字、价格这些信息放进不同标签的抽屉里,方便之后随时拿出来用,或者更新成新的信息。

在写交易策略时,我们无时无刻不在和各种数据打交道,这时候变量就派上用场了:

  • 需要记住某个重要的价格,比如开仓价、某个支撑阻力位。
  • 需要保存一个计算好的交易手数,比如0.01手。
  • 需要记录某个指标的计算结果,比如当前的RSI值。
  • 需要标记一个状态,比如“今天是否已经开过仓了?”。

没有变量,我们的程序就失去了记忆能力,无法执行任何有意义的交易逻辑。

举个生活中的例子: 假设你拿来一个小抽屉,给它贴上标签box1,然后把数字10放了进去。这个动作,用代码来写就是:

int box1 = 10;

这样,我们就拥有了一个名为box1的变量,它的值是10。之后我们就可以用它来做计算、做逻辑判断,或者在未来的某个时候把里面的10换成20。

变量的构成

在MQL4里,创建一个变量(专业叫法是“声明变量”)通常遵循这个格式:

[数据类型] [变量名] = [初始值];

这个格式告诉电脑:我要一个什么类型的“抽屉”,这个抽屉叫什么名字,我一开始要往里面放什么东西。

至关重要的一步:为数据选择合适的“抽屉”类型

“数据类型”决定了你这个变量(抽屉)能装什么东西。选错了类型,程序就会出错。MQL4里,我们作为交易策略开发者,最常用的是以下几种:

  • int:整数类型。用来存放不能有小数的数字。
    • 交易场景:订单的编号(ticket)、K线的数量、循环次数等。
    • int ticket = 12345;
  • double:双精度浮点型,也就是我们常说的小数。
    • 交易场景:这是我们打交道最多的类型。几乎所有和价格相关的,比如开仓价、止损价、ATR指标值、账户余额等,都必须用double来存。
    • double lot = 0.01;
  • string:字符串类型,用来存放一串文本。文本内容必须用双引号"包起来。
    • 交易场景:交易的品种名称、EA的名称、想在图表上显示的提示信息等。
    • string symbol = "EURUSD";
  • bool (boolean):布尔型,最简单的类型,只有两个值:true(真)或false(假)。
    • 交易场景:这是我们策略逻辑里的“开关”。比如,用来标记“是否允许交易?”、“均线是否金叉了?”。
    • bool isTrading = true;
  • datetime:日期时间类型。
    • 交易场景:记录开仓时间、设置策略只在某个时间段(比如亚盘)运行。
    • datetime startTime = D'2025.01.01 08:00';
  • color:颜色类型。
    • 交易场景:设置指标线的颜色、画出的趋势线颜色等,让图表信息更清晰。
    • color buyColor = clrDodgerBlue;

使用变量:先声明,后赋值

变量必须先“声明”才能使用。声明就像是先准备好抽屉。之后,你可以随时通过“赋值”操作来修改抽屉里的东西。

// 1. 声明一个名为MyVariable的int类型变量,并给它一个初始值1
int MyVariable = 1;

// 2. 之后在代码的其他地方,可以修改它的值(赋值)
MyVariable = 5;

// 3. 也可以把其他变量的值赋给它
int YourVariable = 2;
MyVariable = YourVariable;

学长避坑指南:

  1. 先声明、后使用:你必须先告诉电脑int MyVariable;(我有一个叫MyVariable的抽屉),然后才能MyVariable = 5;(往里面放东西)。如果你直接用一个没有声明过的变量,编译器会无情报错。
  2. 数据类型要匹配:这是最容易出问题的环节。千万不要试图把一个小数(double)硬塞进一个只能装整数(int)的变量里。虽然MQL4有时会帮你强制转换,但它的做法通常是粗暴地“砍掉”小数部分,而不是我们以为的四舍五入。比如int a = 1.9;,最终a的值会是1,而不是2。这种偏差在需要精密计算的价格和止损策略中是致命的。
  3. 大小写敏感:再次强调,MyVariablemyvariable是两个完全不同的变量。保持命名大小写的一致性,能避免90%的“变量未定义”错误。
  4. 重复声明:同一个变量名在同一个代码范围内只能声明一次。你不能先写int a = 1;,过几行又写int a = 2;,这是不允许的,编译器会告诉你变量被重复定义了。正确的修改方法是直接赋值:a = 2;
赞(0)
未经允许不得转载:图道交易 » ​MQL4(4):什么是变量 (Variables)
分享到

评论 抢沙发