KOA에서 설명하는 것처럼 API를 사용하는 프로그램 내에서 발생하는 주문 처리 흐름은 다음과 같습니다.
➊ SendOrder(주문 발생)
➋ OnReceiveTrData(주문 접수 후 주문 번호 생성 응답)
➌ OnReceiveMsg(주문 메시지 수신)
➍ OnReceiveChejan(주문 접수/체결)
그러면 각 단계를 좀 더 설명해 보겠습니다.
➊ SendOrder(주문 발생): 매매할 종목에 대한 수량, 매매 가격, 주문 타입을 지정하여 주문을 접수하는 함수입니다. 주의할 점은 KOA에서 함수의 반환값이 0이면 정상이라고 설명하지만, 반환값이 0이라고 해서 무조건 주문이 접수되었다는 것은 아닙니다. 예를 들어 장 마감 이후 SendOrder 함수를 호출하면 실제로 주문이 접수되지 않았지만 반환값은 0으로 나옵니다. 이런 부분에 대한 설명은 KOA에도 안내되어 있습니다.
➋ OnReceiveTrData(주문 응답): ‘주문 응답’ 단계는 우리가 앞서 TR 조회 후 응답을 받아 왔던 _on_receive_tr_data 함수를 사용하여 일차적으로 주문 번호를 전달받습니다. 그러나 주문이 정상 접수되면 이후 OnReceiveChejan(주문 접수/체결) 단계에서 주문 번호를 포함한 더 상세한 정보가 나오므로 이 단계는 단순히 중간 단계라고 생각하기 바랍니다.