이 예처럼 주문을 접수한 후 프로그램 종료 상황이 발생하여 프로그램을 재실행하면 다시 또 주문을 접수하게 되는 이중 주문이 발생하며, 이 때문에 예수금이 줄어들어 투자 비중 조절에 문제가 생길 수도 있습니다.
이 상황을 해결하고자 ➊ 프로그램 실행과 ➋ 주문 접수 사이에 ‘주문 조회’ 과정을 넣어 이미 접수한 주문이 있다면 주문을 접수하지 않고, 없었다면 접수할 수 있도록 주문 정보를 확인하는 로직이 필요합니다.
➊ 프로그램 실행 > ➋ 주문 정보 조회(접수 주문 확인) > ➌ 주문 접수 > ➍ _on_chejan_slot 함수 실행 > ➎ order 데이터 저장 > ➏ 프로그램 종료 상황 발생 > ➐ 프로그램 재실행 > ➑ 재주문 > ➒ _on_chejan_slot 함수 실행 > ➓ order 데이터 저장
이렇게 프로그램이 실행되고 주문 정보를 조회하면 프로그램이 다음과 같이 동작하여 이중 주문 문제 또한 발생하지 않습니다.
➊ 프로그램 실행 > ➋ 주문 정보 조회(접수 주문 확인) > ➌ 주문 접수 > ➍ _on_chejan_slot 함수 실행 > ➎ order 데이터 저장 > ➏ 프로그램 종료 상황 발생 > ➐ 프로그램 재실행 > ➑ 주문 정보 조회(접수 주문 확인) > ➒ (주문 정보 확인하고 재주문하지 않음)
따라서 이런 상황에 대비하여 실제로는 주문을 접수한 적이 없었더라도 최초 프로그램을 실행할 때 혹시 이전 실행에 접수한 주문이 있었는지 확인하는 TR이 필요한 것입니다. 하지만 이전에 접수한 주문을 조회한다고 해서 과거 모든 주문 내역이 나오는 것은 아니고 당일 접수한 주문만 조회됩니다. 그럼 주문 조회 TR를 만들기 위해 먼저 KOA에서 설명을 살펴보겠습니다.