问题描述
我最近尝试使用 python 在 Jupyter Notebook 中使用 MetaTrader5。我已经使用 :
安装了 MetaTrader5pip 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 分钟。