목 차
1. 들어가며
2. 실시간 데이터 받기에 대한 키움측 답변
1) 실시간 데이터 요청하는 방법
2) 실시간 시세 조회하는 방법
3) 잔고 조회하는 방법
4) 주문후 실시간 시세 받는 방법
3. 마치며
1. 들어가며
지난 글에서는 실시간 데이터를 받아오는 원리에 대해 알아보았다. "非실시간 데이터 받기"와 유사하게, "데이터입력 - 요청 - 실시간 연결 - 실시간 수신"의 4단계로 이루어진다. 코드는 이 다음글에서 확인할 것이다.
이번 글에서는 실시간 데이터 받아오기의 한계에 대해 알아보고자 한다.
실시간 데이터를 받아오는데, 일부 데이터는 받아올 수 없었다. 필자가 놓치고 있는 내용이 있나, 키움증권의 OpenAPI-W의 게시판에 들어가 보았다. 경로는 키움홈페이지 > 고객서비스 > OpenAPI+ > 해외파생OpenAPI > 해외파생OpenAPI게시판.에서 "실시간"으로 검색하였다.
키움측에서는 실시간 데이터를 제한적으로 제공하는 것을 알 수 있다. 코드를 확인하기에 앞서, 실시간 데이터받기에 대한 키움측의 답변을 확인할 필요가 있다.
2. 실시간 데이터 받기에 대한 키움측 답변
1) 실시간 데이터 요청하는 방법
실시간 문의는 현재가 조회에 해당하는 TR목록을 실행하면 자동으로 등록된다. 사용되는 TR은 opt10001, 차트조회인 opc10001~10005 등이다. 즉, 위에서 설명한 4단계(데이터입력-요청-연결-데이터수신)의 4단계를 거쳐야 한다는 것이다. 아래 < 그림1-1 >에서 설명한 내용은 실시간 데이터 조회를 위해 "종목을 등록"한다고 어렵게 이야기 하고 있다.
"종목등록"이라고 생각하면 어렵게 느껴진다. 우리는 "종목을 조회"한다고 생각하면 될 거 같다. 앞으로는 키움증권 OpenAPI-W를 통해 키움서버에 "종목을 등록"한다는 말은, "종목을 조회"한다고 이해하자.
< 그림1-1 >에서 얻을 수 있는 내용은 TR목록을 활용한다는 것이고, 그 활용은 데이터를 입력(SetInput) 및 데이터를 요청(CommRqData)를 코드로 작성해주면, "종목이 조회(=종목 등록)"이 된다는 의미이다.
2) 실시간 시세 조회하는 방법
실시간 조회 및 수신해제하는 방법에 대한 설명이다. 위에서 언급했지만, "종목 등록"은 "종목 조회"로 이해하도록 하자. < 그림1-2 >의 2번을 확인해보자. 입력(CommRqData)하면 연결(OnReceiveRealData)된다는 내용이다.
다만, < 그림1-2 >의 설명에서 빠진 부분이 데이터 입력(SetInputValue)이다. 종목을 조회(등록)해주기 위한 최초 출발은 "데이터 입력(SetInputValue)"이다. 실시간 데이터 조회를 위해서는 데이터입력-요청(CommRqData)-실시간연결(OnReceiveRealData)-실시간 수신(GetCommRealData)의 4단계 구조를 기억하자.
3) 잔고 조회하는 방법
진입/청산/주문의 알고리즘만 잘 설정하면, 계좌의 "잔고"를 알 필요는 없다. 다만, 필자와 같이 "주문가능금액"을 조회해야 하는 사용자에게 "잔고"를 받아올 수 없다는 것은 조금은 좌절이다. "실시간 데이터 조회"는 데이터(현재가, 체결시간 등)만 조회할 수 있는 것이다. ㅠㅠ
다만, 키움측에서는 < 그림1-4 >와 같이, OnReceiveChejankFOpenAPICtrl 함수를 이용하여 실시간 잔고(미결제)내역을 내려받을 수 있다고 한다. 필자는 실시간 매매를 하지 않을 것이므로, OnReceiveChejankFOpenAPICtrl 함수를 구현하지 않을 것이다.
4) 주문후 실시간 시세 받는 방법
중단된 "실시간 시세조회"를 위해서는 opt10001 등의 TR목록에서 사용한 "화면번호"와 SenOrder에서 사용한 "화면번호"가 서로 달라야 한다는 내용이다. 만약 TR목록의 화면번호와 SendOrder의 화면번호가 동일하면, "실시간등록"이 자동해제된다고 한다. 참고하자.
3. 마치며
실시간 데이터 조회에 대한 한계 등을 간단하게 알아보았다. 다음글에서 설명하겠지만, 필자는 "실시간 주문"까지는 코드를 구성하지 않았다. 현재가, 체결량 등의 데이터를 받아오는 것까지만 구현하였다. "잔고"가 실시간으로 내려받을 수없으니, 주문가능금액을 기준으로 진입/청산하는 필자의 알고리즘에는 맞지 않기 때문에 굳이 "실시간 주문" 코드 작성까지는 구현하지 않았다.
< 그림2 >는 WKOA Studio에 대한 내용이다. 여러 "실시간 목록" 중 필자는 2가지(해외선물시세, 해외선물호가)에 대한 내용만 코드로 구성할 수 있었다. 필자의 실력이 부족해서일까? "잔고"목록을 조회하고 싶었는데, < 그림1-3 >의 설명처럼 잔고목록은 제공하지 않는다고 하니, 어쩔수 없이 포기하였다.
코드를 설명하기에 앞서, 너무 뜸을 들이는 감이 없지않지만, 그래도 우리가 어느 수준까지 실시간데이터를 구현할 수 있는지 미리 확인하는 것 또한, 향후 매매를 위한 전략을 선택할 때 분명 유용할 것이다.
"실시간 데이터 조회"를 할지, "非실시간 데이터 조회"를 할지는 사용자의 투자성향이다. 필자는 완성되지 않는 봉을 통해 매매하는 것이 상당히 부담스럽다. 하지만 어떠한 "조회"든 수익만 내면 된다. 잘 판단해서 "조회 방법"을 결정하자.
다음 글에서는 "실시간 데이터 받기"의 코드에 대해 설명할 예정이다.
'2. 해외선물 > 2-3. 해외선물 설명' 카테고리의 다른 글
(키움증권 해외선물 OpenAPI-W) 1분봉 데이터로 3분봉, 60분봉 만들기 (4) 3분/60봉 데이터 만들기 (고급) (2) | 2023.11.02 |
---|---|
(키움증권 해외선물 OpenAPI-W) 1분봉 데이터로 3분봉, 60분봉 만들기 (3) 리스트문과 for문 활용 (중급) (2) | 2023.11.01 |
(키움증권 해외선물 OpenAPI-W) 1분봉 데이터로 3분봉, 60분봉 만들기 (2) 3분봉 받아보기 (초급) (10) | 2023.10.31 |
(키움증권 해외선물 OpenAPI-W) 1분봉 데이터로 3분봉, 60분봉 만들기 (1) 개념 이해하기 (2) | 2023.10.30 |
(키움증권 해외선물) 1분봉 데이터 받기 (4) 키움차트에서 1분봉 받기 (0) | 2023.09.02 |
(키움증권 해외선물) 1분봉 데이터 받기 (3) 데이터 합친 후 수정사항 (0) | 2023.01.13 |
(키움증권 해외선물) 1분봉 데이터 받기 (2) 데이터 한 파일(엑셀)로 합치기 (concat 함수) (0) | 2023.01.12 |
(키움증권 해외선물) 1분봉 데이터 받기 (1) 영웅문G에서 엑셀로 받기 (0) | 2023.01.11 |