코인 선물 자동매매 봇 — Bitget→Binance 마이그레이션 첫날, 8건 3승 5패 -2%
봇을 Bitget에서 Binance로 옮기고 첫 24시간. 옮기는 작업은 다른 도구(Codex)에 맡겼고 — API 인증, 엔드포인트, 알고 주문, 웹소켓 다 새로 짜는 큰 공사였다. 라이브 가동 직후 첫 5건 진입이 시장 패닉 시점에 동시에 발생했고, 그러자마자 마이그레이션 잔재 버그 한 개가 터지면서 봇이 자기가 잡은 포지션을 대시보드에서 잃어버린 상태로 12시간을 보냈다.
다행히 거래소 측 알고 TP/SL은 정상 등록돼 있어서, 봇이 잊은 포지션도 거래소가 자동으로 정리해줬다. 결과적으로 사고 없이 마감 — 8건 진입, 3승 5패, 누적 -$3.21 (-1.7%). 작은 손실이지만 마이그레이션 첫날 치고는 좋은 결과다.
아래 차트들을 보면서 읽어줘. 각 코인의 3분봉 차트에 파란색 = 진입가, 초록색 = TP, 빨간색 = SL, 주황색 = 실제 체결가 라인이 그어져 있다.

⏱️ 01:04 KST — MEGAUSDT, 마이그레이션 사고가 만든 손실
진입가 0.162409, TP 0.173778 (+7%), SL 0.149416 (-8%).
이 거래는 원래 한 건이 아니었다. 4월 30일 오후 8시 24분 KST에 봇이 첫 진입(72개)을 했는데 — 마이그레이션 버그(get_position() 함수가 Bitget 시절 정의를 그대로 들고 와서 Binance 응답을 잘못 파싱)로 봇이 자기 포지션을 잃어버렸다. 4시간 27분 뒤 같은 코인이 또 시그널을 띄우자 봇은 처음 잡는 줄 알고 두 번째 진입(75개)을 했다. Binance는 같은 방향 두 번 진입 시 자동 평균이라 평단이 0.162409로 계산된 것.
그 직후 가격이 -5%로 빠지면서 평단 SL 라인 근처에서 청산 — 실제 청산가 0.154150, 손실 -$1.24 (-5.09%).

원래 한 번만 들어갔으면 -8% SL 한 방으로 끝났을 텐데, 두 번 진입한 만큼 손실이 두 배로 잡혔다. 봇 운영의 가장 무서운 패턴 — 거래소엔 살아있는데 봇은 모르는 ghost position. 다음날 점검에서 이 버그를 잡았고, 같은 일은 재발 불가능.
⏱️ 01:27 KST — RIVERUSDT, 봇은 정상 작동 중
봇이 ghost position 5건을 모르는 상태에서도 다른 코인 시그널은 정상적으로 처리하고 있었다. 첫 사고 5분 뒤 RIVER 시그널 잡고 정상 진입.
진입 6.661, TP 7.127 (+7%), SL 6.128 (-8%). 45분 안에 SL/TP 못 닿음 → TIMEOUT 청산 at 6.519, 손실 -$0.26 (-2.13%).

차트 보면 진입 직후 살짝 반등 시도 → 이내 횡보. TP/SL 둘 다 못 닿고 45분 max hold 타임아웃. mean reversion 전략의 애매 결과 패턴 — 손실 케이스 중 1/3이 이 타입이다.
⏱️ 01:47 KST — AIGENSYNUSDT, MEGA와 같은 사고 패턴
MEGA와 정확히 같은 사고. 30일 21:00 KST 첫 진입(280개) → 마이그레이션 버그로 봇이 잊음 → 4시간 39분 뒤 두 번째 진입(293개) → Binance 자동 평균.
평단 0.041716, 직후 -5% 빠져서 청산 0.039710, 손실 -$1.17 (-4.81%).

원래 한 번만 들어갔으면 단일 SL 8% 한 번이었을 거. 두 번 들어가서 손실이 더해진 것. MEGA + AIGENSYN 합쳐서 이번 사고로 발생한 추가 손실은 약 -$1.5 정도로 추정.
⏱️ 02:27 KST — BSBUSDT, 정상 SL
봇이 정상 잡은 거래. 직전 30분 -6.57%, 거래량 2.34배. 진입 0.57053, TP 0.610467 (+7%), SL 0.524888 (-8%).
진입 후 -7.53% 빠져서 SL 라인 살짝 위에서 청산 — 실제 체결 0.52757, 손실 -$0.91 (-7.53%).

깔끔한 SL 발동. 슬리피지도 적당. 마이그레이션 버그와 무관한 진짜 시장 손실. mean reversion 전략의 정상 비용.
⏱️ 02:57 KST — GWEIUSDT, 첫 + 거래
진입 0.1055, 청산 0.10804 TIMEOUT, +$0.28 (+2.41%).

TP 7% 까진 못 갔지만 +2.4% 정도에서 횡보하다 45분 타임아웃. TIMEOUT win — TP 라인은 못 닿았지만 진입가보다 위에서 끝난 케이스. 작지만 첫 플러스.
⏱️ 03:49 KST — BIOUSDT, 오늘의 TP
마이그레이션 사고 5건 중 하나였던 BIO. 4월 30일 21:06 KST 첫 진입 후 봇은 잊었지만, 거래소 algo TP가 정상 등록돼 있어서 6시간 43분 만에 +7% 도달 → 자동 TP 발동.
진입 0.040500, TP 0.043635 (+7%), 실제 체결 0.043630 — TP 라인 거의 정확히. 수익 +$0.92 (+7.73%).

