找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
首页论坛EAHub 外汇论坛
查看: 33|回复: 0

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

[复制链接]

4万

主题

54

回帖

4万

积分

管理员

积分
45954
发表于 2026-8-27 22:28:00 | 显示全部楼层 |阅读模式
使用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;
            }
        }
    }
}复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|EAHub外汇论坛

GMT+8, 2026-10-9 20:20 , Processed in 0.109349 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表