diff --git a/MtApi5/MtApi5Client.cs b/MtApi5/MtApi5Client.cs
index 33bf084b..69482ad0 100755
--- a/MtApi5/MtApi5Client.cs
+++ b/MtApi5/MtApi5Client.cs
@@ -497,9 +497,10 @@ namespace MtApi5
///Closes a position with the specified ticket.
///
///Ticket of the closed position.
- public bool PositionClose(int ticket)
+ ///Maximal deviation from the current price (in points).
+ public bool PositionClose(ulong ticket, ulong deviation = ulong.MaxValue)
{
- var commandParameters = new ArrayList { ticket};
+ var commandParameters = new ArrayList { ticket, deviation };
return SendCommand(Mt5CommandType.PositionClose, commandParameters);
}
diff --git a/mq5/MtApi5.mq5 b/mq5/MtApi5.mq5
index bc4e935a..453e2d05 100755
--- a/mq5/MtApi5.mq5
+++ b/mq5/MtApi5.mq5
@@ -279,12 +279,14 @@ int executeCommand()
case 64: //PositionClose
{
- int ticket;
+ ulong ticket;
+ ulong deviation;
CTrade trade;
-
- getIntValue(ExpertHandle, 0, ticket);
-
- sendBooleanResponse(ExpertHandle, trade.PositionClose(ticket));
+
+ getULongValue(ExpertHandle, 0, ticket);
+ getULongValue(ExpertHandle, 1, deviation);
+
+ sendBooleanResponse(ExpertHandle, trade.PositionClose(ticket, deviation));
}
break;
@@ -1906,7 +1908,7 @@ string OnRequest(string json)
return response;
}
-string CreateErrorResponse(int code, string message)
+string CreateErrorResponse(int code, string message_er)
{
JSONValue* jsonError;
if (code == 0)
@@ -1914,13 +1916,13 @@ string CreateErrorResponse(int code, string message)
else
jsonError = new JSONNumber((long)code);
- JSONObject *joResponse = new JSONObject();
+ JSONObject *joResponse = new JSONObject();
joResponse.put("ErrorCode", jsonError);
- joResponse.put("ErrorMessage", new JSONString(message));
+ joResponse.put("ErrorMessage", new JSONString(message_er));
- string result = joResponse.toString();
- delete joResponse;
- return result;
+ string result = joResponse.toString();
+ delete joResponse;
+ return result;
}
string CreateSuccessResponse(string responseName, JSONValue* responseBody)