簡體   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