키움증권 API도 마찬가지지만 이베스트 XingAPI에서도 개발할 때 유용한 도구를 제공한다.
이베스트 XingAPI에서는 'DevCenter'라는 것인데, XingAPI에서 제공하는 다양한 TR(Transaction)들을 실제로 내가 보유한 계좌를 이용해서 시뮬레이션해볼 수 있도록 해준다.
예를 들면, 계좌 조회를 하는 기능을 개발하고 싶을 경우 어떤 XingAPI TR을 사용해야 하는지, 그리고 해당 TR에 어떤 값들을 입력해서 요청을 해야하는지, 마지막으로 TR에 대한 응답들은 어떤 변수에 어떤 값들이 포함되어 오게 되는지 등이다.
따라서, DevCenter와 HTS/MTS에서 실제 내 계좌의 정보를 비교해가며, 프로그램 개발하면서 내가 필요한 값들이 어떤 것들인지 확인하고 골라내가며 개발을 수월하게 도와준다.
STEP 1. XingAPI 설치
우선 XingAPI를 사용하기 위해서는 이베스트 증권에서 제공하는 XingAPI 패키지를 설치해야 한다.
xingAPI 다운로드는 이베스트증권 회원가입이 되어있어야 한다.
xingAPI 패키지 소개부분의 '최신 버전 설치' - 'PC'를 선택하여 설치한다.
설치가 완료되면 바탕화면에 다음과 같은 아이콘이 생긴다.
STEP 2. XingAPI 실행
개발에 필요한 TR 테스트 프로그램으로 'DevCenter'를 사용하면 된다. 그럼 프로그램을 실행시켜 보자.
프로그램을 실행하면 다음과 같은 이베스트 증권 로그인 화면이 뜬다.
접속 서버는 '실서버'와 '모의투자'를 선택할 수 있는데, '모의투자'를 선택할 경우 미리 이베스트 투자증권 사이트에서 본인 계정에 대해 '모의투자' 참여 신청을 완료해야 한다.
첫 로그인 후에 로그 상세, 로그 속성, TR 속성 등이 화면에 표시되지 않을 수 있다. 이때는 메뉴의[보기]-[도구 모음 및 도킹 창]에서 필요한 화면들을 선택, 체크하면 된다.
그럼 이제 특정 TR 하나를 선택해 보자. 처리할 수 있는 TR의 종류로는 '단일 데이터', '연속 데이터', '반복 데이터'가 있는데 이 중에서 '단일 데이터'와 '반복 데이터'를 하나의 TR로 제공하는 '[t0424] 주식 잔고 2' TR을 살펴보자.
왼쪽 TR 목록에서 '[t0424] 주식 잔고2' TR을 선택하면 위와 같이 해당 TR의 요청 메시지(t0424 inBlock) 그리고 응답 메시지(t0424 OutBlock)에 사용될 각 Data Field 들에 대한 정보를 볼 수 있다.
간략하게 보자면 '[t0424] 주식 잔고 2' TR을 사용하려면 입력에 계좌번호, 비밀번호 등을 넣어야 하고, 수신한 응답에서는 추정 순자산, 실현손익, 매입금액 등의 값을 얻을 수 있는 것으로 되어 있다.
또 하나 중요한 것은 바로 'TR 속성' 창의 정보이다. 이곳에 어마어마하게 중요한! 어찌 보면 가장 중요한 것 정보 중의 하나가 있는데 바로 [ 초당 전송 수 ]이다.
분명하게 '1초당 2건'이라고 명시되어 있다.
이것은 사용자들이 개발할 프로그램에서 '[t0424 주식 잔고2]' TR을 사용할 경우, 반드시 1초에 최대 2건만 요청할 수 있도록 개발해야 한다는 것이다. (실제로 약 0.1초간 요청을 보내게 하면... 하면 당연히 안된다... 계정 정지당함...)
사용자의 프로그램에서 해당 TR을 요청하는 메시지를 만들어야 하는데 그 부분이 바로 't0424InBlock'에 해당된다.
여러 가지 잘 모르는 것들을 입력해야 하는데 어떤 값을 입력해야 할지 모를 때는 해당 Field를 클릭하면 오른쪽 'TR 속성' 화면의 'Field 정보'에 표시된다.
계좌번호는 사용자의 계좌번호를 입력하면 되고, 비밀번호는 계좌의 비밀번호 4자리... 이외 나머지 것들은 어떤 값을 입력해야 하는지... 당연히 알 수 없다. 단가 구분을 눌러보자.
[TR속성]-[Field 속성] 부분에 '1@평균단가', '2@BEP단가' 라고 쓰여있다. 즉, 평균단가로 잔고를 조회하고 싶으면 '1'이란 값을, BEP단가로 잔고를 조회하고 싶으면 '2'란 값을 넣어야 한다는 것이다.
다른 Field 들도 위와 같은 방법으로 어떤 값을 넣어야 하는지 확인하면 된다.
또 하나 유심히 봐야 하는 것은 해당 TR이 '단일데이터' 처리인지 '반복데이터'처리인지 확인하는 것이다.
't0424'를 잘 살펴보면 OutBlock, 즉, 응답 메시지가 두 가지가 존재하는 것을 확인할 수 있다.
't0424OutBlock'이 단일데이터 응답 메시지이고, 't0424OutBlock1 - OCCURS'가 반복데이터 처리 응답 메시지이다.
풀어 얘기하자면 [t0424 주식 잔고2] TR은 't0424InBlock' 메시지로 계좌번호/비밀번호/단가구분/체결구분/단일가구분/제비용포함여부/CTS_종목번호 값들을 입력받아, 't0424OutBlock'으로 계좌의 일반 정보들을 전달하고, 't0424OutBlock1'로 이 계좌에 존재하는 매수된 종목 리스트(여러개일 수 있으니 동일한 형태의 반복적 데이터들임.)를 전달한다. 는 얘기다.
STEP 3. xingAPI TR 실행
xingAPI는 위에서 살펴본 TR에 대해 실제로 테스트해볼 수 있는 기능을 제공한다.
위에서처럼 사용할 TR을 선택한 다음, 메뉴바 밑의 다양한 아이콘들 중에 푸른 오른쪽 세모(재생 버튼 모양)를 클릭하면 별도의 'TR 확인 창'이 뜬다.
TR 확인 창을 실행하면 아까 보았던 InBlock과 OutBlock들의 Field 값들을 볼 수 있고, [In Block]에 해당되는 값들을 입력해서 TR을 실행해 볼 수 있다.
이제 내 계좌의 정보를 입력하고 '조회' 버튼을 클릭하여 이베스트증권 서버로부터 수신한 정보를 확인해 보자.
내 실계좌에 대한 잔고 정보 수신이 완료되었다. Out Block의 값들은 실제 내 계좌정보와 동일하니 바로 이베스트증권 HTS/MTS에 접속하여 하나하나 비교하면서 정확한지 확인해보면 된다. 자동매매 프로그램을 만들면서 이 작업이 중요한 이유는... 아무래도 Field의 이름들이 모두 한눈에 어떤 것을 의미하는지 알아보기 힘들고, TR 정보창의 Field 설명이 나와있지만 그 또한 내가 생각한 이름과 다른 게 쓰여있는 것들이 있어 값을 비교해보고 내가 필요한 값과 동일한 값을 가진 Field를 적어 두었다가 사용하면 꽤 효율적이다.
이제 개발을 시작해 보자.
'Trading' 카테고리의 다른 글
[Trading] MS VS C# xingAPI 사용하기 (0) | 2020.08.21 |
---|---|
[Trading] L-ATS 화면 설계 및 xingAPI 기능 설계 (0) | 2020.08.16 |
[Trading] L-ATS 사용자 시나리오 (0) | 2020.08.02 |
[Trading] 사용자 정보 구조 (0) | 2020.07.18 |
[Trading] HTS 로그인 설계, 구현 (0) | 2020.07.08 |