봇이 ghost position 상태였는데도 거래소 알고 주문이 살아있어서 결과적으로 정상 청산. 이게 마이그레이션 사고가 큰 손실로 이어지지 않은 이유 — Codex가 알고 주문 등록은 제대로 해놨다. 만약 알고 주문도 깨졌으면 패닉 -10% 이상으로 빠질 때까지 그냥 들고 있었을 거.
⏱️ 04:12 KST — AIOTUSDT, 깔끔한 SL
봇 정상 잡은 거래. 진입 0.1275115, TP 0.136437 (+7%), SL 0.117310 (-8%).
진입 후 -8.67% 폭락 → SL 라인 살짝 아래 0.11646에서 컷, 손실 -$1.04 (-8.67%).

차트 보면 진입 직후 반등 없이 일직선 하락. mean reversion이 안 작동하는 케이스 — 덤프 후에도 추가 매도세 강한 자리. SL이 살짝 슬리피지 잡아먹었지만 적정 손실로 컷됨.
⏱️ 06:49 KST — BASEDUSDT, 수동 청산
마이그레이션 사고 5건 중 마지막. 수익권 들어오면 청산하자고 결정해놓은 상태에서, 새벽에 +$0.22까지 올라온 시점에 수동으로 시장가 청산.
진입 0.110870, 청산 0.112934, +$0.21 (+1.86%).

원래 봇 추적 밖이라 자동 timeout이나 알고 주문이 정상 작동했을 수도 있지만, 내 손으로 마무리하기로 했다. 마이그레이션 사고 1번 정리.
하루 마감 — 승률 37%로 -1.7%
| 지표 | 값 | |:--|:--| | 총 거래 | 8건 | | 승 / 패 | 3 / 5 | | 승률 | 37.5% | | 평균 수익 (승) | +$0.47 | | 평균 손실 (패) | -$0.92 | | 손익비 실적 | 1 : 1.96 | | 누적 손익 | -$3.21 | | 자본 대비 | -1.7% |
오늘의 핵심 관찰:
- 마이그레이션 사고 영향 추정 -$1.5. MEGA + AIGENSYN 두 번씩 진입한 게 단일 진입보다 손실 1.5배 정도 키운 것. 만약 사고 없었으면 오늘 결과는 -$1.7 정도였을 것.
- 거래소 알고 TP/SL이 살아있던 게 결정적. 봇이 ghost position 상태였어도 BIO처럼 +7% 도달 시 자동 TP, AIGENSYN/MEGA 처럼 평균가 -5%에서 자동 청산. 봇 안 깨졌으면 패닉 시 무한 보유로 갈 수도 있었음.
- 5건 동시 진입은 시장 패닉 베타. 04-30 21:00 KST에 알트 동시 -5% 덤프가 발생 → 5개 코인 모두 시그널. 결과적으로 모두 비슷한 시간에 청산. 분산이 아니라 한 방향 베팅이었던 것.
- 봇은 사고 와중에도 정상 시그널은 잡았다. RIVER, BSB, GWEI, AIOT 모두 정상 진입/청산. ghost position이 다른 코인 진입 로직은 막지 않았다는 점이 다행.
- 승률 37%인데 손실 -1.7%로 작게 끝남. mean reversion 1:0.875 RR에서 승률 37%면 이론적으론 더 빠져야 하는데, BIO TP 한 방이 SL 두 번을 덮었음.
마이그레이션 첫날의 교훈은 결국 예측 못 한 잔재 버그는 반드시 있고, 그게 터지는 타이밍은 가장 안 좋을 때라는 것. 다음 거래소 마이그레이션은 함수 정의 중복 검사 등 체크리스트를 들고 들어가야겠다.
오늘의 숫자
체결 내역
| 시각(KST) | 심볼 | 진입 | 청산 | 결과 | 손익$ | 손익% |
|---|---|---|---|---|---|---|
| 01:04:20 | MEGAUSDT | 0.162409 | 0.15415 | SL | $-1.24 | -5.09% |
| 01:27:06 | RIVERUSDT | 6.661 | 6.519 | TIMEOUT | $-0.26 | -2.13% |
| 01:47:32 | AIGENSYNUSDT | 0.041716 | 0.03971 | TIMEOUT | $-1.17 | -4.81% |
| 02:27:03 | BSBUSDT | 0.57053 | 0.52757 | SL | $-0.91 | -7.53% |
| 02:57:06 | GWEIUSDT | 0.1055 | 0.10804 | TIMEOUT | +$0.28 | +2.41% |
| 03:49:07 | BIOUSDT | 0.0405 | 0.04363 | TP | +$0.92 | +7.73% |
| 04:12:03 | AIOTUSDT | 0.127511 | 0.11646 | SL | $-1.04 | -8.67% |
| 06:49:00 | BASEDUSDT | 0.11087 | 0.112934 | TIMEOUT | +$0.21 | +1.86% |
| 07:39:03 | NAORISUSDT | 0.13006 | 0.14005 | TP | +$0.90 | +7.68% |
| 08:12:06 | AIGENSYNUSDT | 0.03782 | 0.03941 | TIMEOUT | +$0.49 | +4.20% |
| 12:03:07 | RAVEUSDT | 0.6707 | 0.6616 | TIMEOUT | $-0.17 | -1.36% |
| 12:15:06 | AIGENSYNUSDT | 0.04003 | 0.03976 | TIMEOUT | $-0.09 | -0.67% |
| 12:36:06 | BSBUSDT | 0.594925 | 0.59704 | TIMEOUT | +$0.03 | +0.36% |
| 12:45:06 | ORCAUSDT | 1.901 | 1.886 | TIMEOUT | $-0.10 | -0.79% |
| 14:39:06 | SKYAIUSDT | 0.36307 | 0.38514 | TIMEOUT | +$0.72 | +6.08% |