函数可以理解为一个具备特定功能的程序模块,它能够在程序的不同位置被重复调用。一个标准函数通常由返回类型、函数名称以及函数参数三部分构成。需要注意的是,函数参数的数量存在上限,一般不超过64个。
例如,下面是一个实现加法运算的函数:
double Add(double a, double b)
{
return (a b);
}
一、该函数的返回类型为 double。
二、函数名称是 Add。
三、它包含两个参数,类型均为 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()。理解这些函数对于策略开发至关重要,尤其是在像TMGM投资平台这样的交易环境中运行自动化策略时。
init():当EA被加载到图表时,交易平台会首先自动执行一次init()函数。此函数通常用于初始化变量或数据。请注意,应避免在init函数内部调用start函数。
deinit():当EA停止运行或从图表移除时,平台会自动调用deinit()函数。开发者通常在此函数中执行数据清理或资源释放的操作。
start():这是EA中最为核心的函数。每当交易平台接收到新的报价时,便会触发执行一次start函数。因此,主要的交易逻辑和策略代码都编写在此函数内。需要了解的是,如果start函数正在执行中,即使有新报价到来,平台也不会中断当前执行去启动新的start函数。只有在start函数执行完毕且新报价到达时,才会再次运行它。掌握这一机制对于在TMGM投资平台等环境进行稳定可靠的EA编程非常重要。