使用 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 不起作用。

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

解决方法

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