|
使用MQL5脚本自动平仓50%仓位 [size=16.002px]以下是一个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;
- }
- }
- }
- }
复制代码
|