미국주식을 일정한 가격 간격으로 사고팔기를 반복하는 그리드 매매를 Interactive Brokers(IBKR) API로 만든 사례입니다.
현재가 ±20% 범위에 지정가 주문을 깔아 두면, 매수가 체결될 때 매도가 걸리고 매도가 체결되면 다시 매수가 걸립니다.
고객이 가장 걱정한 것은 프로그램을 켜자마자 대량매수가 나가는 사고였습니다.
플랫폼
Interactive Brokers IB Gateway 또는 TWS, ib_insync
특징
현재가 ±20% 지정가 페어 자동 배치
유형
미국주식 그리드 지정가(GTC)
제작 기간
약 2주 (10~14일)
납품한 프로그램의 대시보드(페이퍼 계좌). 체결된 매수 레벨마다 $0.50 위에 매도가 자동으로 걸리고, 매수는 현재가 아래에만 배치됩니다. 수량과 가격은 예시입니다.
01배경과 요구사항
고객은 미국 주식을 격자(그리드)로 반복 매매하고 싶어 했습니다. 가격이 일정 간격 내려갈 때마다 조금씩 사고,
다시 그만큼 오르면 파는 것을 정해 둔 범위 안에서 계속 되풀이하는 전략입니다. 사람이 직접 하려면
밤새 수십 개의 지정가 주문을 관리해야 합니다.
그리드에는 처음 켤 때 흔히 나는 사고가 하나 있습니다. 현재가 위아래 ±20% 전 범위에 매수 주문을 깔면,
현재가보다 높은 가격의 매수 지정가는 넣는 순간 바로 체결됩니다.
프로그램을 켜자마자 위쪽 매수 주문이 한꺼번에 나가 의도하지 않은 대량매수가 됩니다.
요청은 네 가지였습니다. 국내 계좌 대신 IBKR 계좌로 미국주식 그리드를 자동 운영할 것, 시작 직후 대량매수가 나가지 않을 것,
매수가 체결되면 매도가, 매도가 체결되면 다시 매수가 자동으로 걸릴 것.
그리고 PC를 껐다 켜도 매매내역과 실현손익이 남아 있어야 했습니다.
02구현 방식
IB Gateway나 TWS에 ib_insync로 붙어 그리드 엔진을 돌립니다.
주문은 모두 취소하기 전까지 유효한 지정가(GTC)입니다.
매수가 체결되면 매수가에 간격을 더한 가격에 매도를 걸고, 그 매도가 체결되면 같은 레벨에 매수를 다시 겁니다. 이 왕복이 계속 이어집니다.
현재가가 움직이면 범위를 다시 계산합니다. 범위를 벗어난 미체결 매수는 취소하고 빈 격자에는 매수를 채웁니다.
그리드 매매 흐름. 격자 배치, 체결 뒤 반대주문 생성, 시작 대량매수를 막는 장치설정 탭. 현재가 아래 레벨에만 매수 배치 체크박스가 시작 직후 대량매수를 막습니다.
명세서에는 ±20% 전 범위에 매수를 배치한다고 적혀 있었습니다. 그대로 만들면 위쪽 매수가 즉시 체결되어 사고가 납니다.
그래서 현재가 아래는 매수 대기, 위는 매도 대기로 나눠 깔았습니다. 이 동작은 설정 화면의 체크박스로 두어서
고객이 필요하면 직접 바꿀 수 있습니다.
03어려웠던 부분
시작 대량매수와 주문 중복을 막는 일
그리드에서 위험한 것은 두 가지입니다. 하나는 앞에서 말한 시작 직후의 대량매수이고, 다른 하나는 가격이 흔들릴 때
같은 격자에 주문이 두 번 나가거나 빠지는 일입니다. 앞의 것은 현재가 아래에만 매수를 두는 것으로 막았습니다.
뒤의 것은 격자 가격을 소수점 없이 센트 단위 정수로 고정해서 풀었습니다.
현재가가 움직여도 각 레벨의 가격이 달라지지 않으니 중복도 누락도 생기지 않습니다.
각 레벨은 빈칸, 매수대기, 보유, 매도대기, 차단, 완료 가운데 한 상태를 가집니다. 체결과 취소, 범위 재계산이 겹쳐도 레벨마다 지금 상태가 분명해서 주문이 꼬이지 않습니다.
증권사가 거부한 주문은 그 레벨을 차단 상태로 둡니다. 이렇게 하지 않으면 프로그램이 빈자리로 잘못 알고 1초마다 같은 주문을 다시 냅니다. 범위를 벗어나 프로그램이 스스로 취소한 주문과는 구분합니다.
2주 중 1주만 체결된 채 주문이 취소되면 체결된 1주를 보유로 돌리고 매도를 겁니다. 추적에서 빠지는 주식이 없습니다.
게이트웨이 연결이 끊기면 10초, 20초, 40초, 60초로 간격을 늘려 가며 다시 붙습니다. 알림은 끊길 때마다 한 번만 보내고, 다시 연결되면 실제 잔고와 미체결 주문을 새로 맞춥니다.
04주요 기능
로그 탭. 격자를 센트 단위로 정렬하고, 체결이 오면 반대 주문을 만드는 과정이 순서대로 남습니다.
※ 본 사례는 과거 고객 요구사항을 익명 처리하여 재구성한 것이며, 수익률과 수익금은 공개하지 않습니다.
알고랩은 매매 자동화 프로그램 제작 서비스이며, 종목 추천, 투자 자문, 수익 보장 서비스가 아닙니다.
과거 백테스트 결과가 미래 실거래 수익을 보장하지 않습니다. 해외주식 투자는 원금 손실 위험이 있으며,
레버리지 ETF 등 변동성이 큰 종목은 손실이 확대될 수 있습니다.
그리드 매매를 맡기고 싶으시다면
종목과 간격이 정해져 있지 않아도 됩니다.
지금 손으로 하고 계신 방식을 상담에서 말씀해 주세요.