diff --git a/MtApi5/MtApi5Client.cs b/MtApi5/MtApi5Client.cs index 8dacc260..698a990d 100755 --- a/MtApi5/MtApi5Client.cs +++ b/MtApi5/MtApi5Client.cs @@ -475,6 +475,17 @@ namespace MtApi5 { return sendCommand(Mt5CommandType.OrderCloseAll, null); } + + /// + ///Closes a position with the specified ticket. + /// + ///Ticket of the closed position. + public bool PositionClose(int ticket) + { + var commandParameters = new ArrayList { ticket}; + + return sendCommand(Mt5CommandType.PositionClose, commandParameters); + } #endregion #region Account Information functions diff --git a/MtApi5/MtCommandType.cs b/MtApi5/MtCommandType.cs index bede832d..f9c6a41c 100755 --- a/MtApi5/MtCommandType.cs +++ b/MtApi5/MtCommandType.cs @@ -100,6 +100,7 @@ namespace MtApi5 MarketBookAdd = 60, MarketBookRelease = 61, MarketBookGet = 62, - OrderCloseAll = 63 + OrderCloseAll = 63, + PositionClose = 64 } } diff --git a/mq5/MtApi5.mq5 b/mq5/MtApi5.mq5 index 86dc224f..8969c5c8 100755 --- a/mq5/MtApi5.mq5 +++ b/mq5/MtApi5.mq5 @@ -227,6 +227,16 @@ int executeCommand() sendBooleanResponse(ExpertHandle, retVal); } break; + case 64: //PositionClose + { + int ticket; + CTrade trade; + + getIntValue(ExpertHandle, 0, ticket); + + sendBooleanResponse(ExpertHandle, trade.PositionClose(ticket)); + } + break; case 2: // OrderCalcMargin { @@ -1726,4 +1736,4 @@ bool OrderCloseAll() if (trade.PositionClose(PositionGetSymbol(i))) i--; } return true; -} \ No newline at end of file +}