使用mt4写ea,如果下方有0.05手空单,距离这0.05手空单上方2000点,有0.05手空单,但是上方的0.05手空单盈利30美金,我想用这盈利的 30美金,去对冲下方的0.05手的仓位,如何去检测下方的0.05手每0.01亏损多少
时间: 2024-03-18 20:38:41 浏览: 88
您可以使用MQL4的OrderProfit函数获取当前仓位的盈利情况,然后计算出每个点的盈利,从而得出每0.01手的盈利(或亏损)情况。具体的代码可以参考下面的示例:
```
double point_value = MarketInfo(Symbol(), MODE_POINT);
double profit = OrderProfit();
double profit_per_pip = profit / (2000 * point_value);
double loss_per_pip = -0.01 * point_value;
if (profit_per_pip >= loss_per_pip) {
double lots_to_close = MathAbs(profit_per_pip / loss_per_pip) * 0.01;
if (lots_to_close <= OrderLots()) {
OrderClose(OrderTicket(), lots_to_close, Bid, 3, clrRed);
} else {
OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrRed);
OrderSend(Symbol(), OP_SELL, 0.01, Bid - 10 * point_value, 3, 0, 0, "Hedge order", 0, 0, clrRed);
}
}
```
在上面的代码中,我们首先使用MarketInfo函数获取当前交易品种的点值,然后使用OrderProfit函数获取当前仓位的盈利情况。接着,我们计算出每个点的盈利(或亏损)情况,即profit_per_pip和loss_per_pip。如果当前上方的空单盈利超过了下方空单的亏损,我们就可以使用OrderClose函数对下方的空单进行对冲。具体来说,我们计算出需要平仓的手数lots_to_close,如果要平仓的手数小于等于当前仓位的手数,我们就直接使用OrderClose函数平仓;否则,我们先使用OrderClose函数平掉当前仓位的全部手数,然后再使用OrderSend函数开仓0.01手的对冲订单。