MT5一次平仓总数量订单二分之一方法

| 发表于 2025-7-27 03:09:18 | 显示全部楼层 |复制链接
使用MQL5脚本自动平仓50%仓位
[size=16.002px]以下是一个MQL5脚本示例,可以自动计算当前持仓总量,并平仓其中的50%:

  1. #include <Trade\Trade.mqh>
  2. CTrade trade;
  3. void OnStart()
  4. {
  5.     double totalVolume = 0;
  6.    
  7.     // 计算当前持仓总手数
  8.     for(int i = PositionsTotal() - 1; i >= 0; i--)
  9.     {
  10.         if(PositionGetTicket(i))
  11.         {
  12.             totalVolume += PositionGetDouble(POSITION_VOLUME);
  13.         }
  14.     }
  15.    
  16.     // 平仓50%
  17.     double closeVolume = totalVolume * 0.5;
  18.    
  19.     // 遍历持仓并平仓
  20.     for(int i = PositionsTotal() - 1; i >= 0; i--)
  21.     {
  22.         if(PositionGetTicket(i))
  23.         {
  24.             ulong ticket = PositionGetInteger(POSITION_TICKET);
  25.             string symbol = PositionGetString(POSITION_SYMBOL);
  26.             double volume = PositionGetDouble(POSITION_VOLUME);
  27.             
  28.             // 如果当前订单手数大于需要平仓的手数,则平仓部分
  29.             if(volume >= closeVolume)
  30.             {
  31.                 trade.PositionClosePartial(ticket, closeVolume);
  32.                 break; // 只平仓一次
  33.             }
  34.             else
  35.             {
  36.                 trade.PositionClose(ticket); // 如果单笔订单小于50%,则全平
  37.                 closeVolume -= volume;
  38.             }
  39.         }
  40.     }
  41. }
复制代码
举报

评论 使用道具

精彩评论1

xinhua123
DDD
| 发表于 2025-8-26 04:28:21 | 显示全部楼层
学习源码
举报

点赞 评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册