반응형
[주식, 업종, ELW 차트\] CpSysDib.StockChart
작성일2017-05-24 오후 5:51:36조회수17704
| 설명 | 주식, 업종, ELW의차트데이터를수신합니다. |
| --- | --- |
| 통신종류 | Request/Reply |
| 연속여부 | O |
| 관련 SB/PB | StockCur |
| 관련CYBOS | \[7400 통합챠트\] 일,주,월,분,틱 |
| 모듈위치 | cpsysdib.dll |
# Method
object.SetInputValue(type,value)
type에해당하는입력데이터를 value 값으로지정합니다
- type: 입력데이터종류
0 - 종목코드(string): 주식(A003540), 업종(U001), ELW(J517016)의종목코드
1 - 요청구분(char):
'1': 기간 요청시 주,월,분,틱은 불가
'2' : 갯수로 요청이고 분,틱 모드인 경우에는 요청 갯수 및 수신 갯수를 누적해서
다음 데이터 요청을 체크해야 함.( 요청 갯수 <= 수신 갯수 비교하는 로직 추가)
| 코드 | 내용 |
| --- | --- |
| '1' | 기간 |
| '2' | 개수 |
2 - 요청종료일(ulong): YYYYMMDD형식으로데이터의마지막(가장최근) 날짜 Default(0) - 최근거래날짜
3 - 요청시작일(ulong): YYYYMMDD형식으로데이터의시작(가장오래된) 날짜
4 - 요청개수(ulong): 요청할데이터의개수
5 - 필드(long array): 필드 배열
필드값
0: 날짜(ulong)
1:시간(long) - hhmm
2:시가(long or float)
3:고가(long or float)
4:저가(long or float)
5:종가(long or float)
6:전일대비(long or float) - 주) 대비부호(37)과반드시같이요청해야함
8:거래량(ulong or ulonglong)주) 정밀도만원단위
9:거래대금(ulonglong)
10:누적체결매도수량(ulong or ulonglong) -호가비교방식누적체결매도수량
11:누적체결매수수량(ulong or ulonglong) -호가비교방식누적체결매수수량
(주) 10, 11 필드는분,틱요청일때만제공
12:상장주식수(ulonglong)
13:시가총액(ulonglong)
14:외국인주문한도수량(ulong)
15:외국인주문가능수량(ulong)
16:외국인현보유수량(ulong)
17:외국인현보유비율(float)
18:수정주가일자(ulong) - YYYYMMDD
19:수정주가비율(float)
20:기관순매수(long)
21:기관누적순매수(long)
22:등락주선(long)
23:등락비율(float)
24:예탁금(ulonglong)
25:주식회전율(float)
26:거래성립률(float)
37:대비부호(char) - 수신값은 GetHeaderValue 8 대비부호와동일
※ 해당 데이터는 2002년 이후로 제공되며 이전 데이터는 NULL 임.
6 - 차트구분(char)
| 코드 | 내용 |
| --- | --- |
| 'D' | 일 |
| 'W' | 주 |
| 'M' | 월 |
| 'm' | 분 |
| 'T' | 틱 |
7 - 주기(ushort): Default-1
8 - 갭보정여부(char)
| 코드 | 내용 |
| --- | --- |
| '0' | 갭무보정 \[Default\] |
| '1' | 갭보정 |
9 - 수정주가(char)
| 코드 | 내용 |
| --- | --- |
| '0' | 무수정주가 \[Default\] |
| '1' | 수정주가 |
10 - 거래량구분(char)
| 코드 | 내용 |
| --- | --- |
| '1' | 시간외거래량모두포함\[Default\] |
| '2' | 장종료시간외거래량만포함 |
| '3' | 시간외거래량모두제외 |
| '4' | 장전시간외거래량만포함 |
- value: 새로지정할값
value = object.GetHeaderValue(type)
type에해당하는헤더데이터를반환합니다
- type: 데이터종류
0 - 종목코드(string)
1 - 필드개수(short)
2 - 필드명의배열(string array): 필드는요청한필드값의오름차순으로정렬되어있음
3 - 수신개수(long)
4 - 마지막봉틱수(ushort)
5 - 최근거래일(ulong): YYYYMMDD
6 - 전일종가(ulong or float)
7 - 현재가(ulong or float)
8 - 대비부호(char)
| 코드 | 내용 |
| --- | --- |
| '0' | 판단불가/초기값/거래무 |
| '1' | 상한 |
| '2' | 상승 |
| '3' | 보합 |
| '4' | 하한 |
| '5' | 하락 |
| '6' | 기세상한 |
| '7' | 기세상승 |
| '8' | 기세하한 |
| '9' | 기세하락 |
9 - 대비(long or float)
10 - 거래량(ulong or ulonglong)
11 - 매도호가(ulong or float)
12 - 매수호가(ulong or float)
13 - 시가(ulong or float)
14 - 고가(ulong or float)
15 - 저가(ulong or float)
16 - 거래대금(ulonglong)
17 - 종목상태(char)
'0' - 정상
'1' - 투자위험
'2' - 관리
'3' - 거래정지
'4' - 불성실공시
'5' - 불성실공시&관리
'6' - 불성실공시&거래정지
'7' - 불성실공시&투자위험
'8' - 투자위험&거래정지
'9' - 관리&거래정지
'A' - 불성실공시&관리&거래정지
'B' - 불성실공시&투자위험&거래정지
'C' - 투자위험예고
'D' - 투자주의
'E' - 투자경고
'F' - 불성실공시&투자위험예고
'G' - 불성실공시&투자주의
'H' - 불성실공시&투자경고
'I' - 투자위험예고&거래정지
'J' - 투자주의&거래정지
'K' - 투자경고&거래정지
'L' - 불성실공시&투자위험예고&거래정지
'M' - 불성실공시&투자주의&거래정지
'N' - 불성실공시&투자경고&거래정지
'Z' - ETF종목
18 - 상장주식수(ulonglong)
19 - 자본금\[백만원\](ulong)
20 - 전일거래량(ulong or ulonglong)
21 - 최근갱신시간(ulong): hhmm
22 - 상한가(ulong or float)
23 - 하한가(ulong or float)
- 반환값: 데이터종류에해당하는값
value \= object.GetDataValue (Type,index)
type에해당하는데이터를반환합니다
- type: 요청한필드의 index - 필드는요청한필드값으로오름차순으로정렬되어있음
- index: 요청한종목의 index
object.Subscribe()
사용하지않음
object.Unsubscribe()
사용하지않음
object.Request()
해당하는데이터를요청한다
object.BlockRequest()
데이터요청.Blocking Mode
Event
Object.Received
해당하는데이터를수신했을때발생하는이벤트
import win32com.client
import pandas as pd
instStockChart = win32com.client.Dispatch("CpSysDib.StockChart")
#데이터 구성
instStockChart.SetInputValue(0, "A003540")
instStockChart.SetInputValue(1, ord('2'))
instStockChart.SetInputValue(4, 100)
instStockChart.SetInputValue(5, (0,1,2,3,4,5,6,8,9))
instStockChart.SetInputValue(6, ord('m'))
instStockChart.SetInputValue(7, 15)
instStockChart.SetInputValue(9, ord('1'))
datacolumn = ['date','time', 'open', 'high','low', 'close',
'change','vol']
data = []
#데이터 요청
instStockChart.BlockRequest()
numData = instStockChart.GetHeaderValue(3)
for i in range(numData):
data.append([instStockChart.GetDataValue(0, i),
instStockChart.GetDataValue(1, i),
instStockChart.GetDataValue(2, i),
instStockChart.GetDataValue(3, i),
instStockChart.GetDataValue(4, i),
instStockChart.GetDataValue(5, i),
instStockChart.GetDataValue(6, i),
instStockChart.GetDataValue(8, i)])
stockdata = pd.DataFrame(data= data, columns=datacolumn)
print(stockdata)
stockdata.to_csv('stockdata.csv', index=False)

반응형
'공부 > 시스템트레이딩' 카테고리의 다른 글
| 2. 종목 리스트 불러오기 (0) | 2021.10.04 |
|---|---|
| 1. 개발환경설정 (0) | 2021.10.04 |