以下是一个示例的 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录