繁体   English   中英

使用 python 在 MetaTrader5 中复制速率范围时间框架 M1

[英]Copy Rates Range Time Frame M1 in MetaTrader5 with python

我最近尝试使用 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 分钟。

您的时间范围非常大(对于 mt5.TIMEFRAME_M1)。 缩小范围(例如 30 天)

如此的文档中所述

MetaTrader 5 终端仅在图表上可供用户使用的历史记录中提供柱线。 用户可用的柱线数量在“图表中的最大柱线”参数中设置。

因此,如果您打算复制大量数据,您应该首先打开 metatrader5 平台和 select 工具菜单,然后选择选项,然后将图表中的最大条形图调整到最大值(用 9 填充所有可用数字)。 之后您必须打开该品种的图表,如果您之前没有打开它,并允许平台更新图表。 您可以尝试滚动图表以下载整个范围。

现在试试你的代码,别担心。 我毫无问题地复制了多年的 1M 数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM