현재 방구석지니는 최소 매매주기 1분으로 설정되어 있다. 그리고 한 계좌에서 최대로 자동매수해서 보유 할 수 있는 종목 수는 60종목으로 제한 되어 있다. 예를 들어 60종목을 1분 주기로 한번에 매수하려면 1분 안에 60종목의 매수주문이 키움OpenAPI를 통해서 나가야하는 것이다. 하지만 현재 프로그램 상 주문과 주문 사이에는 1초의 딜레이를 주고 있기 때문에 1분안에 60종목 주문이 완료가 되지 않아 다음 매매주기가 돌아올 때 명령들이 충돌하면서 한 종목을 2배로 매수하게 되는 문제가 발생했었다.
이 문제를 해결하기 위해 주문과 주문 사이의 딜레이 시간을 최소화 하는 테스트를 해보려고 한다. 0.5초로만 줄여도 매매주기 1분에서도 충분히 돌아갈 것이지만 나의 최종 목표는 현재 한 계좌에 한해서만 자동주문이 나가는 것을 향후에는 여러 계좌에 대한 자동주문을 한번에 하려는 것이기 때문에 주문과 주문 사이의 딜레이는 최소화 하는 것이 최선의 방법이다.
그럼 테스트를 시작해보겠다. 우선 60종목의 포트폴리오를 만들어야겠다. 대충 옛날 퀀트종목들 짬뽕해서 만들자.
역시나 주문횟수제한에 대한 에러코드였다. 0.1초 간격은 일단 안되는걸로...
이번엔 0.2초로 셋팅해서 매수주문을 넣어보자.
에러 없이 주문이 정상적으로 잘 나갔다.
지금까지는 테스트를 위해서 '시장가'로 주문을 보냈는데 이번에는 실제처럼 '현재가'로 셋팅하고 주문가격 정정도 작동되게 테스트 해보자.
60종목이 에러없이 0.2초 간격으로 매수주문이 잘 나갔고 1분뒤 매수정정 주문도 정상적으로 잘 나갔다.
여기까지 테스트를 통해 주문과 주문 사이 0.2초 딜레이로 셋팅해도 되는 것을 확인했다. 60종목 매수 주문 나가는데는 60종목*0.2초=12초가 걸린다는 계산이 나온다. 이렇다면 매매주기를 현재 최소 1분으로 설정되어 있는 것을 30초 정도로 셋팅해도 된다는 말인데... 테스트 해보니 계산대로 동작이 잘 되는 것이 확인된다. 30초마다 매수정정 주문을 보낼 수 있으니 기존보다 더 빠른 미체결종목 체결이 되는 좋은 효과가 있다.
반면에 아래와 같은 오작동은 가끔씩 발생한다.
안그래도 이 문제는 해결해야 되는 부분이고, 게다가 여러계좌에 대한 매수주문을 하게 되면 이 문제는 더 복잡해지게 되기 때문에 더더욱 해결해야 하는 부분이다.
현재는 매수나간 주문에 대해서 따로 관리하지 않고 있는데 향후는 매수나간 종목을 테이블로 관리해야겠다. 아울러 매수/매도 주문 현황 화면을 하나 만들어서 주문이 몇종목 몇수량이 나갔는지 현재 진척도 같은 것도 만들면 사용자가 더 보기 편할 거 같다.
근데... 언제 다 만드냐...
* 본 방구석지니 프로그램은 자동매매 및 퀀트 투자를 위한 자동 리밸런싱 기능이 있는 무료 프로그램입니다. 단, 크몽에서 전자책 구매시 무료로 제공해 드리고 있습니다. 관심 있는 분은 아래 링크 참고해 주세요.
댓글 없음:
댓글 쓰기