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 -被执行。
如何强制终端下载并更新之前的数据?
谢谢你的帮助
2条答案
按热度按时间cu6pst1q1#
如果你想的话,你可以每秒更新收盘价。你必须用datetime运行它,否则你不会从mt5返回更新的日期和时间。
字符串
记住,只有收盘价会每秒更新,除非新的高点或低点是在酒吧的间隔,那么他们将更新以及。希望这有帮助
v1l68za42#
我尝试使用MetaTrader5和copy_rates_from_pos获取几个外汇对的最新1小时酒吧数据。一些对返回最新数据,一些对返回除了最新小时的数据。我四处打探,找到了一个解决方案。我不确定它是否是最好的解决方案,但它似乎有效。
基本上copy_rates_from_pos获取的数据已经在您本地运行的MetaTrader 5中。为了让我的MetaTrade 5尽快加载数据,我需要打开我感兴趣的货币对的图表。如果我不打开货币对的图表,MetaTrade 5不会及时获取数据。这有点道理。