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

MQL4(54):检查订单的盈利状况

在交易过程中,有时需要查询某个持仓订单的当前浮动盈亏,或者一个已平仓订单的最终盈亏。通常有两种方式来获取这些盈利信息。若要得到以账户存款货币(例如美元)计价的盈利,可以使用 OrderProfit() 函数。但在此之前,必须先通过 OrderSelect() 函数选中目标订单。

// 示例:获取特定订单的盈利
OrderSelect(Ticket, SELECT_BY_TICKET); // Ticket 为订单号
double ProfitInCurrency = OrderProfit(); // 获取当前选中订单的盈利

OrderProfit() 函数返回的值,应当与您在交易终端“历史”标签页中看到的该订单的实际盈亏金额完全一致。

若想知道订单的盈亏点数(pips),则需要自行计算订单的开仓价与平仓价之间的差值。同样,这也需要先用 OrderSelect() 函数选中订单,以获取其开仓价和平仓价。

// 示例:计算特定订单的盈利点数
OrderSelect(Ticket, SELECT_BY_TICKET); // Ticket 为订单号
double ProfitInPips = 0.0;

if(OrderType() == OP_BUY) // 如果是买单
{
    ProfitInPips = OrderClosePrice() - OrderOpenPrice();
}
else if(OrderType() == OP_SELL) // 如果是卖单
{
    ProfitInPips = OrderOpenPrice() - OrderClosePrice();
}

// 将价格差转换为点数 (假设 PipPoint() 是一个自定义函数,用于获取当前品种一个标准点的价格小数位)
// 例如,对于 EURUSD,一个点是0.0001,PipPoint(Symbol()) 可能返回 0.0001
if (PipPoint(Symbol()) != 0) // 防止除零错误
{
    ProfitInPips /= PipPoint(Symbol());
}

对于买入订单(OP_BUY),盈利点数 = 平仓价格 – 开仓价格。对于卖出订单(OP_SELL),计算方式相反,盈利点数 = 开仓价格 – 平仓价格。计算出价格差之后,我们再将其除以 PipPoint(Symbol()) 函数返回的单点价值(例如,对于小数点后4位的货币对是0.0001,对于日元对是0.01),便可得到以整数点表示的盈亏。

举个例子:假设我们有一个买单,开仓价为 1.4650,平仓价为 1.4700。那么 OrderClosePrice() - OrderOpenPrice() 的差值为 0.0050。若 PipPoint(Symbol()) 对于该品种返回 0.0001,则 0.0050 / 0.0001 = 50。这意味着该订单盈利了 50 点。反之,如果平仓价是 1.4600,那么差值为 -0.0050,即亏损 50 点。

赞(0)
未经允许不得转载:图道交易 » MQL4(54):检查订单的盈利状况
分享到