From ad9589e444f5d9ed3d315571b216883a07f2d5e8 Mon Sep 17 00:00:00 2001 From: Vyacheslav Demidyuk Date: Fri, 14 Feb 2025 23:00:17 +0200 Subject: [PATCH] PyMtApi5: implemented function ChartTimePriceToXY --- PyMtApi5/client.py | 9 +++++++++ PyMtApi5/mt5apiclient.py | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/PyMtApi5/client.py b/PyMtApi5/client.py index 2269e2e5..c7a11375 100644 --- a/PyMtApi5/client.py +++ b/PyMtApi5/client.py @@ -62,6 +62,7 @@ class Mt5ApiApp: "ChartApplyTemplate": self.process_chart_apply_template, "ChartSaveTemplate": self.process_chart_save_template, "ChartWindowFind": self.process_chart_window_find, + "ChartTimePriceToXY": self.process_chart_time_price_to_xy, } def on_disconnect(self, error_msg=None): @@ -459,6 +460,14 @@ class Mt5ApiApp: result = mtapi.chart_window_find(int(pieces[0]), pieces[1]) print(f"> ChartWindowFind: response = {result}") + def process_chart_time_price_to_xy(self, mtapi, parameters): + pieces = parameters.split(" ", 3) + if len(pieces) != 4 or not pieces[0] or not pieces[1] or not pieces[2] or not pieces[3]: + print(f"! Invalid parameters for command ChartTimePriceToXY: {parameters}") + return + result = mtapi.chart_time_price_to_xy(int(pieces[0]), int(pieces[1]), int(pieces[2]), float(pieces[3])) + print(f"> ChartTimePriceToXY: response = {result}") + def mtapi_command_thread(self, mtapi): while mtapi.is_connected(): filename = "client.cmd" diff --git a/PyMtApi5/mt5apiclient.py b/PyMtApi5/mt5apiclient.py index 8bacd645..8522005c 100644 --- a/PyMtApi5/mt5apiclient.py +++ b/PyMtApi5/mt5apiclient.py @@ -479,6 +479,14 @@ class Mt5ApiClient: cmd_params = {"ChartId": chart_id, "IndicatorShortname": indicator_short_name}; return self.__send_command(self.__get_default_expert(), Mt5CommandType.ChartWindowFind, cmd_params) + # ChartTimePriceToXY + def chart_time_price_to_xy(self, chart_id, sub_window, time, price): + cmd_params = {"ChartId": chart_id, "SubWindow": sub_window, "Time": time, "Price": price} + res = self.__send_command(self.__get_default_expert(), Mt5CommandType.ChartTimePriceToXY, cmd_params) + if res is not None and res["RetVal"] == True: + return (res["Result"]["X"], res["Result"]["Y"]) + return None + # Private methods def __event_thread_func(self):