증권사 API2018. 1. 11. 10:30

 

 

알고리즘 자동매매 시스템을 만들기 위해 증권사 API를 이용할 때 기본적인 처리 프로세스는 다음과 같습니다.

 

 

@. 진입

 

1. 데이터 수신

 

2. 데이터 분석

 

3. 주문 접수

 

4. 주문 접수 확인 - 주문 내용(주문일시, 주문수량, 주문가격, 주문번호 등) 수신

 

5. 주문 체결 확인 - 체결 내용(체결일시, 체결수량, 체결가격, 주문번호 등) 수신

 

 

@. 청산

 

1. 데이터 수신

 

2. 데이터 분석

 

3. 주문 접수

 

4. 주문 접수 확인 - 주문 내용(주문일시, 주문수량, 주문가격, 주문번호 등) 수신

 

5. 주문 체결 확인 - 체결 내용(체결일시, 체결수량, 체결가격 등) 수신

 

 

위 과정을 처리 함에 있어서 문제의 소지가 될 수 있는 부분은 3~5번입니다.

 

 

주문 접수시 현재가와 주문가의 차이, 주문 접수 당시의 갑작스러운 상승이나 하락의 흐름, 주문의 유형(지정가, 시장가 등)에 따라 주문을 접수한 이후 실제 체결시까지 시간의 차이가 약 1초 이상인 경우에는 별 문제가 없습니다.

 

 

만약 주문 유형이 즉시 체결이 될 수 있는 시장가 주문이거나 지정가 주문이라 하더라도 즉시 체결이 될 수 있는 (시장가와 같은 효력의 주문) 경우라면 문제가 발생할 수 있습니다.

 

 

주문 접수 확인 데이터는 조회TR에 대한 결과이고 주문 체결 확인 데이터는 실시간TR을 수신한 것으로 다른 TR을 이용하기 때문인데요.

 

 

즉시 체결이 될 수 있는 조건에서는 이 데이터의 수신 순서가 역전될 수 있기 때문에 위 처리 프로세스를 기준으로 주문번호 등을 수신 받아 프로그램(메모리)에 저장해두고 이후 주문 체결 확인 데이터 수신시 주문번호로 매칭하려는 경우에는 주문 체결 확인 데이터가 먼저 수신된 후 주문 접수 확인 데이터가 수신될 수 있습니다.

 

 

이는 서버측의 부하 정도, 사용자의 인터넷 환경 등에 따라 4~5번의 과정이 순서대로 처리 될 수도 있고 5번이 먼저 처리되고 4번이 처리 될 수도 있습니다.

 

 

주문 접수한 종목코드나 수량, 가격 정보가 제각각이라면 주문번호 이외에 주문일시, 주문수량, 주문가격 등의 정보로 분리 구분 처리 하면 되지만 짧은 시간내에 소수(혹은 하나)의 종목에 동일 수량의 주문을 처리 하고자 할 경우에는 하나의 알고리즘 자동매매 프로그램 내에서 분리 구분이 안될 수 있습니다.

 

 

만약 즉시 체결 조건의 주문으로 동시 다발 처리를 하려면 프로그램 내에서 매매 로직별로 별도의 넘버링을 하고 수신되는 데이터의 순서와 일대일 매칭하는 등의 별도의 후처리가 필요합니다.

 

 

변동성 완화장치를 이용한 매매 기법을 많이 연구하고 계실텐데요.

위와 같은 개념으로 몇년전 시행된 동/정적 변동성 완화장치 (일명 VI)의 경우에 VI상태에서의 동시호가가 끝나고 VI가 해제되는 순간 수신할 수 있는 데이터는 해당 종목의 체결데이터(주식의 경우 S3_는 코스피, K3_는 코스닥의 체결 데이터를 수신할 수 있는 RealTR)와 VI_ (VI와 연관된 모든 데이터를 수신할 수 있는 RealTR)의 데이터인데요.

 

 

VI_ 해제 데이터가 먼저 수신 될 수도 있고 체결 데이터가 먼저 수신 될 수도 있으므로 고려하여 프로그램 개발을 진행해야 할 것입니다.

 

 

 

Posted by 투자의神