주가 자료는 많은 웹사이트를 통해 입수할 수 있다.
Google Finance는 방대한 주가 자료를 제공하는 대표적인 사이트이다.
이 사이트로 부터 주가 자료를 호출하는 방법을 소개한다.
이전의 Pandas 패키지를 사용하는 방법은 좀 불안정한 단점이 googlefinance.client 패키지에 의해 보완되었다.
이 패키지의 인스툴은 명령 프롬프트(command prompt) 또는 아나콘다 프롬프트를 사용하여 다음과 같이 실행한다.
>>> pip install googlefinance.client
일단 인스톨 후 그 패키지를 다음과 같이 콘솔창(jupyter notebook, python IDE 등)에 장착한다.
from googlefinance.client import get_price_data, get_prices_data, get_prices_time_data
호출하기 위해 필요한 매개변수를 지정한다. 그 매개변수는 사전형식으로 작성되어야 한다.
그 사전의 키는 'q', 'i', 'x', 'p'로서 각각 다음과 같다.
'q', 'x': 대상 주식의 코드이다. 이 코드는 제공하는 사이트마다 다르다.
예를 들면 kospi의 경우 'KRX:KOSPI'로서 클론을 기준으로 앞은 국가 구별을 위한 것이고 뒤의 것은 주식 코드이름이다.
'q'의 경우는 주식의 고유코드 즉, 'KOSPI'가 되고
'x'는 그 주식이 포함된 범주(국가)의 코드로서 'KRX'가 된다.
'i' : 호출하려는 자료의 간격으로 초단위로 입력된다. 예를 들어 1day=86400으로 일간자료를 호출하기 위해서는 이 수치를 문자형으로 입력한다. 즉
'i':'86400' 또는 계산식으로 지정할 경우 수치형을 전달한다. 60*60*24(초*분*시)
'p': 호출하는 기간을 나타내는 키로서 연 단위로 지정된다. 예로서 '1Y'=1년, '10Y'=10년
주의할 점은 이 함수는 호출하는 시점이 기준이 된다는 것이다.
위와 같은 변수를 지정한 객체를 적용하여 다음 함수를 사용하여 호출한다.
get_price_data(param)
다음예는 현재일을 기준으로 10년의 kospi 자료를 호출한 것이다.
In [1]: kos_param = {'q': "KOSPI", 'i': "86400", 'x': "KRX", 'p': "10Y"}
In [2]: kospi = get_price_data(kos_param)
In [3]: print(kospi.head(3))
2007-11-01 15:30:00 2085.33 2085.45 2048.68 2063.14 401962000
2007-11-02 15:30:00 2014.65 2049.62 2014.65 2019.34 388387000
In [4]: print(kospi.tail(3)) Open High Low Close Volume
2017-10-26 15:30:00 2489.60 2495.99 2480.63 2480.63 646882000
2017-10-27 15:30:00 2485.44 2499.15 2479.67 2496.63 511225000
2017-10-30 15:30:00 2513.87 2513.87 2497.42 2501.93 342006000
또한 여러 종목의 주가를 동시에 호출할 경우 두 가지 방법이 존재한다.
여러 종목을 호출할 경우 여기 하나의 DataFrame 구조로 반환된다.
Google Finance는 방대한 주가 자료를 제공하는 대표적인 사이트이다.
이 사이트로 부터 주가 자료를 호출하는 방법을 소개한다.
이전의 Pandas 패키지를 사용하는 방법은 좀 불안정한 단점이 googlefinance.client 패키지에 의해 보완되었다.
이 패키지의 인스툴은 명령 프롬프트(command prompt) 또는 아나콘다 프롬프트를 사용하여 다음과 같이 실행한다.
>>> pip install googlefinance.client
일단 인스톨 후 그 패키지를 다음과 같이 콘솔창(jupyter notebook, python IDE 등)에 장착한다.
from googlefinance.client import get_price_data, get_prices_data, get_prices_time_data
호출하기 위해 필요한 매개변수를 지정한다. 그 매개변수는 사전형식으로 작성되어야 한다.
그 사전의 키는 'q', 'i', 'x', 'p'로서 각각 다음과 같다.
'q', 'x': 대상 주식의 코드이다. 이 코드는 제공하는 사이트마다 다르다.
예를 들면 kospi의 경우 'KRX:KOSPI'로서 클론을 기준으로 앞은 국가 구별을 위한 것이고 뒤의 것은 주식 코드이름이다.
'q'의 경우는 주식의 고유코드 즉, 'KOSPI'가 되고
'x'는 그 주식이 포함된 범주(국가)의 코드로서 'KRX'가 된다.
'i' : 호출하려는 자료의 간격으로 초단위로 입력된다. 예를 들어 1day=86400으로 일간자료를 호출하기 위해서는 이 수치를 문자형으로 입력한다. 즉
'i':'86400' 또는 계산식으로 지정할 경우 수치형을 전달한다. 60*60*24(초*분*시)
'p': 호출하는 기간을 나타내는 키로서 연 단위로 지정된다. 예로서 '1Y'=1년, '10Y'=10년
주의할 점은 이 함수는 호출하는 시점이 기준이 된다는 것이다.
위와 같은 변수를 지정한 객체를 적용하여 다음 함수를 사용하여 호출한다.
get_price_data(param)
다음예는 현재일을 기준으로 10년의 kospi 자료를 호출한 것이다.
In [1]: kos_param = {'q': "KOSPI", 'i': "86400", 'x': "KRX", 'p': "10Y"}
In [2]: kospi = get_price_data(kos_param)
In [3]: print(kospi.head(3))
Open High Low Close Volume
2007-10-31 15:30:00 2052.60 2065.53 2043.93 2064.85 3654380002007-11-01 15:30:00 2085.33 2085.45 2048.68 2063.14 401962000
2007-11-02 15:30:00 2014.65 2049.62 2014.65 2019.34 388387000
2017-10-26 15:30:00 2489.60 2495.99 2480.63 2480.63 646882000
2017-10-27 15:30:00 2485.44 2499.15 2479.67 2496.63 511225000
2017-10-30 15:30:00 2513.87 2513.87 2497.42 2501.93 342006000
또한 여러 종목의 주가를 동시에 호출할 경우 두 가지 방법이 존재한다.
여러 종목을 호출할 경우 여기 하나의 DataFrame 구조로 반환된다.
1. get_prices_data(param, period) : param('q', 'x'), 기간(period)이 전달할 매개변수로서 이 경우는 데이터의 시간간격은 1일로 고정된다.
In [5]: multiparam=[{'q': 'KOSPI', 'x':'KRX'}, {'q': '122630', 'x':'KRX'}, {'q': '114800', 'x':'KRX'}]
In [6]: period='Y'
In [7]: mult=get_prices_data(multiparam, period)
KOSPI_Open | KOSPI_High | KOSPI_Low | KOSPI_Close | KOSPI_Volume | 122630_Open | 122630_High | 122630_Low | 122630_Close | 122630_Volume | 114800_Open | 114800_High | 114800_Low | 114800_Close | 114800_Volume | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2017-10-26 | 2489.60 | 2495.99 | 2480.63 | 2480.63 | 646882000 | 17895.0 | 17935.0 | 17700.0 | 17700.0 | 7818949 | 5960.0 | 6000.0 | 5955.0 | 6000.0 | 6058680 |
2017-10-27 | 2485.44 | 2499.15 | 2479.67 | 2496.63 | 511225000 | 17735.0 | 17975.0 | 17675.0 | 17925.0 | 10186452 | 5995.0 | 6005.0 | 5950.0 | 5955.0 | 6625845 |
2017-10-30 | 2513.87 | 2513.87 | 2497.42 | 2501.93 | 342006000 | 18100.0 | 18130.0 | 17980.0 | 18015.0 | 8155783 | 5925.0 | 5955.0 | 5920.0 | 5940.0 | 3893199 |
2. get_prices_time_data(multiparam, period, interval): 매개변수('q', 'x'), 기간(period), 간격(interval)
In [8]: interval=60*30 #30분단위로 호출한다.
In [9]: mult=get_prices_time_data(multiparam, period, interval)
KOSPI_Open | KOSPI_High | KOSPI_Low | KOSPI_Close | KOSPI_Volume | 122630_Open | 122630_High | 122630_Low | 122630_Close | 122630_Volume | 114800_Open | 114800_High | 114800_Low | 114800_Close | 114800_Volume | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2016-10-31 15:30:00 | 2011.29 | 2016.01 | 2005.95 | 2008.19 | 400664000 | 10735.0 | 10855.0 | 10715.0 | 10795.0 | 8271712 | 7775.0 | 7800.0 | 7750.0 | 7770.0 | 6383367 |
2016-10-31 16:00:00 | 2003.41 | 2010.51 | 1990.45 | 2007.39 | 321774000 | 10785.0 | 10815.0 | 10600.0 | 10800.0 | 21583092 | 7780.0 | 7840.0 | 7765.0 | 7770.0 | 13207830 |
2016-10-31 16:30:00 | 1995.41 | 1997.46 | 1976.34 | 1978.94 | 333529000 | 10650.0 | 10685.0 | 10520.0 | 10535.0 | 28045318 | 7815.0 | 7870.0 | 7805.0 | 7870.0 | 19363803 |
댓글
댓글 쓰기