Skip to main content

python version of xingapi

Project description

xingapi for python users

Installation

pip install xingapi

eBest xingAPI com guide

이베스트 xingAPI 가이드(링크)

Requirements

  • python 32bit environment
  • xingAPI installation
  • DevCenter installation
  • Download res files

Usage

1. Session

1) 기본사용법

import xingapi as xa

session = xa.Session()
session.login(id='아이디', pw='비밀번호', cert='공인인증비밀번호')

2) account.txt를 활용하는법

account.txt를 아래와같이 생성하여 현재터미널위치에 두고

아이디
비밀번호
공인인증비밀번호

아래스크립트를 실행

import xingapi as xa

with open('account.txt') as f:
    id, pw, cert = f.read().split()

session = xa.Session()
session.login(id, pw, cert)

2. Query 사용법

1) 기본적인 사용예시

삼성전자(005930)의 주식 분별 주가 조회('t1302)를 예로 들어보겠다

query = xa.Query('t1302')
data = query(shcode='005930', cnt=900)

xa.Query 오브젝트 생성시 trcode를 입력 오브젝트를 다시 __call__할 때, 필드이름과, 필드값을 keyword=value 페어로 전달한다 반환된 데이터는 { 블록이름1 : 블록데이터1, 블록이름2 : 블록데이터2 } 의 dict 형태로 반환되고, 블록데이터는 pandas.DataFrame 오브젝트이다.

2) 한줄로도 가능

df = xa.Query('t1302')(shcode='005930', cnt=900)['t1302OutBlock1']

3) 조회/연속조회

query = xa.Query('t1302')
data1 = query.call(shcode='005930', cnt=100).data
data2 = query.nextcall(
    cts_time=data1['t1302OutBlock']['시간CTS'][0]
).data

query = xa.Query('t1302')
data3 = query.call(shcode='005930', cnt=100).data
data4 = query.nextcall(
    shcode='005930', 
    cnt=100, 
    cts_time=cts_time=data1['t1302OutBlock']['시간CTS'][0]
).data

DevCenter에서 TR 확인창을 사용하면 조회버튼/다음조회버튼이 있다 xa.Query.call(**input_kwargs)함수는 조회버튼에 해당하며, 오브젝트 자신을 반환한다. xa.Query.nextcall(**input_kwargs)함수는 다음조회버튼에 해당하며, 역시 오브젝트 자신을 반환한다.

nextcall(다음조회)의 경우 data3처럼 call(조회)에 사용한 키값과 함께 사용해도 되지만, call(조회)를 한 경우엔 data2처럼 다음조회 에사용할 새로운 키값만 입력해도 동작한다.

4) 연속조회 (자동 끝까지)

query = xa.Query('t1302')
data = query.call(shcode='005930', cnt=100).next(keypairs={'time':'cts_time'})

위에서 사용한 call(조회), nextcall(연속조회)를 조합한 next함수를 이용하면 query.isnext 가 False가 될때까지 스스로 반복한다. 여기서 keypairs란 InBlock에 다시 넣어줄 필드이름과, OutBlock에서 가져올 필드 값의 필드이름을 이야기한다. 예를들어 t1302의 경우 InBlock의 timekey 에 OutBlock의 cts_time의 value를 가져와야하므로 keypairs={'time':'cts_time'} 로전달한다.

5) 연속조회 (자동 주어진 횟수만큼만)

query = xa.Query('t1302')
data = query.call(shcode='005930', cnt=100).next(keypairs={'time':'cts_time'}, total=5)

total을 명시해주면 다음조회의 반복회수를 몇번까지 할 것인지 정해준다. 과거 데이터가 양이 너무 많은 경우, dataframe객체 안에 담지 못하고 Out of memory가 발생 할 수 있으므로 그런경우 유용하게 사용가능하다.

Real 사용법

4. App 사용법

로그인 방법

app = xa.App('../account.txt')
app = xa.App('아이디', '패스워드', '공인인증패스워드')
app = xa.App(id='아이디', pw='패스워드', cert='공인인증패스워드')

종목코드조회

  • 종목코드 전체(코스피+코스닥) 리스트로 받아오기
app.종목코드.전체
  • 종목코드 코스피 리스트로 받아오기
app.종목코드.코스피
  • 종목코드 투자주의 리스트로 받아오기
app.종목코드.투자주의
  • 종목명으로 코드 검색하기
app.종목코드.종목명으로검색('삼성전자')
  • 종목코드로 종목명 검색하기
app.종목코드.종목코드로검색('005930')
  • 간편검색
app.종목코드('삼성전자')
app.종목코드('005930')

종목정보조회

  • 일/월/주봉조회
# 일봉 500개 조회
app.종목정보('005930').일봉(500)
# 주봉 100개 조회
app.종목정보('005930').주봉(100)
# 월봉 끝까지(가능한데이터) 전부 조회
app.종목정보('005930').월봉() # 일봉 끝까지(데이터 허용되는 데까지) 조회

일/월/주봉의 경우 request 한번에 300개씩 요청하므로 300개 단위로 끊어서 요청하면 효율적이다 일/월/주봉은 동작방식이 같지만 분봉은 동작방식이 다름

  • 분봉조회 (30초/1분/3분/5분/10분/30분/60분 가능)
app.종목정보('005930').분봉() # 30초봉
app.종목정보('005930').분봉(1) # 1분봉
app.종목정보('삼성전자').분봉(2) # 3분봉
app.종목정보('삼성전자').분봉(5) # 30분봉
  • 체결조회
# 당일체결조회 (전일: 구분=1)
app.종목정보('005930').체결(구분=0) 
# 9시30분에서 10시30분까지 데이터
app.종목정보('005930').체결(종료시간='103000', 개수=1000)
  • 호가조회 (30초/1분/3분/5분/10분/30분/60분 가능)
app.종목정보('005930').호가() # 30초봉
app.종목정보('005930').호가(1) # 1분봉
app.종목정보('삼성전자').호가(2) # 3분봉
app.종목정보('삼성전자').호가(5) # 30분봉
  • 테마
app.종목정보('005930').테마 # 30초봉
  • 신호조회
app.종목정보('삼성전자').신호조회(30)
  • 매물대
app.종목정보('삼성전자').매물대() # 당일
app.종목정보('삼성전자').매물대(2) # 전일
app.종목정보('삼성전자').매물대(3) # 당일+전일
  • 분별/일별 체결강도
app.종목정보('삼성전자').분별체결강도() # 당일, 380개 이하
app.종목정보('005930').일별체결강도(2500) # 2500개, 약 10년치
  • 틱차트/분차트
# 오늘날짜조회
app.종목정보('삼성전자').틱차트(N틱=1) # 오늘날짜 1틱차트
app.종목정보('005930').분차트(N분=3) # 오늘날짜 3분차트

# 기간조회
app.종목정보('삼성전자').틱차트(N틱=10, 시작일='20200503') # 10틱 '20200503'부터 오늘까지 조회
app.종목정보('삼성전자').분차트(시작일='20200501', 종료일='20200504') # 1분봉 시작일부터 종료일까지조회
  • 일차트/주차트/봉차트
app.종목정보('삼성전자').일차트(시작일='20200503') # 일차트 '20200503'부터 오늘까지 조회
app.종목정보('삼성전자').주차트(시작일='20190101', 종료일='20191231') # 주차트 2019년도 조회
app.종목정보('삼성전자').월차트(시작일='20000101', 종료일='20191231') # 월차트 2000년부터 2019년까지 조회

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

xingapi-1.2.14-py3-none-any.whl (481.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page