[英]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.