반응형
[주식, 업종, 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)

print(stockdata)

반응형

'공부 > 시스템트레이딩' 카테고리의 다른 글

2. 종목 리스트 불러오기  (0) 2021.10.04
1. 개발환경설정  (0) 2021.10.04

+ Recent posts