Issue #204: [MT5] Added function OrderSendAsync

This commit is contained in:
Viacheslav Demydiuk
2020-10-13 15:16:55 +03:00
parent 93aed4e44c
commit ce7953eee0
6 changed files with 73 additions and 3 deletions
+29 -2
View File
@@ -1,7 +1,7 @@
#property copyright "Vyacheslav Demidyuk"
#property link ""
#property version "1.8"
#property version "1.9"
#property description "MtApi (MT5) connection expert"
#include <json.mqh>
@@ -6961,7 +6961,10 @@ string OnRequest(string json)
break;
case 14: //Sell
response = ExecuteRequest_Sell(jo);
break;
break;
case 15: //OrderSendAsync
response = ExecuteRequest_OrderSendAsync(jo);
break;
default:
PrintFormat("%s [WARNING]: Unknown request type %d", __FUNCTION__, requestType);
response = CreateErrorResponse(-1, "Unknown request type");
@@ -7171,6 +7174,30 @@ string ExecuteRequest_OrderSend(JSONObject *jo)
return CreateSuccessResponse("Value", result_value_jo);
}
string ExecuteRequest_OrderSendAsync(JSONObject *jo)
{
CHECK_JSON_VALUE(jo, "TradeRequest", CreateErrorResponse(-1, "Undefinded mandatory parameter TradeRequest"));
JSONObject* trade_request_jo = jo.getObject("TradeRequest");
MqlTradeRequest trade_request = {0};
bool converted = JsonToMqlTradeRequest(trade_request_jo, trade_request);
if (converted == false)
return CreateErrorResponse(-1, "Failed to parse parameter TradeRequest");
MqlTradeResult trade_result = {0};
bool ok = OrderSendAsync(trade_request, trade_result);
JSONObject* result_value_jo = new JSONObject();
result_value_jo.put("RetVal", new JSONBool(ok));
result_value_jo.put("TradeResult", MqlTradeResultToJson(trade_result));
#ifdef __DEBUG_LOG__
PrintFormat("%s: return value = %s", __FUNCTION__, ok ? "true" : "false");
#endif
return CreateSuccessResponse("Value", result_value_jo);
}
string ExecuteRequest_PositionOpen(JSONObject *jo)
{
//Symbol