2.1 预备知识
在学习MQIA语言前,首先要打消自己的顾虑,不要被网上流传的“写MQL4程序必须具备C语言基础”给吓倒,大多数人学不会编程就是自己把自己劝退的。
当然,学习计算机语言要求你必须有很好的逻辑思维能力。我们可以通过图2一1的内容来理解计算机的逻辑。

所有的计算机语言都包含两个语句,一个是条件(if)语句,一个是循环( for)语句。
if语句顾名思义,满足条件就执行,否则就跳过。
for语句顾名思义,就是在一定条件下反复执行规定的指令,直到条件不满足为止。
2.1.1 EA框架
标准的EA程序结构由五个部分组成,分别是变量预定义、EA初始化程序、EA结束程序、EA执行程序和自定义变量,如图2 -2所示。

区域1:变量定义模块,定义程序中将使用的公共变量。
区域2:初始化模块,EA调人到图表后执行一次,之后不再执行,通常用来定义一些物件的模型。
区域3:退出模块,EA退出图表时执行一次,通常用来删除图表中的物件。
区域4:主模块,市场每过来一个新价格(tick )就执行一次。
区域5:附加模块,通常用来编写一些自定义函数。
2.1.2 指标框架
与EA框架一样,指标框架也包含五个部分,但与EA有所不同的是如下三个区域:
区域1—增加了指标所在窗口的语句,限定指标在主图中或者副图中显示。
区域2—定义指标显示物件的模型,如线形、颜色、输出变量名称等。
区域4—计算输出变量,不能进行开仓、平仓、修改止损止盈等操作。
2.1.3 坐标系
自动交易的执行是需要准确定位的,因此就必须建立起明晰的坐标系概念。
图2 -3的横坐标既可以是市场时间,也可以是蜡烛序号,在编程的时候通常使用蜡烛序号。
坐标系实际上是三维的,即时间、价格、开仓量,第三维开仓量通常在风险控制策略中考虑,比如出现亏损加大开仓量,或者亏损20%平仓等,因此我们编写程序的重点就在时间和价格这二维空间中。

建立起正确的坐标系概念是编程的基础,因为你即将对技术指标进行分析,计算开仓、平仓信号,甚至在图上画线做标记。