레이블이 주식인 게시물을 표시합니다. 모든 게시물 표시
레이블이 주식인 게시물을 표시합니다. 모든 게시물 표시

2016년 1월 26일 화요일

이베스트 투자 증권 API 연동 방법

자동 주식 매매를 위한 이베스트투자증권 API 연동 방법을 요약한다.

1. 이베스트 계좌 개설 (오프라인)
근처 은행에서 통장에 연계 계좌를 개설한다.

2. 이베스트 계좌를 등록 (온라인)
인터넷으로 이베스트 계좌 및 (증권용) 공인 인증서를 등록한다.

3. API 사용 등록 (온라인)
홈피에서 API 사용에 동의한다.

4. Xing API 설치 및 사용
Xing API를 설치한 폴더에 reg.bat 파일을 “관리자 권한”으로 수행한다.
DevCenter를 실행하고, reg 파일을 모두 다운로드 한다.

5. 파이썬 설치
아나콘다(anaconda)를 통해서 python3.x 32bit 버전 설치

6. DLL, COM 객체 모델을 이용한 API 호출
DLL은 빠른 대신에 Only C/C++을 지원한다.
COM은 조금 느리지만 다양한 언어를 지원한다.
파이썬은 pywin32 라이브러리를 사용한다.

7. 테스트 환경
Xing API 설치 시에 같이 설치된 Xing ACE를 통해서 모의 테스트를 할 수 있다.



* (윈도우가 답답한) 맥 유저를 위한 팁

1. 관리자 권한으로 주피터 노트북을 연다.
2. 윈도우 방화벽에 인바운드(python) 허용한다.
3. 맥에서 주피터 노트북에 접속한다.


References

COM (Component Object Model)
마이크로소프트가 개발한 소프트웨어 구성 요소들의 응용 프로그램 이진 인터페이스이다.

본문 참고 사이트
https://wikidocs.net/1582


커버사진
출처 : 이베스트 홈페이지



2016년 1월 16일 토요일

대신증권 API 연동 방법

자동 주식 매매를 위한 대신증권 API 연동 방법을 요약한다.

1. 대신증권 계좌 개설 (오프라인)
근처 은행에서 통장에 연계 계좌를 개설한다.

2. 대신증권 계좌를 등록 (온라인)
인터넷으로 대신증권 계좌 등록 및 (증권용) 공인 인증서를 발급 받는다.

3. CYBOS 5 설치

4. CYBOS Plus 로그인 및 사용 동의
CYBOS Plus를 통해서 로그인 한다.
주문 오프젝트 사용 동의를 한다.

5. 파이썬 설치
아나콘다(anaconda)를 통해서 python3.x 32bit 버전 설치

6. COM 객체 모델을 이용한 API 호출
관리자 권한으로 pywin32 라이브러리를 호출한다.

import win32com.client
cy = win32com.client.Dispatch("CpUtil.CpCybos")
print ( cy.IsConnect )

1이 나오면 준비가 완료 되었다.


* (윈도우가 답답한) 맥 유저를 위한 팁

1. 관리자 권한으로 주피터 노트북을 연다.
2. 윈도우 방화벽에 인바운드(python) 허용한다.
3. 맥에서 주피터 노트북에 접속한다.


References

COM (Component Object Model)
마이크로소프트가 개발한 소프트웨어 구성 요소들의 응용 프로그램 이진 인터페이스이다.

본문 참고 사이트
https://wikidocs.net/2870

웹 API 가이드
http://cybosplus.github.io

샘플 코드 로그
전체 종목 코드 추출 하기
import win32com.client
cursor = win32com.client.Dispatch("CpUtil.CpStockCode")
MAX = curosr.GetCount()
code_map = []
for i in range(MAX):
    code_map.append((cursor.GetData(0,i),
                     cursor.GetData(1,i),
                     cursor.GetData(2,i)))
df = pd.DataFrame(code_map,columns=['code','name','full_code'])
df = df[ df['code'].apply(lambda i: i[0] == 'A') ]
df.to_sql(name='item_names',con=conn,index=True,if_exists='replace')

종목에 대한 분단위 기간 데이터 추출 하기
def insert_item(code,start_date,end_date):
    cursor = win32com.client.Dispatch("CpSysDib.StockChart")
    cursor.SetInputValue(0, code)  # 코드 이름으로 종목 선택
    cursor.SetInputValue(1, ord("1")) # 기간 단위로 받기
    cursor.SetInputValue(2, end_date)  # 날짜 이하
    cursor.SetInputValue(3, start_date)  # 날짜 이상
    cursor.SetInputValue(5, (0, 1, 2, 8)) # 날짜, 시간, 시가, 거래량
    cursor.SetInputValue(6, ord("m"))  # 분단위 추출

    cursor.BlockRequest()   # 서버에 데이터 요청

    _rows = cursor.GetHeaderValue(3)  # 데이터 갯수
    _cols = cursor.GetHeaderValue(1)  # 추출 필드 갯수 setInputValue(5,x) 항목

    _df = pd.DataFrame()
    # GetDataValue
    for i in range(_rows):
        _rec = [];
        for j in range(_cols):
            rec.append(cursor.GetDataValue(j, i))
        _df = _df.append([_rec])
    _df.columns = ('date','time','price','volume')
    _df.to_sql(name="item_"+code,con=conn,index=False,if_exists='append')


커버사진
출처 : 대신증권 홈페이지

2015년 7월 21일 화요일

판다곰(pandas)으로 주식 시세 확인 및 이동평균선 구하기

분석 라이브러리인 판다스(Pandas)를 통해서 주식 시세를 확인 하고,
이동평균선(7일) 구하는 과정을 요약합니다.


작성하는 시점에 판다스(Pandas)의 원격 데이터 수집 모듈이 독립을 하였기에,
먼저 관련 내용을 정리해 봅니다.

판다곰 문서 중에서,
http://pandas.pydata.org/pandas-docs/stable/remote_data.html

관리 차원에서 분리하는 것으로 보이고,
0.17+ 버전 부터는 pandas_datareader를 통해서 관리됩니다.
https://github.com/pydata/pandas-datareader

변경 사항은 기존 코드에서 단지 한줄이면 됩니다.
import pandas.io.data as web
=>
import pandas_datareader.data as web

다음은 판다곰으로 주식 시세 및 이동평균선 구하는 코드 입니다.

# 판다곰에서 독립한 데이터 입출력 라이브러리
import pandas_datareader.data as web
from datetime import datetime

# 2015년 1월 부터 현제까지의 데이터 수집
start = datetime(2015, 1, 1)
end   = datetime.now()

# 구글에서 대한항공의 주식 시세를 가지고 옵니다.
대한항공 = web.DataReader('KRX:003490','google',start,end)

# 종가 기준으로 플로팅을 하구요,
대한항공['Close'].plot(style='--')

# 7일 이동평균선을 약간 두껍게 플로팅 합니다.
pd.rolling_mean(대한항공['Close'], 7).plot(lw=2)

# 기타 양념을 뿌립니다.
title('2015년 대한항공 종가 시세')
xlabel('time')
ylabel('won')
legend(['종가시세','이동평균선(7일)'])"
결과는,

응용차원에서 최근 항공주 관련한 간략한 분석 플롯 올립니다.
* "조현아 사건" 구간은 유가 호재로 항공주 상승에도 불구하고, 대한항공이 맥을 못춥니다.
* "메르스 발병" 구간은 차별 없이 항공주에 악재로 작용하고 있는 것을 보여 줍니다.

필자는 판다스(Pandas)가 없었다면, 지금 파이톤을 하고 있을까라는 생각을 가끔 합니다.