From 74a64b6fbdd0dec41dc2ab3f77792b01a5717543 Mon Sep 17 00:00:00 2001 From: Vyacheslav Demidyuk Date: Thu, 13 Mar 2025 12:32:54 +0200 Subject: [PATCH] PyMtApi5: implemented function ChartGetDouble --- PyMtApi5/client.py | 10 ++++++++++ PyMtApi5/mt5apiclient.py | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/PyMtApi5/client.py b/PyMtApi5/client.py index d8c9bde4..9224d8bb 100644 --- a/PyMtApi5/client.py +++ b/PyMtApi5/client.py @@ -73,6 +73,7 @@ class Mt5ApiApp: "ChartSetDouble": self.process_chart_set_double, "ChartSetInteger": self.process_chart_set_integer, "ChartSetString": self.process_chart_set_string, + "ChartGetDouble": self.process_chart_get_double, } def on_disconnect(self, error_msg=None): @@ -545,6 +546,15 @@ class Mt5ApiApp: result = mtapi.chart_set_string(int(pieces[0]), prop_id, pieces[2]) print(f"> ChartSetString: response = {result}") + def process_chart_get_double(self, mtapi, parameters): + pieces = parameters.split(" ", 2) + if len(pieces) != 3 or not pieces[0] or not pieces[1] or not pieces[2]: + print(f"! Invalid parameters for command ChartGetDouble: {parameters}") + return + prop_id = mt5enums.ENUM_CHART_PROPERTY_DOUBLE(int(pieces[1])) + result = mtapi.chart_get_double(int(pieces[0]), prop_id, int(pieces[2])) + print(f"> ChartGetDouble: 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 0c29a657..5d84ba37 100644 --- a/PyMtApi5/mt5apiclient.py +++ b/PyMtApi5/mt5apiclient.py @@ -357,6 +357,8 @@ class Mt5ApiClient: "Count": count, } res = self.__send_command(self.__get_default_expert(), Mt5CommandType.CopyTicks, cmd_params) + if res is None: + return None ticks = [MqlTick(obj) for obj in res] return ticks @@ -539,6 +541,11 @@ class Mt5ApiClient: cmd_params = {"ChartId": chart_id, "PropId": prop_id, "Value": value} return self.__send_command(self.__get_default_expert(), Mt5CommandType.ChartSetString, cmd_params) + # ChartGetDouble + def chart_get_double(self, chart_id, prop_id: ENUM_CHART_PROPERTY_DOUBLE, sub_window=0): + cmd_params = {"ChartId": chart_id, "PropId": prop_id, "SubWindow": sub_window} + return self.__send_command(self.__get_default_expert(), Mt5CommandType.ChartGetDouble, cmd_params) + # Private methods def __event_thread_func(self):