diff --git a/MtApi5/Mt5CommandType.cs b/MtApi5/Mt5CommandType.cs index 87d809b4..522a6d8c 100755 --- a/MtApi5/Mt5CommandType.cs +++ b/MtApi5/Mt5CommandType.cs @@ -187,8 +187,8 @@ namespace MtApi5 ChartApplyTemplate = 236, ChartSaveTemplate = 237, ChartWindowFind = 238, - ChartTimePriceToXY = 239, - ChartXYToTimePrice = 240, + //ChartTimePriceToXY = 239, + //ChartXYToTimePrice = 240, ChartOpen = 241, ChartFirst = 242, ChartNext = 243, diff --git a/MtApi5/MtApi5.csproj b/MtApi5/MtApi5.csproj index ec727208..286efa50 100755 --- a/MtApi5/MtApi5.csproj +++ b/MtApi5/MtApi5.csproj @@ -73,6 +73,10 @@ + + + + diff --git a/MtApi5/MtApi5Client.cs b/MtApi5/MtApi5Client.cs index 4919acfc..cdf43c96 100755 --- a/MtApi5/MtApi5Client.cs +++ b/MtApi5/MtApi5Client.cs @@ -1578,22 +1578,17 @@ namespace MtApi5 /// public bool ChartTimePriceToXY(long chartId, int subWindow, DateTime? time, double price, out int x, out int y) { - var commandParameters = new ArrayList { chartId, subWindow, Mt5TimeConverter.ConvertToMtTime(time), price }; - var str = SendCommand(Mt5CommandType.ChartTimePriceToXY, commandParameters); - var res = false; - x = 0; - y = 0; - if (!string.IsNullOrEmpty(str) && str.Contains(";")) - { - var values = str.Split(';'); - if (values.Length > 1) + var result = SendRequest(new ChartTimePriceToXyRequest { - int.TryParse(values[0], out x); - int.TryParse(values[1], out y); - res = true; - } - } - return res; + ChartId = chartId, + SubWindow = subWindow, + Time = time, + Price = price + }); + + x = result?.X ?? 0; + y = result?.Y ?? 0; + return result?.RetVal ?? false; } /// @@ -1610,26 +1605,17 @@ namespace MtApi5 /// public bool ChartXYToTimePrice(long chartId, int x, int y, out int subWindow, out DateTime? time, out double price) { - var commandParameters = new ArrayList { chartId, x, y }; - var str = SendCommand(Mt5CommandType.ChartXYToTimePrice, commandParameters); - var res = false; - subWindow = 0; - time = null; - price = double.NaN; - if (!string.IsNullOrEmpty(str) && str.Contains(";")) + var result = SendRequest(new ChartXyToTimePriceRequest { - var values = str.Split(';'); - if (values.Length > 2) - { - int.TryParse(values[0], out subWindow); - int mt4Time; - int.TryParse(values[1], out mt4Time); - time = Mt5TimeConverter.ConvertFromMtTime(mt4Time); - double.TryParse(values[2], out price); - res = true; - } - } - return res; + ChartId = chartId, + X = x, + Y = y + }); + + subWindow = result?.SubWindow ?? 0; + time = result?.Time; + price = result?.Price ?? double.NaN; + return result?.RetVal ?? false; } /// diff --git a/MtApi5/Requests/ChartTimePriceToXyRequest.cs b/MtApi5/Requests/ChartTimePriceToXyRequest.cs new file mode 100644 index 00000000..7287a2e5 --- /dev/null +++ b/MtApi5/Requests/ChartTimePriceToXyRequest.cs @@ -0,0 +1,16 @@ +using System; + +namespace MtApi5.Requests +{ + internal class ChartTimePriceToXyRequest : RequestBase + { + public override RequestType RequestType => RequestType.ChartTimePriceToXY; + + public long ChartId { get; set; } + public int SubWindow { get; set; } + public DateTime? Time { get; set; } + public double Price { get; set; } + + public int MtTime => Mt5TimeConverter.ConvertToMtTime(Time); + } +} \ No newline at end of file diff --git a/MtApi5/Requests/ChartTimePriceToXyResult.cs b/MtApi5/Requests/ChartTimePriceToXyResult.cs new file mode 100644 index 00000000..4c74ee20 --- /dev/null +++ b/MtApi5/Requests/ChartTimePriceToXyResult.cs @@ -0,0 +1,9 @@ +namespace MtApi5.Requests +{ + internal class ChartTimePriceToXyResult + { + public bool RetVal { get; set; } + public int X { get; set; } + public int Y { get; set; } + } +} \ No newline at end of file diff --git a/MtApi5/Requests/ChartXyToTimePriceRequest.cs b/MtApi5/Requests/ChartXyToTimePriceRequest.cs new file mode 100644 index 00000000..871f6aae --- /dev/null +++ b/MtApi5/Requests/ChartXyToTimePriceRequest.cs @@ -0,0 +1,13 @@ +using System; + +namespace MtApi5.Requests +{ + internal class ChartXyToTimePriceRequest : RequestBase + { + public override RequestType RequestType => RequestType.ChartXYToTimePrice; + + public long ChartId { get; set; } + public int X { get; set; } + public int Y { get; set; } + } +} \ No newline at end of file diff --git a/MtApi5/Requests/ChartXyToTimePriceResult.cs b/MtApi5/Requests/ChartXyToTimePriceResult.cs new file mode 100644 index 00000000..dfd3f1d4 --- /dev/null +++ b/MtApi5/Requests/ChartXyToTimePriceResult.cs @@ -0,0 +1,14 @@ +using System; + +namespace MtApi5.Requests +{ + internal class ChartXyToTimePriceResult + { + public bool RetVal { get; set; } + public int SubWindow { get; set; } + public DateTime? Time => Mt5TimeConverter.ConvertFromMtTime(MtTime); + public double Price { get; set; } + + public int MtTime { get; set; } + } +} \ No newline at end of file diff --git a/MtApi5/Requests/RequestType.cs b/MtApi5/Requests/RequestType.cs index 1ba9024c..d0ac6c5a 100755 --- a/MtApi5/Requests/RequestType.cs +++ b/MtApi5/Requests/RequestType.cs @@ -12,6 +12,8 @@ namespace MtApi5.Requests OrderCheck = 5, MarketBookGet = 6, IndicatorCreate = 7, - SymbolInfoString = 8 + SymbolInfoString = 8, + ChartTimePriceToXY = 9, + ChartXYToTimePrice = 10 } } \ No newline at end of file diff --git a/TestClients/MtApi5TestClient/MainWindow.xaml b/TestClients/MtApi5TestClient/MainWindow.xaml index 65d502a7..9b5cb2d4 100755 --- a/TestClients/MtApi5TestClient/MainWindow.xaml +++ b/TestClients/MtApi5TestClient/MainWindow.xaml @@ -480,12 +480,29 @@ - - -