MT5CopyRatesFromPos

指定されたインデックス以降のバーをMetaTrader 5ターミナルから取得します。

MT5CopyRatesFromPos(
  symbol,      // 銘柄名
  timeframe,    // 時間枠
  start_pos,   // 初めのバーのインデックス
  count        // バー数
  )

パラメータ

symbol

[in] 金融商品名(例: EURUSD)

timeframe

[in] バーがリクエストされている時間枠で、MT5_TIMEFRAME列挙からの値で設定されます

start_pos

[in]  データがリクエストされているバーの初めのインデックス。バーは現在から過去へ番号付けられるので、現在のバーは「ゼロバー」である

count

[in] 受信するバーの数

戻り値

バーをタプル(time, open, high, low, close, tick_volume, spread, real_volume)として返します

注意事項

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

例:

from datetime import datetime
from MetaTrader5 import *
# 表形式で得られたデータを表示するための「pandas」モジュールをインポートする
import pandas as pd
pd.set_option('display.max_columns', 500) # 表示される列の数
pd.set_option('display.width', 1500)     # 表示する表の最高幅
 
# MetaTrader 5ターミナルとの接続を確立する
MT5Initialize()
# MetaTrader 5ターミナルが取引サーバに接続するのを待つ
MT5WaitForTerminal()
 
# 今日の10のGBPUSD D1バーを取得する
rates = MT5CopyRatesFrom("GBPUSD", MT5_TIMEFRAME_D1, 0, 10)
 
# MetaTrader 5ターミナルへの接続をシャットダウンする
MT5Shutdown()
# 取得したデータの各要素を新しい行に表示する
print("Display obtained data 'as is'")
for rate in rates:
  print(rate)
 
# 取得したデータからDataFrameを作成する
rates_frame = pd.DataFrame(list(rates),
                          columns=['time', 'open', 'low', 'high', 'close', 'tick_volume', 'spread', 'real_volume'])
# データを表示する
print("\nDisplay dataframe with data")
print(rates_frame) # Pythonがローカル時間帯でバー開始時間をオフセット付きで提供していることがわかる
 
# ローカルPCのUTC時刻からのオフセットを取得する
UTC_OFFSET_TIMEDELTA = datetime.utcnow() - datetime.now()
 
# オフセットを正面から補正する簡単な関数を作成する
def local_to_utc(dt):
  return dt + UTC_OFFSET_TIMEDELTA
 
# rates_frameデータフレームの「time」列にオフセットを適用する
rates_frame['time'] = rates_frame.apply(lambda rate: local_to_utc(rate['time']), axis=1)
 
# もう一度データを表示し、D1ローソク足の開始時間が00:00であることを確認する
print("\nDisplay dataframe after adjusting the candle open time ")
print(rates_frame)
 
結果:
Display obtained data 'as is'
MT5Rate(time=datetime.datetime(2019, 4, 3, 15, 0), open=1.12431, low=1.12543, high=1.12335, close=1.12341, tick_volume=11735, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 3, 19, 0), open=1.12339, low=1.12487, high=1.12247, close=1.12439, tick_volume=15241, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 3, 23, 0), open=1.12439, low=1.12478, high=1.12311, close=1.12312, tick_volume=4973, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 3, 0), open=1.12324, low=1.12472, high=1.12318, close=1.1244, tick_volume=3099, spread=4, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 7, 0), open=1.1244, low=1.12451, high=1.12364, close=1.12406, tick_volume=3304, spread=4, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 11, 0), open=1.12406, low=1.12472, high=1.12302, close=1.12313, tick_volume=10119, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 15, 0), open=1.12313, low=1.12359, high=1.12122, close=1.12171, tick_volume=15098, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 19, 0), open=1.12171, low=1.12246, high=1.12056, close=1.12188, tick_volume=15369, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 4, 23, 0), open=1.12187, low=1.12265, high=1.1213, close=1.12191, tick_volume=5156, spread=8, real_volume=0)
MT5Rate(time=datetime.datetime(2019, 4, 5, 3, 0), open=1.12199, low=1.12286, high=1.1217, close=1.1222, tick_volume=3903, spread=4, real_volume=0)
 
Display dataframe with data
                time     open     low     high   close tick_volume spread real_volume
0 2019-04-03 15:00:00 1.12431 1.12543 1.12335 1.12341       11735       8           0
1 2019-04-03 19:00:00 1.12339 1.12487 1.12247 1.12439       15241       8           0
2 2019-04-03 23:00:00 1.12439 1.12478 1.12311 1.12312         4973       8           0
3 2019-04-04 03:00:00 1.12324 1.12472 1.12318 1.12440         3099       4           0
4 2019-04-04 07:00:00 1.12440 1.12451 1.12364 1.12406         3304       4           0
5 2019-04-04 11:00:00 1.12406 1.12472 1.12302 1.12313       10119       8           0
6 2019-04-04 15:00:00 1.12313 1.12359 1.12122 1.12171       15098       8           0
7 2019-04-04 19:00:00 1.12171 1.12246 1.12056 1.12188       15369       8           0
8 2019-04-04 23:00:00 1.12187 1.12265 1.12130 1.12191         5156       8           0
9 2019-04-05 03:00:00 1.12200 1.12286 1.12170 1.12220         3903       4           0
 
Display dataframe after adjusting the candle open time
                time     open     low     high   close tick_volume spread real_volume
0 2019-04-03 12:00:00 1.12431 1.12543 1.12335 1.12341       11735       8           0
1 2019-04-03 16:00:00 1.12339 1.12487 1.12247 1.12439       15241       8           0
2 2019-04-03 20:00:00 1.12439 1.12478 1.12311 1.12312         4973       8           0
3 2019-04-04 00:00:00 1.12324 1.12472 1.12318 1.12440         3099       4           0
4 2019-04-04 04:00:00 1.12440 1.12451 1.12364 1.12406         3304       4           0
5 2019-04-04 08:00:00 1.12406 1.12472 1.12302 1.12313       10119       8           0
6 2019-04-04 12:00:00 1.12313 1.12359 1.12122 1.12171       15098       8           0
7 2019-04-04 16:00:00 1.12171 1.12246 1.12056 1.12188       15369       8           0
8 2019-04-04 20:00:00 1.12187 1.12265 1.12130 1.12191         5156       8           0
9 2019-04-05 00:00:00 1.12200 1.12286 1.12170 1.12220         3903       4           0

参照

CopyRatesMT5CopyRatesFromMT5CopyRatesRangeMT5CopyTicksFromMT5CopyTicksRange