MT5没有返回最近索引的数据
import MetaTrader5 as mt5
mt5.initialize()
import pandas as pd
instrument = mt5.copy_rates_from_pos('BTCUSD',mt5.TIMEFRAME_H1,0,20)
instrument = pd.DataFrame(instrument)
instrument['time'] = pd.to_datetime(instrument['time'], unit = 's')
instrument = instrument.set_index(['time'])
当我每小时运行一次这个代码时,它总是返回上一个条形图作为最后一个索引(而不是最近的条形图(。它应该返回最新的条形图,因为初始条形图索引设置为0。
未更新的数据示例:
In()
instrument['open'].tail(5)
Out()
2022-10-29 11:00:00 20767.92
2022-10-29 12:00:00 20917.95
2022-10-29 13:00:00 20945.44
2022-10-29 14:00:00 20763.64
2022-10-29 15:00:00 20690.48
如果我在10秒后运行相同的代码,它会返回正确的信息(最近的条形图作为最后一个索引(。
正确(更新(数据:
In()
instrument['open'].tail(5)
Out()
2022-10-29 12:00:00 20917.95
2022-10-29 13:00:00 20945.44
2022-10-29 14:00:00 20763.64
2022-10-29 15:00:00 20690.48
2022-10-29 16:00:00 20756.35
因此,根据我所知,当-mt5.copy_rates_from_pos-被执行时,终端没有更新信息。
如何强制终端在之前下载和更新数据?
感谢的帮助
如果你想的话,你实际上可以每秒更新收盘价。你必须用datetime运行它,否则你不会从mt5返回更新的日期和时间。并运行您的函数从内部循环中提取数据。
from datetime import datetime
import time
import MetaTrader5 as mt
import pandas as pd
q = 0
while q < 1:
dt = datetime.now()
mt = dt.strftime( '%H:%M:%S' )
if dt.second > dt.second - 1:
pull your data here
print output
time.sleep( 1 )
请记住,只有收盘价会每秒更新一次,除非在区间内出现新的高点或低点,否则它们也会更新。希望能帮助