函数CloseAndDeleteAll
用于在MetaTrader 4平台上管理交易订单。它可以平仓市场订单(买卖订单)和删除挂单(限价单和止损单)。函数接受两个参数:symbol
(要处理的特定货币对)和magicNumber
(用于识别特定的交易策略订单)。
函数代码与解读
void CloseAndDeleteAll(string symbol, int magicNumber) {
for (int i = OrdersTotal() - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) &&
(symbol == "" || OrderSymbol() == symbol) &&
(magicNumber == 0 || OrderMagicNumber() == magicNumber)) {
if (OrderType() <= OP_SELL) { // For market orders
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 10, CLR_NONE);
} else { // For pending orders
OrderDelete(OrderTicket());
}
}
}
}
int CountOrders(string symbol, int magicNumber) {
int count = 0;
for (int i = OrdersTotal() - 1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) &&
(symbol == "" || OrderSymbol() == symbol) &&
(magicNumber == 0 || OrderMagicNumber() == magicNumber)) {
count++;
}
}
return count;
}
功能说明
- 平仓市场订单:对于当前市场上的买卖订单,函数会自动平仓。
- 删除挂单:对于尚未激活的限价和止损订单,函数将它们从市场上删除。
调用方法
要调用这个函数,只需在你的主交易脚本中使用如下代码:
CloseAndDeleteAll("EURUSD", 123456);
这行代码会平仓所有与EURUSD货币对相关且具有魔术数字123456的订单。如果你想对所有订单操作,不论货币对和魔术数字,可以调用:
CloseAndDeleteAll("", 0);
通过提供这种灵活的方式来管理订单,交易者和自动化交易策略的开发者可以更加高效地控制他们的交易操作。