From f1c1df1e002941b5f42717d89ee0da2bd3aad9e6 Mon Sep 17 00:00:00 2001 From: vdemydiuk Date: Mon, 19 Feb 2018 17:02:19 +0200 Subject: [PATCH] Issue #89: Changed function OrderCheck to use json request/response --- MtApi5/MqlTradeCheckResult.cs | 5 ++ MtApi5/Mt5CommandType.cs | 4 +- MtApi5/MtApi5.csproj | 2 + MtApi5/MtApi5Client.cs | 18 ++-- MtApi5/MtConverters.cs | 43 --------- MtApi5/Requests/OrderCheckRequest.cs | 10 +++ MtApi5/Requests/OrderCheckResult.cs | 8 ++ MtApi5/Requests/RequestType.cs | 3 +- TestClients/MtApi5TestClient/MainWindow.xaml | 87 ++++++++----------- TestClients/MtApi5TestClient/ViewModel.cs | 49 ++++++----- mq5/MtApi5.ex5 | Bin 490800 -> 500328 bytes mq5/MtApi5.mq5 | 43 ++++++++- 12 files changed, 141 insertions(+), 131 deletions(-) create mode 100644 MtApi5/Requests/OrderCheckRequest.cs create mode 100644 MtApi5/Requests/OrderCheckResult.cs diff --git a/MtApi5/MqlTradeCheckResult.cs b/MtApi5/MqlTradeCheckResult.cs index 0d43919c..5b5f5cad 100755 --- a/MtApi5/MqlTradeCheckResult.cs +++ b/MtApi5/MqlTradeCheckResult.cs @@ -31,5 +31,10 @@ namespace MtApi5 Margin_level = margin_level; Comment = comment; } + + public override string ToString() + { + return $"Retcode={Retcode}; Comment={Comment}; Balance={Balance}; Equity={Equity}; Profit={Profit}; Margin={Margin}; Margin_free={Margin_free}; Margin_level={Margin_level}"; + } } } diff --git a/MtApi5/Mt5CommandType.cs b/MtApi5/Mt5CommandType.cs index 241500a6..873f029e 100755 --- a/MtApi5/Mt5CommandType.cs +++ b/MtApi5/Mt5CommandType.cs @@ -9,7 +9,7 @@ namespace MtApi5 //OrderSend = 1, OrderCalcMargin = 2, OrderCalcProfit = 3, - OrderCheck = 4, + //OrderCheck = 4, //OrderSendAsync = 5, PositionsTotal = 6, PositionGetSymbol = 7, @@ -101,7 +101,7 @@ namespace MtApi5 //CTrade PositionClose = 64, PositionOpen = 65, - PositionOpenWithResult = 1065, + //PositionOpenWithResult = 1065, //Backtesting BacktestingReady = 66, diff --git a/MtApi5/MtApi5.csproj b/MtApi5/MtApi5.csproj index 18f351c1..b643a58e 100755 --- a/MtApi5/MtApi5.csproj +++ b/MtApi5/MtApi5.csproj @@ -68,6 +68,8 @@ + + diff --git a/MtApi5/MtApi5Client.cs b/MtApi5/MtApi5Client.cs index eec8392b..912d8c77 100755 --- a/MtApi5/MtApi5Client.cs +++ b/MtApi5/MtApi5Client.cs @@ -187,17 +187,22 @@ namespace MtApi5 /// public bool OrderCheck(MqlTradeRequest request, out MqlTradeCheckResult result) { + Log.Debug($"OrderCheck: request = {request}"); + if (request == null) { + Log.Warn("OrderCheck: request is not defined!"); result = null; return false; } - var commandParameters = request.ToArrayList(); + var response = SendRequest(new OrderCheckRequest + { + TradeRequest = request + }); - var strResult = SendCommand(Mt5CommandType.OrderCheck, commandParameters); - - return strResult.ParseResult(ParamSeparator, out result); + result = response?.TradeCheckResult; + return response != null && response.RetVal; } /// @@ -559,11 +564,6 @@ namespace MtApi5 result = response?.TradeResult; return response != null && response.RetVal; - - //var commandParameters = new ArrayList { symbol, (int)orderType, volume, price, sl, tp, comment }; - - //var strResult = SendCommand(Mt5CommandType.PositionOpenWithResult, commandParameters); - //return strResult.ParseResult(ParamSeparator, out result); } #endregion diff --git a/MtApi5/MtConverters.cs b/MtApi5/MtConverters.cs index ae7a3d4c..3b77c1c9 100755 --- a/MtApi5/MtConverters.cs +++ b/MtApi5/MtConverters.cs @@ -14,49 +14,6 @@ namespace MtApi5 return quote != null ? new Mt5Quote(quote.Instrument, quote.Bid, quote.Ask) : null; } - //public static bool ParseResult(this string inputString, char separator, out MqlTradeResult result) - //{ - // Log.Debug($"ParseResult: inputString = {inputString}, separator = {separator}"); - - // var retVal = false; - // result = null; - - // if (string.IsNullOrEmpty(inputString) == false) - // { - // var values = inputString.Split(separator); - // if (values.Length == 10) - // { - // try - // { - // retVal = int.Parse(values[0]) != 0; - - // var retcode = uint.Parse(values[1]); - // var deal = ulong.Parse(values[2]); - // var order = ulong.Parse(values[3]); - // var volume = double.Parse(values[4]); - // var price = double.Parse(values[5]); - // var bid = double.Parse(values[6]); - // var ask = double.Parse(values[7]); - // var comment = values[8]; - // var requestId = uint.Parse(values[9]); - - // result = new MqlTradeResult(retcode, deal, order, volume, price, bid, ask, comment, requestId); - // } - // catch (Exception ex) - // { - // Log.Error($"ParseResult: {ex.Message}"); - // retVal = false; - // } - // } - // } - // else - // { - // Log.Warn("ParseResult: input srting is null or empty!"); - // } - - // return retVal; - //} - public static bool ParseResult(this string inputString, char separator, out MqlTradeCheckResult result) { Log.Debug($"ParseResult: inputString = {inputString}, separator = {separator}"); diff --git a/MtApi5/Requests/OrderCheckRequest.cs b/MtApi5/Requests/OrderCheckRequest.cs new file mode 100644 index 00000000..6934e1e0 --- /dev/null +++ b/MtApi5/Requests/OrderCheckRequest.cs @@ -0,0 +1,10 @@ +namespace MtApi5.Requests +{ + internal class OrderCheckRequest: RequestBase + { + public override RequestType RequestType => RequestType.OrderCheck; + + public MqlTradeRequest TradeRequest { get; set; } + + } +} \ No newline at end of file diff --git a/MtApi5/Requests/OrderCheckResult.cs b/MtApi5/Requests/OrderCheckResult.cs new file mode 100644 index 00000000..5ec63707 --- /dev/null +++ b/MtApi5/Requests/OrderCheckResult.cs @@ -0,0 +1,8 @@ +namespace MtApi5.Requests +{ + public class OrderCheckResult + { + public bool RetVal { get; set; } + public MqlTradeCheckResult TradeCheckResult { get; set; } + } +} \ No newline at end of file diff --git a/MtApi5/Requests/RequestType.cs b/MtApi5/Requests/RequestType.cs index 45ae1599..0bec2a6e 100755 --- a/MtApi5/Requests/RequestType.cs +++ b/MtApi5/Requests/RequestType.cs @@ -8,6 +8,7 @@ namespace MtApi5.Requests CopyTicks = 1, iCustom = 2, OrderSend = 3, - PositionOpen = 4 + PositionOpen = 4, + OrderCheck = 5 } } \ No newline at end of file diff --git a/TestClients/MtApi5TestClient/MainWindow.xaml b/TestClients/MtApi5TestClient/MainWindow.xaml index 5aedee1b..0c58f62f 100755 --- a/TestClients/MtApi5TestClient/MainWindow.xaml +++ b/TestClients/MtApi5TestClient/MainWindow.xaml @@ -4,7 +4,7 @@ xmlns:mtapi5="clr-namespace:MtApi5;assembly=MtApi5" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:mtApi5TestClient="clr-namespace:MtApi5TestClient" - Title="MainWindow" Height="700" Width="650" + Title="MainWindow" Height="700" Width="700" Closing="Window_Closing"> @@ -100,58 +100,33 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - + + + + - - + - - + - -