봇 킬 스위치 — 이상하게 돌 때 확실하게 멈추는 장치
자동매매를 하다 보면 "지금 당장 멈춰야 하는" 순간이 옵니다. 시세가 이상하고, 봇이 같은 주문을 반복하고, 손실이 예상보다 빠르게 커집니다. 그때 무엇을 누를 것인지 미리 정해두지 않으면, 대부분은 가장 나쁜 방법으로 멈추게 됩니다.
멈춘다는 말은 세 가지로 갈린다
"봇을 멈춰라"는 한 문장처럼 들리지만 실제로는 서로 다른 세 가지 동작입니다. 어느 쪽인지 정하지 않은 채 만든 정지 버튼은 급할 때 오히려 사고를 냅니다.
① 신규 차단 (가장 흔함)
· 새 진입 안 함
· 물타기·증액 안 함
· 보유분 손절·익절은 계속
② 관리만 유지
· ①에 더해 신호 계산도 정지
· 손절 주문만 지켜본다
③ 전량 청산
· 보유 포지션을 시장가로 정리
· 되돌릴 수 없다
─────────────
기본값으로 둘 것
→ ① (피해를 늘리지 않으면서
보유분은 계속 보호)
③을 기본 정지로 만들어두면, 잠깐의 조회 오류에도 멀쩡한 포지션이 손실 확정된 채 닫힙니다. 반대로 ①만 있는데 ③이 필요한 상황이 오면 손으로 닫아야 합니다. 그래서 버튼을 두 개로 나눠두는 편이 낫습니다 — 평소 쓰는 "신규 차단"과, 확인 절차를 한 번 더 거치는 "전량 청산"입니다.
창을 닫아 끄는 것이 가장 나쁜 정지다
급하면 대부분 프로그램 창을 닫거나 작업 관리자로 종료합니다. 이건 정지가 아니라 감시를 없애는 것입니다.
보유 중이던 포지션
BTC 롱 · 20배 · 증거금 $40
노셔널 = 40 × 20 = $800
손절 계획 −3% = −$24
손절이 봇 안에만 있었다면
봇 종료 = 손절 사라짐
가격 −8% → 손실 −$64
증거금 $40의 1.6배
─────────────
차이
−24 → −64 = 2.7배
멈춘 건 봇이지 시장이 아니다
포지션은 봇이 꺼진 뒤에도 계속 살아 있습니다. 손절을 거래소에 실제 주문으로 걸어두지 않고 봇이 가격을 지켜보다 닫는 방식이라면, 봇을 끄는 순간 그 포지션은 무방비가 됩니다. 강제 종료를 쓸 거라면 손절은 반드시 거래소에 걸려 있어야 합니다.
다시 켤 때 문제가 또 하나 있습니다. 봇은 자기가 무엇을 들고 있었는지 기억하지 못한 채 시작하므로, 첫 사이클에 새로 진입해 수량이 두 배가 될 수 있습니다. 이 구조는 봇 재시작과 상태 복구에 정리돼 있습니다. 즉 강제 종료는 정지 사고와 재시작 사고를 한 번에 만듭니다.
정지 신호는 즉시 닿지 않는다
킬 스위치를 만드는 흔한 방법은 표시 하나를 남기는 것입니다. 파일 하나를 만들어두거나, 설정값을 꺼둡니다. 봇은 매 사이클 그 표시를 읽고 있으면 주문을 멈춥니다. 문제는 "매 사이클"이 얼마냐입니다.
루프 3초 · 정지 표시
→ 최대 3초 뒤 반영
루프 30초 · 정지 표시
→ 최대 30초 동안 주문 가능
그 사이 진입 1건 · 물타기 1건
가능성 남아 있음
표시를 부팅 때만 읽는 봇
→ 정지가 영원히 안 걸린다
─────────────
규칙
· 주문 직전에 한 번 더 읽는다
· 표시 읽기 실패 = 정지로 간주
마지막 줄이 중요합니다. 파일을 못 읽었을 때 "표시 없음 = 계속 돌아도 됨"으로 처리하면, 디스크 문제 하나로 킬 스위치 전체가 무력화됩니다. 모르면 멈춘다가 안전한 기본값입니다. 이는 시세가 끊겼을 때 침묵을 정상으로 읽으면 안 된다는 웹소켓 끊김의 원칙과 같습니다.
무엇을 조건으로 걸 것인가
사람이 매번 누르는 스위치만으로는 부족합니다. 자고 있을 때, 자리를 비웠을 때도 멈춰야 하기 때문에 조건을 숫자로 정해둡니다.
시드 $2,000 기준
① 하루 손실 −3% = −$60
1계약 손절 −$24 → 3연패면 −$72
→ 3연패 전에 한도 도달
② 연패 4회 연속
③ 주문 실패율
최근 20건 중 5건 실패 = 25%
④ 시세 신선도
마지막 시세가 8초 이상 낡음
⑤ 봇 수량 ≠ 거래소 수량
→ 2회 연속 불일치
─────────────
①②는 전략이 안 맞는 상황
③④⑤는 봇이 고장난 상황
→ 둘은 다른 스위치로 나눈다
①②는 시장이 예상과 다르게 가는 경우고, ③④⑤는 봇 자체가 잘못 돌고 있는 경우입니다. 후자는 즉시 멈춰야 하지만 전자는 그날 하루만 쉬면 됩니다. 손실 한도를 사람의 규율로 다루는 쪽은 데일리 손실 한도에 따로 정리돼 있고, 여기서는 그 한도를 코드가 강제하는 형태입니다.
⑤는 특히 조용히 나빠지는 항목입니다. 봇이 아는 수량과 계좌의 실제 수량이 어긋나면 이후 모든 주문이 틀린 크기로 나갑니다. 판단 근거가 이미 깨진 상태이므로 계속 돌리는 것 자체가 손해입니다. 대조 방법은 포지션 대사를 참고하면 됩니다.
반쪽 정지 — 하나만 멈추는 경우
봇이 하나뿐이라면 스위치도 하나면 됩니다. 그런데 실제로는 계정이 둘이거나, 같은 봇이 실수로 두 개 떠 있거나, 코인마다 프로그램이 따로 도는 경우가 많습니다.
· 스위치가 계정별로 나뉘어 있는데
한쪽만 눌렀다
· 같은 봇이 두 개 떠 있는데
한 프로세스만 종료했다
· 코인별 봇 10개 중 2개만 껐다
· 정지 표시를 다른 폴더에 만들었다
→ 봇은 못 본다
─────────────
확인 방법
정지 후 실제 주문이 0건인지
주문 기록으로 확인한다
(눌렀다 ≠ 멈췄다)
"정지 버튼을 눌렀다"와 "정말 멈췄다"는 다른 말입니다. 정지 직후 몇 분간 새 주문 기록이 실제로 0건인지 보는 습관이 필요합니다. 프로세스가 두 개 떠 있으면 각자 따로 주문을 내므로, 한쪽만 멈춰도 계좌에서는 거래가 계속 보입니다. 이 상태는 중복 주문과 같은 모양의 피해를 냅니다.
해제를 잊으면 그것도 사고다
킬 스위치의 실패는 두 방향으로 납니다. 안 멈추는 것과, 멈춘 채 방치되는 것입니다. 후자는 손실이 안 나므로 눈에 잘 띄지 않지만 비용은 분명히 발생합니다.
점검하려고 정지 → 해제를 잊음
그 사이 발생한 것
· 진입 기회 전부 통과
· 손실 0 · 수익도 0
· 기록에는 아무 흔적 없음
─────────────
필요한 것
· 정지 시각을 기록
· 일정 시간 지나면 알림
"아직 정지 상태입니다"
· 해제 후 정상 동작 확인까지
정지는 조용하기 때문에 알림이 없으면 며칠이 지나갑니다. 정지 상태 자체를 주기적으로 알리게 해두면, 잊고 지나가는 일이 사라집니다. 해제할 때도 스위치만 되돌리고 끝내지 말고, 실제로 다시 주문이 나가는지 한 사이클 확인하는 편이 안전합니다.
시험하는 법
킬 스위치는 평소에 쓰지 않다가 가장 급할 때 한 번 쓰는 기능입니다. 그래서 급하지 않을 때 미리 눌러봐야 합니다.
1. 모의 또는 최소 수량으로 진입
2. 정지 스위치를 켠다
3. 확인할 것
· 몇 초 만에 반영됐나
· 새 진입이 0건인가
· 보유분 손절은 살아 있나
4. 스위치를 끈다
5. 다시 정상 주문이 나가나
─────────────
추가 시험
· 정지 표시 파일을 못 읽게 해본다
→ 멈춰야 정상 (돌면 버그)
· 봇을 두 개 켜고 한 번만 정지
→ 둘 다 멈추나
3번의 세 번째 줄을 빠뜨리기 쉽습니다. 정지를 걸었더니 손절까지 같이 멈춰버리는 구현이 의외로 흔합니다. 그러면 정지가 오히려 위험을 키웁니다. 거래소 연동과 주문 처리 전반은 거래소 API 연동 가이드에 정리돼 있습니다.
정리
② 기본값은 신규 차단이 안전하다
③ 전량 청산은 확인 절차를 한 번 더
④ 창 닫아 끄는 건 정지가 아니라 감시 제거
⑤ 손절이 봇 안에만 있으면 끄는 순간 무방비
⑥ 정지 반영은 루프 주기만큼 늦다
⑦ 표시를 못 읽으면 정지로 간주한다
⑧ 조건은 손실·연패 / 실패율·신선도·불일치로 나눈다
⑨ 봇이 여럿이면 반쪽 정지를 의심한다
⑩ 눌렀다와 멈췄다는 다른 말이다
⑪ 해제를 잊는 것도 비용이다
⑫ 급하지 않을 때 직접 눌러봐야 확인된다
한 줄로 줄이면 이렇습니다. 멈추는 방법은 이상이 생긴 뒤에 고민할 것이 아니라, 봇을 만들 때 같이 만들어두는 부품입니다. 스위치가 있으면 이상 징후를 봤을 때 고민 없이 손이 갑니다.
주의
본문의 시드, 증거금, 배율, 손익, 주기 수치는 구조를 설명하기 위한 가정 예시이며 특정 거래소의 실제 측정값이 아닙니다. 주문 취소 방식, 조건부 주문이 봇 종료 후에도 유지되는지 여부, 조회 요청 한도, 계정별 설정 분리 방식은 거래소마다 다르므로 본인이 쓰는 거래소 문서에서 확인하고 소액으로 직접 시험해야 합니다. 레버리지 거래는 원금 전액을 잃을 수 있으며, 투자 판단과 그 결과는 본인 책임입니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
무료 채팅방 입장 →📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →