이트레이드증권 주문처리 과정
개발하실때 가장 어려운 것중에 하나인 주문시스템에 대해서 설명을 드리려고 합니다.
이것은 주식 주문에 한정된 것이 아니라
모든 주문 시스템의 기본 방식입니다.
상품별로 이 방식을 베이스로 하여 약간의 변형이 이루어지게 됩니다.
※ 주문에서의 Layer
(1) 다음 화면은 주문을 전송했을때의 각 Layer 입니다.
(2) 각 단계별로 어떤일들이 일어나는지 설명하도록 하겠습니다.
1. Request() 함수
(1) Request ID 생성
- 생성 실패시 0 보다 작은 값 반환
(2) 당사 서버로 TCP/IP를 사용하여 전송
- TCP/IP 전송 실패시 Request() 의 Return 값으로 0 보다 작은 값을 반환
- TCP/IP의 성격상 서버가 데이터를 받아야만 TCP/IP 전송 성공으로 인식하게 됩니다.
(1) PC로부터 데이터를 수신
(2) 각 필드의 정합성 검사
- 종목코드, 주문가격, 주문수량 등
(3) 증거금 체크
(4) 주문번호 생성
(5) 거래소로 패킷 전송
- 거래소에서는 패킷에 대한 거부를 주지 않습니다.
- 거래소에서 거부가 발생할 경우에는 거래소로부터 실시간 주문거부 패킷이 전송됩니다
(6) PC로 주문패킷의 응답을 전송
(7) 실시간주문접수 패킷 전송
- 실시간 주문접수 패킷은 거래소에서 생성되는 것이 아니라 당사에서 생성하여 전송되는 패킷입니다
3. 거래소에서의 처리
(1) 체결 발생시 실시간 주문체결 전송
(2) 거부 발생시 실시간 주문거부 전송
(3) 정정/취소 주문 인 경우에는 실시간 주문(정정/취소)확인 전송
- 확인 패킷은 정정/취소 주문에 대해서 거부가 발생하지 않는다는 의미로 전송됩니다.
※ 전체 흐름도
※ 주의
1. 실시간 주문접수는 당사에서 발생시키며 나머지 실시간은 거래소에서 발생시킵니다.
그렇기 때문에 실시간 주문접수보다 실시간 주문체결등이 먼저 PC로 전송되는 일이 발생하기도 합니다.
유의하시기 바랍니다.