How to close all trades at once in MQL?

All,

How to close all opened positions in MQL5. Need your sample please

Try this conventional loop:

#include <trade/trade.mqh> void OnStart()   {    CTrade trade;    int i=PositionsTotal()-1;    while (i>=0)      {       if (trade.PositionClose(PositionGetSymbol(i))) i--;      }   }

Mql5 not Mql4

void CloseAll()
{
    for (int i = PositionsTotal() - 1; i >= 0; i--) {
        {
            if (!trade.PositionClose(PositionGetSymbol(i))) {
                Print(PositionGetSymbol(i), "PositionClose() failed. Return code=", trade.ResultRetcode(), ". Code description: ", trade.ResultRetcodeDescription());
            }
            else {
                Print(PositionGetSymbol(i), "PositionClose() successful. Return code=", trade.ResultRetcode(), " (", trade.ResultRetcodeDescription(), ")");
            }
        }
    }
}
2 Likes

Yeah the answer above should solve it. The idea is to select all open positions using PositionsTotal();, loop over them, and close them one by one

I use this code
https://www.mql5.com/en/forum/215715/page2#comment_5836294