MQL4 代码示例:处理 EA 停止运行时的挂单逻辑
以下是一个示例的 MQL4 代码,用于补充 EA 停止运行时的逻辑处理。在代码中,我们使用了 OnDeinit 函数来处理 EA 停止运行的情况,并在其中添加了对已成交订单中是否存在对应挂单的判断。
//+------------------------------------------------------------------+
//| MyEA.mq4 |
//| Copyright 2021, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright '2021, MetaQuotes Software Corp.'
#property link 'https://www.mql5.com'
#property version '1.00'
#property strict
//+------------------------------------------------------------------+
//| 定义全局变量 |
//+------------------------------------------------------------------+
bool g_isRunning = true; // EA是否正在运行的标志
//+------------------------------------------------------------------+
//| 专家初始化函数 |
//+------------------------------------------------------------------+
int OnInit()
{
// 在这里添加您的初始化代码
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| 专家去初始化函数 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// 设置EA停止运行的标志
g_isRunning = false;
// 在这里添加您的去初始化代码
}
//+------------------------------------------------------------------+
//| 主专家函数 |
//+------------------------------------------------------------------+
void OnTick()
{
// 在这里添加您的主要代码
// 检查EA是否正在运行
if (!g_isRunning)
{
// 处理EA停止运行的情况
HandleEAStop();
}
}
// 处理EA停止运行的函数
void HandleEAStop()
{
// 获取已成交订单数
int totalOrders = OrdersTotal();
// 循环遍历已成交订单
for (int i = 0; i < totalOrders; i++)
{
// 获取订单信息
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
// 检查订单是否有对应的挂单
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
// 在这里添加对已成交订单存在对应挂单的处理逻辑
// ...
}
}
}
}
请注意,这只是一个示例代码,您可能需要根据您的具体需求对其进行修改和优化。还请确保在使用代码之前进行适当的测试和验证。
原文地址: https://www.cveoy.top/t/topic/o1Po 著作权归作者所有。请勿转载和采集!