바이낸스 선물 봇 구조: 명목가 계산과 보호 주문 상태 관리
SYSTEM DESIGN / FUTURES
선물 봇의 핵심은 신호를 하나 더 붙이는 일이 아니라, ‘현재 노출’과 ‘거래소에 접수된 보호 주문’을 같은 상태로 이해하는 일입니다. 진입 주문이 성공해도 보호 주문이 거절됐다면 둘을 함께 성공으로 표시하면 안 됩니다.
이 글은 Binance USDⓈ-M 선물의 주문 처리 구조를 설명합니다. 특정 레버리지나 종목을 권하는 설정값은 제공하지 않습니다. 아래 금액은 계산 관계를 확인하기 위한 가상의 값이며 실제 계좌 결과가 아닙니다.
1. 명목가가 같으면 레버리지만으로 손익 금액이 늘지 않는다
명목가는 가격에 노출된 포지션 크기입니다. 진입가가 100이고 명목가가 125라면 수량은 1.25입니다. 가격이 101로 오를 때 롱 포지션의 비용 전 손익은 1.25입니다. 명목가를 그대로 둔 채 설정 레버리지를 5에서 10으로 올려도 이 손익 금액은 같습니다.
달라지는 것은 단순화한 초기 증거금 추정치입니다. 명목가 ÷ 레버리지로 보면 25에서 12.5로 줄어듭니다. 수수료·펀딩·유지 증거금·계정별 규칙을 생략한 계산이므로 실제 주문 가능액이나 청산가 계산으로 사용하면 안 됩니다.
from decimal import Decimal as D
notional = D("125")
entry_price = D("100")
exit_price = D("101")
quantity = notional / entry_price
gross_pnl = quantity * (exit_price - entry_price)
for leverage in (D("5"), D("10")):
initial_margin_estimate = notional / leverage
print(leverage, quantity, initial_margin_estimate, gross_pnl)
Python 3.12에서 실행한 출력입니다. 열 순서는 레버리지, 수량, 초기 증거금 추정, 비용 전 손익입니다.
5 1.25 25 1.25
10 1.25 12.5 1.25
반대로 같은 증거금을 기준으로 레버리지에 맞춰 명목가까지 늘리면 가격 변동에 따른 손익 금액도 커집니다. 설정 이름에 notional_per_entry를 쓰는 이유는 이 두 경우를 혼동하지 않기 위해서입니다.
2. 주문 수량과 계좌 모드를 먼저 확인한다
동시 포지션 수만 제한해도 계좌 전체 노출이 제한되는 것은 아닙니다. 종목별 명목가와 전체 명목가, 이미 제출된 미체결 주문, 가용 증거금까지 함께 봅니다. 여러 종목이 같은 방향으로 움직일 가능성도 있으므로 종목 수를 곧 분산 효과로 해석하지 않습니다.
계산한 수량과 가격은 대상 심볼의 현재 주문 규칙에 맞춰야 합니다. 거래소 정보 문서의 수량 간격과 가격 간격 등 필터를 읽어, 허용 단위 조정 후에도 주문 조건을 충족하는지 확인합니다. 표시 자릿수만 보고 주문 단위를 추측하지 않습니다.
3. 보호 주문은 전송 후 접수까지 확인한다
2026-09-29 확인한 Binance USDⓈ-M 주문 문서는 조건부 주문에 POST /fapi/v1/algoOrder를 안내합니다. Hedge Mode에서는 positionSide가 필요하며 reduceOnly를 보내지 못합니다. closePosition=true와 quantity 또는 reduceOnly의 조합에도 제한이 있습니다. 따라서 모든 모드에 같은 ‘reduce-only 손절’ 요청을 복사하면 안 됩니다.
설계에서는 실제 체결 수량을 확인하고, 그 포지션에 맞는 보호 주문을 만든 뒤 접수 결과를 대조합니다. 요청을 보냈다는 로그만으로 보호 상태를 켜지 않습니다. 진입이 일부만 체결됐거나 뒤늦게 추가 체결됐다면 보호 수량이나 전체 청산 정책과 어긋나지 않는지도 살펴야 합니다.
4. 손절가는 체결가를 보장하지 않는다
조건부 시장가 주문의 발동 기준과 최종 체결 가격은 같은 개념이 아닙니다. 급격한 가격 변화나 유동성 부족으로 예상보다 불리한 체결이 생길 수 있습니다. 거래소에 주문을 맡겨도 접수 실패, 발동 조건, 계정 상태를 추적할 책임이 사라지지는 않습니다.
| 상황 | 봇이 구분할 상태 |
|---|---|
| 진입 체결, 보호 주문 거절 | 노출은 있음 / 보호는 미확인 |
| 진입 일부 체결 | 보호 대상은 요청 수량과 다를 수 있음 |
| 익절 체결 이후 손절 잔존 | 남은 조건부 주문 정리 여부 확인 |
| 연결 끊김 후 재시작 | 포지션·일반 주문·조건부 주문을 각각 대조 |
5. 지표 합의는 검증할 가설이다
Supertrend, PSAR, 볼린저 지표 같은 조건을 더하면 진입 기회가 줄어들 수 있습니다. 그러나 조건이 많다는 이유만으로 신호 품질이 올라간다고 결론 낼 수는 없습니다. 비슷한 가격 정보를 여러 번 검사하는 것일 수 있고, 과거 데이터에 맞춘 조건 조합일 수도 있습니다.
전략 성능은 별도 자료로 검증하고, 주문 시스템은 전략이 틀려도 상태를 설명할 수 있게 설계합니다. 먼저 중복·응답 유실·재시작 점검표를 적용하고, 단계별 개발 방식으로 로컬과 모의 환경에서 경계를 확인하세요.
내용·예제 검토: 2026-09-29
댓글
댓글 쓰기