保持敬畏之心
交易是一场持久战

MQL4(50):利用订单注释作为辅助标识符

在此前的讨论中,我们一直采用“魔术号”作为订单的唯一标识符,用以区分某个特定EA所发出的订单。然而,如果您的EA需要同时管理多个订单,并且您希望对这些订单进行差异化处理(例如,应用不同的管理策略),那么订单注释可以作为一种有效的辅助标识手段。

举个例子,假设您的EA需要同时发出两种不同类型的订单。您希望能独立地修改或平仓这两类订单。要实现这一点,您可以在EA中使用两个独立的 OrderSend() 函数来分别创建这两类订单,并在调用时为它们分别赋予不同的订单注释内容。之后,当您在代码中使用循环来筛选订单,以便进行修改或平仓操作时,就可以将 OrderComment() 函数返回的注释内容作为筛选条件之一。

string OrderComment1 = "策略A的订单"; // 为第一类订单定义注释
string OrderComment2 = "策略B的订单"; // 为第二类订单定义注释

// 下单操作
int Ticket1 = OrderSend(Symbol(), OP_BUY, LotSize, OpenPrice, UseSlippage, BuyStopLoss,
                       BuyTakeProfit, OrderComment1, MagicNumber, 0, Green);
int Ticket2 = OrderSend(Symbol(), OP_BUY, LotSize, OpenPrice, UseSlippage, BuyStopLoss,
                       BuyTakeProfit, OrderComment2, MagicNumber, 0, Green);

// 订单修改操作示例
for(int Counter = 0; Counter < OrdersTotal(); Counter++) // 遍历所有当前持仓和挂单
{
    if(OrderSelect(Counter, SELECT_BY_POS)) // 选中订单
    {
        // 首先检查魔术数字和交易品种是否匹配
        if(OrderMagicNumber() == MagicNumber && OrderSymbol() == Symbol())
        {
            if(OrderComment() == OrderComment1) // 再检查订单注释是否为第一类
            {
                // 此处添加修改第一个订单的逻辑
            }
            else if(OrderComment() == OrderComment2) // 或者订单注释是否为第二类
            {
                // 此处添加修改第二个订单的逻辑
            }
        }
    }
}

在上述代码中,我们首先声明了两个字符串变量,OrderComment1OrderComment2,用于存储不同的订单注释。接着,通过两次调用 OrderSend() 函数,我们分别创建了两个订单,每个订单都附带了各自独特的注释。在后续的订单修改示例循环中,OrderComment() 函数被用作一个关键的筛选条件,帮助我们精确定位到需要操作的特定订单。

通过检查 OrderComment() 的返回值,您可以实现诸如独立平仓特定类型的订单、为不同订单应用差异化的追踪止损策略等功能,或者任何其他根据您交易系统需求而定的精细化订单管理操作。

赞(0)
未经允许不得转载:图道交易 » MQL4(50):利用订单注释作为辅助标识符
分享到