首页 > 解决方案 > 使用 python 在 MetaTrader5 中复制汇率范围时间框架 M1

问题描述

我最近尝试使用 python 在 Jupyter Notebook 中使用 metatrader5。我已经使用以下方法安装了 metatrader5:

pip install MetaTrader5

当我使用此代码复制 EUR_USD 数据的汇率时,出现错误。代码如下所示:

from datetime import datetime
import matplotlib.pyplot as plt
import pandas as pd
import MetaTrader5 as mt5
import pytz

mt5.initialize()
print(mt5.terminal_info())   
print(mt5.version())

pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1500)  

timezone = pytz.timezone("Etc/UTC")
utc_from = datetime(2017, 1, 5, tzinfo=timezone)
utc_to = datetime(2019, 12, 27, hour = 23, tzinfo=timezone) 

rates = mt5.copy_rates_range("EURUSD", mt5.TIMEFRAME_M1, utc_from, utc_to)

print("Display obtained data 'as is'")
counter=0
for rate in rates:
  counter+=1
  if counter<=10:
    print(rate)

然后出现错误:

Display obtained data 'as is'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-5307ec9302f7> in <module>
      2 print("Display obtained data 'as is'")
      3 counter=0
----> 4 for rate in rates:
      5     counter+=1
      6     if counter<=10:

TypeError: 'NoneType' object is not iterable

我发现 rate 中没有值,这意味着 mt5.copy_rates_range() 似乎不起作用。使用时间框架 D1、H1 的代码,但时间框架 M1 不起作用。

有什么解决办法吗...?谢谢

标签: pythonintegrationmetatrader5

解决方案


您只能复制设定数量的条形图。我不知道这是故意的还是错误的。使用较小的日期范围或较大的时间范围。一年期限的最短时间为 5 分钟。


推荐阅读