求助EA如何通过WINAPI调用本地.BAT可执行文件
我的需求是:我想让EA在一天设定的交易时间内完成所有交易后,执行本地.BAT自动批处理文件实现电脑自动关机。.BAT自动批处理文件我自己做好了,但是不知如何在EA调用执行这自动批处理个文件。
我看MQL5中有WINAPI这个文件夹,百度也说可以通过WINAPI之类的文件来执行这个文件。
不知可有高人知道的,指点一二?小弟在此不胜感激!
// 定义 Windows API 所需的类型
typedef long HINSTANCE;
typedef long HWND;
typedef string LPCWSTR;
typedef int INT;
// 直接导入 shell32.dll 中的 ShellExecuteW 函数
#import "shell32.dll"
HINSTANCE ShellExecuteW(
HWND hwnd,
LPCWSTR lpOperation,
LPCWSTR lpFile,
LPCWSTR lpParameters,
LPCWSTR lpDirectory,
INT nShowCmd
);
#import
//+------------------------------------------------------------------+
//| 脚本/EA 的启动函数 |
//+------------------------------------------------------------------+
void OnStart()
{
// 指定要打开的 bat 文件的绝对路径(注意路径中的反斜杠需要双写)
string batPath = "C:\\Path\\To\\Your\\script.bat";
// 调用 ShellExecuteW
// 参数说明:
// hwnd: 父窗口句柄,填 0 即可
// lpOperation: 操作类型,"open" 表示打开
// lpFile: 文件路径
// lpParameters: 参数,不需要则填空字符串 ""
// lpDirectory: 默认工作目录,不需要则填空字符串 ""
// nShowCmd: 窗口显示方式,1 代表正常显示 (SW_SHOWNORMAL)
HINSTANCE result = ShellExecuteW(0, "open", batPath, "", "", 1);
// ShellExecuteW 成功时返回值大于 32
if(result > 32)
Print("成功调用 ShellExecuteW 打开 bat 文件!");
else
Print("打开失败,错误码: ", (int)result);
} MT4调用本地程序可以用WinExec或ShellExecuteEx API,在MQL4的dll调用中实现。注意要把MT4的DLL导入权限打开,BAT文件路径用绝对路径避免找不到文件。 谢谢二楼,讲解的非常清晰,正是我所需要的 haircare1 发表于 2026-7-15 21:22
// 定义 Windows API 所需的类型
typedef long HINSTANCE;
typedef long HWND;
// 定义 Windows API 所需的类型
typedef long HINSTANCE;
typedef long HWND;
typedef string LPCWSTR;
typedef int INT;
这个好像编译不了,提示错误是unexpected token,应该是语法上编译不通,但是查帮助文件这个语法是没有错误的。这就奇怪了,不管是放在MQL5哪部分里都编译不了 今天试了下,方法可行,但是typedef那一部分在MQL5里编译过不了,老是提示unexpected token,然后我改成了使用#define就可以了。
页:
[1]