python - 使用 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 分钟。
推荐阅读
- ruby-on-rails - 使用 Ruby on Rails 定义常量并在控制器中随处使用它们的最佳实践
- math - 如何确定两个线性函数在四舍五入后是否在给定范围内相等
- jmeter - BeanShell PreProcessor (JMeter) - 如何生成涵盖当前时间到 7 天的随机未来 DateTime Stamp?
- opencv - 在 Ubuntu 18.04 的 conda 上安装 opencv_contrib 的正确方法
- python - 从 MongoDB 使用 Pandas 从字典转换为行
- python - 如何让输出显示在 Jupyter 笔记本中的所有字段中?
- reactjs - 在 React 中将 base64 字符串转换回图像
- r - R中箱线图上的轴标签问题
- css - 如何根据容器中的内容(数字和字符串)调整字体大小?
- java - IDEA - 导入 Maven 项目