设为首页 收藏本站 切换语言 切换语言

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交易
您需要登录后才可以评论 登录 | 立即注册

 简体中文国旗 简体中文
 繁體中文国旗 繁體中文
 English国旗 English(英语)
 日本語国旗 日本語(日语)
 Deutsch国旗 Deutsch(德语)
 Русский язык国旗 Русский язык(俄语)
 بالعربية国旗 بالعربية(阿拉伯语)
 Türkçe国旗 Türkçe(土耳其语)
 Português国旗 Português(葡萄牙语)
 ภาษาไทย国旗 ภาษาไทย(泰国语)
 한어国旗 한어(朝鲜语/韩语)
 Français国旗 Français(法语)
翻译