copy_rates_range

MetaTrader 5 터미널에서 지정된 날짜 범위의 막대를 가져옵니다.

copy_rates_range(
   symbol,       // 심볼명
   timeframe,    // 타임프레임
   date_from,    // 막대 요청 시작일
   date_to       // 막대 요청 만료일
   )

Parameters

symbol

[in]  금융상품명, 예를 들면, "EURUSD". 이름이 지정되지 않은 필수 매개 변수.

timeframe

[in]  막대가 요청된 타임프레임. TIMEFRAME 열거값으로 값 설정. 이름이 지정되지 않은 필수 매개 변수.

date_from

[in]  막대가 요청된 날짜. 'datetime' 개체에 의해 또는 1970.01.01 이후 경과된 시간(초)으로 설정됨. open time >= date_from인 막대가 반환됩니다. 이름이 지정되지 않은 필수 매개 변수.

date_to

[in]  막대 요청 만료일. 'datetime' 개체에 의해 또는 1970.01.01 이후 경과된 시간(초)으로 설정됨. open time <= date_to인 막대가 반환됩니다. 이름이 지정되지 않은 필수 매개 변수.

반환 값

지정된 시간, 시가, 고가, 저가, 종가, tick_volume, spread 및 real_volume 열의 numpy 어레이로 막대를 반환합니다. 오류의 경우 None이 반환됩니다. 오류에 대한 정보는 last_error()를 사용하여 얻을 수 있습니다.

참고

자세한 내용은 CopyRates() 함수를 참조하십시오.

MetaTrader 5 터미널은 차트에서 사용자가 사용할 수 있는 내역 내의 막대를 제공합니다. 사용자가 사용할 수 있는 막대 수는 "최대. 막대, 차트에서의" 매개변수로 설정됩니다.

'datetime' 객체를 생성할 때, Python은 로컬 표준 시간대를 사용하는 반면, MetaTrader 5는 UTC 표준 시간대에 (Shift 없이) 틱과 막대 오픈 시간을 저장합니다. 따라서 시간을 사용하는 기능을 실행하기 위해 UTC 시간으로 'datetime'을 생성해야 합니다. MetaTrader 5 단말기에서 수신된 데이터의 UTC 시간이 있습니다.

예:

from datetime import datetime
import MetaTrader5 as mt5
# MetaTrader 5 패키지에 데이터 표시
print("MetaTrader5 패키지 작성자: ",mt5.__author__)
print("MetaTrader5 패키지 버전: ",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() 실패, 에러 코드 =",mt5.last_error())
    quit()
 
# set time zone to UTC
timezone = pytz.timezone("Etc/UTC")
# 로컬 표준 시간대를 구현하지 않도록 UTC 표준 시간대에 'datetime' 개체를 생성합니다 offset
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
utc_to = datetime(2020, 1, 11, hour = 13, tzinfo=timezone)
# UTC 표준 시간대에서 2020.01.10 00:00 - 2020.01.11 13:00의 간격 내에 USDJPY M5에서 막대를 가져옵니다 
rates = mt5.copy_rates_range("USDJPY"mt5.TIMEFRAME_M5utc_from, utc_to)
 
# MetaTrader 5 터미널에 대한 연결 종료
mt5.shutdown()
 
# 수집된 데이터의 각 요소를 새 라인로 표시
print("수집된 데이터를 '있는 그대로' 표시")
counter=0
for rate in rates:
    counter+=1
    if counter<=10:
        print(rate)
 
# 가져온 데이터로 DataFrame 생성
rates_frame = pd.DataFrame(rates)
# 시간(초)을 'datetime' 형식으로 변환합니다.
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
 
# display data
print("\n데이터와 함께 dataframe 표시")
print(rates_frame.head(10))
 
결과:
MetaTrader5 패키지 작성자:  MetaQuotes Software Corp.
MetaTrader5 패키지 버전:  5.0.29
 
수집된 데이터를 '있는 그대로' 표시
(1578614400, 109.513, 109.527, 109.505, 109.521, 43, 2, 0)
(1578614700, 109.521, 109.549, 109.518, 109.543, 215, 8, 0)
(1578615000, 109.543, 109.543, 109.466, 109.505, 98, 10, 0)
(1578615300, 109.504, 109.534, 109.502, 109.517, 155, 8, 0)
(1578615600, 109.517, 109.539, 109.513, 109.527, 71, 4, 0)
(1578615900, 109.526, 109.537, 109.484, 109.52, 106, 9, 0)
(1578616200, 109.52, 109.524, 109.508, 109.51, 205, 7, 0)
(1578616500, 109.51, 109.51, 109.491, 109.496, 44, 8, 0)
(1578616800, 109.496, 109.509, 109.487, 109.5, 85, 5, 0)
(1578617100, 109.5, 109.504, 109.487, 109.489, 82, 7, 0)
 
데이터와 함께 dataframe 표시
                 time     open     high      low    close  tick_volume  spread  real_volume
0 2020-01-10 00:00:00  109.513  109.527  109.505  109.521           43       2            0
1 2020-01-10 00:05:00  109.521  109.549  109.518  109.543          215       8            0
2 2020-01-10 00:10:00  109.543  109.543  109.466  109.505           98      10            0
3 2020-01-10 00:15:00  109.504  109.534  109.502  109.517          155       8            0
4 2020-01-10 00:20:00  109.517  109.539  109.513  109.527           71       4            0
5 2020-01-10 00:25:00  109.526  109.537  109.484  109.520          106       9            0
6 2020-01-10 00:30:00  109.520  109.524  109.508  109.510          205       7            0
7 2020-01-10 00:35:00  109.510  109.510  109.491  109.496           44       8            0
8 2020-01-10 00:40:00  109.496  109.509  109.487  109.500           85       5            0
9 2020-01-10 00:45:00  109.500  109.504  109.487  109.489           82       7            0

더 보기

CopyRates, copy_rates_from, copy_rates_range, copy_ticks_from, copy_ticks_range