5.7 전략 구현하기
지금까지 트레이딩에 필요한 준비 단계 기능들을 구현하여 초기화 함수에서 호출하는 작업을 했습니다. 5.1절에서 설명한 프로세스를 토대로 현재 단계를 살펴보면 ‘유니버스 실시간 체결 정보 조회 등록’까지 마치고 본격적인 트레이딩 단계를 앞두고 있습니다.
▲ 그림 5-38 자동매매 프로그램의 동작 흐름도
준비를 마쳤으니 이제부터는 그림 5-38의 ➊~➐ 단계를 순서대로 진행하겠습니다.
먼저 유니버스에 있는 종목별로 접수한 주문이 있는지 확인하고, 접수한 주문이 있다면 체결되기를 기다립니다. 여기서 이미 접수한 주문이 있는지 여부는 ‘주문 정보 확인하기’ 단계에서 얻어 온 주문 정보를 바탕으로 확인합니다. 접수한 주문이 없다면 이미 보유한 종목인지 확인합니다. 보유한 종목인지 여부는 ‘잔고 확인하기’ 단계에서 얻어 온 잔고 정보를 바탕으로 확인합니다. 보유 중인 종목이면서 매도 조건에 부합한다면 매도 주문을 접수하고, 보유 종목이 아니라면 매수 조건에 부합하는지 확인하고 매수 주문을 접수합니다.
이 프로세스에서 이미 구현된 것과 만들어야 하는 것을 구분해서 정리해 보겠습니다.
➊ 주문 접수 여부 확인: 초기화 단계에서 Kiwoom 클래스의 get_order 함수로 주문 정보를 확인할 수 있기에 이미 구현되어 있습니다.
➋ 체결 대기: 체결 여부는 따로 처리할 것이 없으므로 구현해야 할 대상은 아닙니다.
➌ 보유 종목 여부 확인: 초기화 단계에서 Kiwoom 클래스의 get_balance 함수로 잔고 정보를 확인할 수 있기에 이미 구현되어 있습니다.
➍, ➏ 매수/매도 대상: 매매 조건에 해당하는지 확인하는 부분은 아직 구현되지 않았습니다.
➎, ➐ 주문 접수: 주문을 접수하는 함수는 이미 구현했기에 매수, 매도에 맞게 필요한 값만 전달하면 바로 사용할 수 있습니다. 이미 구현되었다고 볼 수 있습니다.
이제 남은 작업은 구현된 기능들을 적절히 호출하는 것과 매수/매도 조건에 해당하는지 확인하고 주문을 접수하는 코드를 만드는 것입니다. 하나씩 천천히 만들겠습니다.