copy_rates_from

指定された日以降のバーをMetaTrader 5ターミナルから取得します。

copy_rates_from(
  symbol,      // 銘柄名
  timeframe,    // 時間枠
  date_from,    // 初めにバーが開いた日
  count        // バー数
  )

パラメータ

symbol

[in] 金融商品名(例: EURUSD)。名前なし必須パラメータ。

timeframe

[in] バーがリクエストされている時間枠で、TIMEFRAME列挙からの値で設定されます。名前なし必須パラメータ。

date_from

[in]  リクエストされたサンプルの1番目のバーが開いた日で、「datetime」オブジェクトまたは1970年1月1日からの経過秒数として設定されます。名前なし必須パラメータ。

count

[in] 受信するバーの数名前なし必須パラメータ。

戻り値

バーを名前付きのtime、open、high、low、close、tick_volume、spread、real_volume列を持つNumPy配列として返します。エラーの場合はNoneを返します。エラーに関する情報はlast_error()を使用して取得できます。

注意事項

詳細はCopyRates()関数をご覧ください。

指定された日付とそれ以前のデータのみが戻されます。これは、が返されたバーの開始時刻は常に指定されたもの以下だということです。

MetaTrader 5ターミナルは、チャート上でユーザが利用できる履歴内でのみバーを提供します。ユーザが使用できるバーの数は「Max. bars in chart」パラメータで設定されます。

「datetime」オブジェクトを作成する際にPythonがローカルな時間帯を使用する一方、MetaTrader 5ではティックとバー開始時間はUTC時間帯(シフトなし)で保存されます。よって。時間を使用する関数を実行するためには「datetime」はUTC時間で作成されるべきです。MetaTrader 5ターミナルから受信したデータにはUTC時間があります。  

TIMEFRAME は可能なチャート期間値の列挙です。

ID

説明

TIMEFRAME_M1

1分

TIMEFRAME_M2

2分

TIMEFRAME_M3

3分

TIMEFRAME_M4

4分

TIMEFRAME_M5

5分

TIMEFRAME_M6

6分

TIMEFRAME_M10

10分

TIMEFRAME_M12

12分

TIMEFRAME_M12

15分

TIMEFRAME_M20

20分

TIMEFRAME_M30

30分

TIMEFRAME_H1

1 時間

TIMEFRAME_H2

2時間

TIMEFRAME_H3

3時間

TIMEFRAME_H4

4時間

TIMEFRAME_H6

6時間

TIMEFRAME_H8

8時間

TIMEFRAME_H12

12時間

TIMEFRAME_D1

1日

TIMEFRAME_W1

1週間

TIMEFRAME_MN1

1 ヶ月

 

例:

from datetime import datetime
import MetaTrader5 as mt5
# MetaTrader 5パッケージについてのデータを表示する
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
 
# 表形式で得られたデータを表示するための「pandas」モジュールをインポートする
import pandas as pd
pd.set_option('display.max_columns', 500) # 表示される列の数
pd.set_option('display.width', 1500)     # 表示する表の最高幅
# 時間帯を使用するためのpytzモジュールをインポートする
import pytz
 
# MetaTrader 5ターミナルとの接続を確立する
if not mt5.initialize():
   print("initialize() failed, error code =",mt5.last_error())
  quit()
 
# 時間帯をUTCに設定する
timezone = pytz.timezone("Etc/UTC")
# ローカル時間帯オフセットの実装を避けるために「datetime」オブジェクトをUTC時間帯で作成する
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# 01.10.2020 UTC以降の10のEURUSD H4バーを取得する
rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_H4, utc_from, 10)
 
# MetaTrader 5ターミナルへの接続をシャットダウンする
mt5.shutdown()
# 取得したデータの各要素を新しい行に表示する
print("Display obtained data 'as is'")
for rate in rates:
  print(rate)
 
# 取得したデータからDataFrameを作成する
rates_frame = pd.DataFrame(rates)
# 秒での時間をdatetime形式に変換する
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
                         
# データを表示する
print("\nDisplay dataframe with data")
print(rates_frame)  
 
 
結果:
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.29
 
Display obtained data 'as is'
(1578484800, 1.11382, 1.11385, 1.1111, 1.11199, 9354, 1, 0)
(1578499200, 1.11199, 1.11308, 1.11086, 1.11179, 10641, 1, 0)
(1578513600, 1.11178, 1.11178, 1.11016, 1.11053, 4806, 1, 0)
(1578528000, 1.11053, 1.11193, 1.11033, 1.11173, 3480, 1, 0)
(1578542400, 1.11173, 1.11189, 1.11126, 1.11182, 2236, 1, 0)
(1578556800, 1.11181, 1.11203, 1.10983, 1.10993, 7984, 1, 0)
(1578571200, 1.10994, 1.11173, 1.10965, 1.11148, 7406, 1, 0)
(1578585600, 1.11149, 1.11149, 1.10923, 1.11046, 7468, 1, 0)
(1578600000, 1.11046, 1.11097, 1.11033, 1.11051, 3450, 1, 0)
(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)
 
Display dataframe with data
                time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-08 12:00:00  1.11382  1.11385  1.11110  1.11199         9354       1            0
1 2020-01-08 16:00:00  1.11199  1.11308  1.11086  1.11179        10641       1            0
2 2020-01-08 20:00:00  1.11178  1.11178  1.11016  1.11053         4806       1            0
3 2020-01-09 00:00:00  1.11053  1.11193  1.11033  1.11173         3480       1            0
4 2020-01-09 04:00:00  1.11173  1.11189  1.11126  1.11182         2236       1            0
5 2020-01-09 08:00:00  1.11181  1.11203  1.10983  1.10993         7984       1            0
6 2020-01-09 12:00:00  1.10994  1.11173  1.10965  1.11148         7406       1            0
7 2020-01-09 16:00:00  1.11149  1.11149  1.10923  1.11046         7468       1            0
8 2020-01-09 20:00:00  1.11046  1.11097  1.11033  1.11051         3450       1            0
9 2020-01-10 00:00:00  1.11051  1.11093  1.11017  1.11041         2448       1            0

参照

CopyRatescopy_rates_from_poscopy_rates_rangecopy_ticks_fromcopy_ticks_range