外汇EA编程教程:函数基础详解

函数是具有一定功能的程序块,我们可以在程序的任意位置调用它。一个函数由返回类型、函数名和函数参数组成,参数数量最多不超过64个。

例如,一个实现加法功能的函数:

double Add(double a, double b)

{

return (a + b);

}

一 该函数的返回类型为double

二 函数名称为Add

三 包含两个参数,DLSM类型均为double。

还有一种情况是函数没有返回值,例如一个用于打印功能的函数:

void DoThis(string s)

{

Print(s);

}

一 此函数没有返回值,void代表无返回类型。

二 函数名称为DoThis

三 该函数有一个string类型的参数。

以下是函数调用的示例:

int start()

{

double c = 0;

c = Add(1, 2); //调用Add函数,c的结果为3.0

Print(c);

DoThis("打印内容");

return(0);

}

在EA中,有一些特殊函数,当我们新建一个EA时,会自动包含三个函数:int init(),int deinit(),int start(),这些是系统预定义的函数。它们的作用如下:

init():当加载EA时,MT4会首先自动运行init()函数,且只运行一次,一般用于初始化数据。注意尽量避免在init函数中调用start函数。

deinit():当EA结束运行时,MT4会自动调用此函数,通常用于清理数据。

start():每当MT4收到一个报价时,就会运行一次start函数,因此start是最重要的函数,我们的交易策略主要写在里面。如果start函数尚未运行完毕,又有新报价到来,MT4不会再次调用start,也就是说,只有在MT4空闲且收到报价时,才会执行start函数。