在 MetaTrader 4 (MT4) 中,MQL4 脚本是一种用于执行特定任务的程序,例如放置订单或收集数据。这些脚本在被调用时执行,而不是持续地运行。这与 Expert Advisors (EAs) 和自定义指标不同,后者会在每个 tick 上执行。OnStart()
函数就是脚本运行时的入口点。
函数结构
OnStart()
是 Start 事件的处理器,只为运行脚本自动生成。其结构非常简单,没有参数,返回类型为 void。
void OnStart();
不过,OnStart()
函数也可以指定为 int 返回类型,虽然这不常见。
函数功能
当你执行一个 MQL4 脚本时,OnStart()
函数内的所有命令和操作都会被执行。一旦这个函数完成,脚本就会停止运行。这使得 OnStart()
成为放置执行逻辑的理想位置。
示例
以下是一些 OnStart()
函数的示例,展示了它的功能和用法:
- 简单的输出示例: 这个简单的脚本仅在终端日志中打印消息。
void OnStart() {
Print("Hello, World!");
}
- 下单示例: 此脚本将在当前价格上放置一个买入市价订单。
void OnStart() {
OrderSend(Symbol(), OP_BUY, 1.0, Ask, 3, 0, 0, "My order", 0, 0, Green);
}
- 收集价格数据示例: 这个脚本将收集过去1000个条形的关闭价格,并将其输出到终端日志。
void OnStart() {
double closePrices[1000];
int dataCopied = CopyClose(Symbol(), Period(), 0, 1000, closePrices);
if(dataCopied == -1) {
Print("Error collecting data: ", GetLastError());
return;
}
for(int i = 0; i < 1000; i++) {
Print("Close price of bar ", i, ": ", closePrices[i]);
}
}
总结
OnStart()
函数是 MQL4 脚本的核心,它定义了脚本的主要操作。通过有效地使用此函数,交易员和开发人员可以自动执行多种任务,从简单的数据分析到复杂的交易策略。