Untitled
unknown
plain_text
9 months ago
2.1 kB
1
Indexable
def get_rates(symbol, number_of_data=10000, timeframe=mt5.TIMEFRAME_D1): # Extract n rates before now if timeframe != mt5.TIMEFRAME_D1: rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, number_of_data) timeout = 300 # 5 minutes in seconds df_rates = pd.DataFrame(rates) start_time = time.time() while df_rates.empty: rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, number_of_data) df_rates = pd.DataFrame(rates) elapsed_time = time.time() - start_time if elapsed_time > timeout: raise TimeoutError("Fetching rates failed after minutes.") time.sleep(30) df_rates["time"] = pd.to_datetime(df_rates["time"], unit="s") nowd = pd.to_datetime(datetime.now().strftime("%Y-%m-%d %H:%M:%S")) while df_rates["time"].iloc[-1] < nowd: time.sleep(30) rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, number_of_data) df_rates = pd.DataFrame(rates) elapsed_time = time.time() - start_time if elapsed_time > timeout: raise TimeoutError("Fetching rates failed after 5 minutes.") df_rates["time"] = pd.to_datetime(df_rates["time"], unit="s") df_rates = df_rates.set_index("time") else: rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, number_of_data) timeout = 300 # 5 minutes in seconds df_rates = pd.DataFrame(rates) start_time = time.time() while df_rates.empty: rates = mt5.copy_rates_from_pos(symbol, timeframe, 0, number_of_data) df_rates = pd.DataFrame(rates) elapsed_time = time.time() - start_time if elapsed_time > timeout: raise TimeoutError("Fetching rates failed after minutes.") time.sleep(30) df_rates["time"] = pd.to_datetime(df_rates["time"], unit="s") df_rates = df_rates.set_index("time") return df_rates
Editor is loading...
Leave a Comment