2. 해외선물/2-4. 해외선물 API (사용)

(키움증권 해외선물 OpenAPI-W) 자동매매를 위한 TR요청 방법

봄이오네 2022. 12. 31. 08:05
반응형
목 차
1. 들어가며
2. 사전설명
3. 함수 설명
1) SetInputValue 함수
2) CommRqData 함수
3) OnReceiveTrData 함수
4) GetCommData 함수
4. 데이터 입력/반환받는 형태
5. 마치며

1. 들어가며

지난 글에서는 OpenAPI-W를 통한 자동매매를 위해
시세요청 이용료 결재하기를 알아보았다.

이번 글에서는 OpenAPI-W를 통해 키움서버에 데이터를
입력 - 요청 - 연결 - 수신받는 방법을 알아볼 것이다.

즉 이 글에서는 입력/요청/연결/수신의 4가지를 알아보자.

※ 참고로, 사용자가 OpenAPI-W를 통해 데이터를 받아오는 방법은 2가지이다.
TR데이터 요청, 실시간 데이터 요청의 2가지이다.
→ 여기서는 TR데이터 요청만 알아볼 것이다.
(실시간 데이터를 받아오는 방법은 별도 설명하지 않을 예정이다.)


2. 사전설명

TR 요청을 통해 데이터를 받아오는 원리는 위에서 설명하였듯이,
데이터 입력 → 요청 → 입력 → 요청의 4단계이다.

  • 데이터 입력은 키움에서 제공하는 SetInputValue 함수를 이용한다.
  • 데이터 요청은 키움에서 제공하는 CommRqData 함수를 이용한다.
  • 데이터 연결은 키움에서 제공하는 OnReceiveTrData 함수를 이용한다.
  • 데이터 수신은 키움에서 제공하는 GetCommData 함수를 이용한다.

3. 함수 설명

키움증권에서 제공하는 개발가이드를 확인해보자.
(p14~15, p21의 내용이다.)

kiwoom_openapi_w_devguide_ver_1.0
1.77MB


1) SetInputValue 함수

  • 설명 : TR값을 서버에 입력한다.
  • 형태 : SetInputValue (QString, QString) → 2개 문자를 입력

그림1. SetInputValue 함수에 대한 설명


2) CommRqData 함수

  • 설명 : TR 내용을 키움서버에 요청(송신)한다.
  • 형태 : CommRqData (QString, QString, QString, QString) → 4개 문자를 입력

그림2. CommRqData 함수에 대한 설명


3) OnReceiveTrData 함수

  • 설명 : connect를 이용하여 CommRqData와 GetCommData을 연결한다.
  • 형태 : self.kiwoom.OnReceiveTrData.connect(OnReceiveTrData)

그림3. OnReceiveTrData 함수에 대한 설명


4) GetCommData 함수

  • 설명 : 데이터를 수신받는다.
  • 형태 : GetCommData (QString, QString, int, QString) → 문자형 3개인 정수형 1개

그림4. GetCommData 함수에 대한 설명


4. 데이터 입력/반환받는 형태

향후 TR 요청을 하는 경우 4가지로 이루어진다는 것을 기억하자.
데이터 입력 → 요청 → 연결 → 데이터 반환의 형태이다.

입력한 데이터(SetInputValue)를 키움서버에 요청(CommRqData)하면,
키움서버에서 이벤트가 발생(OnReceiveTrData)하여,
데이터를 반환(GetCommData)한다.

여기서 핵심은,
데이터 요청(CommRqData)하면 자동으로 이벤트가 발생하는데,
이것을 연결해 주는 것이 OnReceiveTrData이다.

아래와 같은 코드를 확인해 보자.

self.kiwoom = QAxWidget("KFOPENAPI.KFOpenAPICtrl.1")
self.kiwoom.OnEventConnect.connect(self.login_Connect)
self.kiwoom.OnReceiveTrData.connect(self.trdata_get)

OnReceiveTrData 로 발생한 이벤트는 self.trdata_get 함수와 연결되어,
데이터를 반환해준다.


5. 마치며

TR 요청을 통해 데이터를 수신받는 방법을 알아보았다.
필자는 TR 요청을 선호하는 점 때문에,
실시간 데이터 수신에 대해 별도 설명하지 않았다.

"TR 요청"은 데이터 입력, 요청, 연결, 수신의 4단계로 이루어진다는 내용을 기억하자.

반응형