MT5一次平仓总数量订单二分之一方法
使用MQL5脚本自动平仓50%仓位以下是一个MQL5脚本示例,可以自动计算当前持仓总量,并平仓其中的50%:#include <Trade\Trade.mqh>
CTrade trade;
void OnStart()
{
double totalVolume = 0;
// 计算当前持仓总手数
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(PositionGetTicket(i))
{
totalVolume += PositionGetDouble(POSITION_VOLUME);
}
}
// 平仓50%
double closeVolume = totalVolume * 0.5;
// 遍历持仓并平仓
for(int i = PositionsTotal() - 1; i >= 0; i--)
{
if(PositionGetTicket(i))
{
ulong ticket = PositionGetInteger(POSITION_TICKET);
string symbol = PositionGetString(POSITION_SYMBOL);
double volume = PositionGetDouble(POSITION_VOLUME);
// 如果当前订单手数大于需要平仓的手数,则平仓部分
if(volume >= closeVolume)
{
trade.PositionClosePartial(ticket, closeVolume);
break; // 只平仓一次
}
else
{
trade.PositionClose(ticket); // 如果单笔订单小于50%,则全平
closeVolume -= volume;
}
}
}
}
学习源码
页:
[1]