Untitled
unknown
plain_text
2 years ago
2.1 kB
12
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