프로젝트 / 비비드인덱스

비트인덱스 전략 수정

2026.02.24 3분 읽기

비트인덱스의 첫 번째 전략은 솔직히 "할 수 있는 건 다 넣자"였다.

RSI, MACD, 볼린저밴드, 스토캐스틱, ATR — 기술적 분석. Fear & Greed, 펀딩비, 롱숏비율, 미결제약정, BTC 도미넌스 — 펀더멘털 분석. 거기에 RSS 뉴스 9개를 긁어서 Ollama Qwen에게 두 번이나 물어보는 AI 분석까지.

노드 40개짜리 괴물 워크플로우. 돌아가긴 돌아갔다. 그런데 문제가 있었다.

"분석은 훌륭한데, 수익은 어디 있지?"

지표가 많을수록 신호가 충돌한다. RSI는 과매수인데 MACD는 골든크로스고, 뉴스는 긍정적인데 Fear & Greed는 공포 구간이고. AI한테 "니가 판단해"라고 넘기면 결국 MEDIUM 컨피던스로 수렴한다. 안전한 판단이지만, 그게 돈이 되진 않았다.

그래서 우마 트레이더의 전략을 가져왔다. 프랙탈 기반 박스권 매매. 단순하고, 명확하고, 규칙적이다.


이전 전략: 분석의 과잉

기존 BTC_Analysis_Trading.json은 이런 구조였다.

  1. 4시간봉 마감 시 데이터 수집 (Binance + CoinGecko + Alternative.me + RSS 9개)
  2. 기술적 분석 — Ollama Qwen 3:8b가 지표 종합
  3. 펀더멘털 분석 — 같은 모델이 시장 심리 분석
  4. 최종 판단 — Ollama Qwen 3:14b가 두 분석 + 30일 예측 이력을 보고 결정
  5. 결과를 텔레그램 + 대시보드에 기록

핵심 문제는 AI가 매매 판단의 주체였다는 것이다. LLM은 분석은 잘하지만, "지금 롱 잡아"라는 결정을 내리기엔 너무 보수적이다. 매번 "조건부 롱, 단 리스크 관리 필수"라는 식으로 대답한다. 사람이라면 그 뉘앙스를 읽겠지만, 자동매매 시스템에선 그게 결국 HOLD로 수렴한다.

항목기존 전략문제
AI 역할매매 판단 주체보수적 수렴, MEDIUM 남발
지표 수10개+신호 충돌 빈번
노드 수40+디버깅 지옥
모델Ollama Qwen (로컬)서버 자원 부담, 응답 불안정
진입 기준AI 종합 판단재현성 없음 (같은 입력, 다른 출력)

우마 전략: 프랙탈 박스권

우마 트레이더의 핵심은 간단하다.

가격은 박스 안에서 놀다가, 결국 뚫고 나간다. 그 두 가지 순간을 잡는다.

박스는 어떻게 찾나

4시간봉 210개(약 35일)를 불러와서 프랙탈 고점/저점을 찾는다. 프랙탈이란 양쪽 3개 캔들보다 높은(또는 낮은) 지점을 말한다. 이 점들이 모이면 지지선과 저항선이 된다.

// 프랙탈 고점: 양쪽 3개 캔들보다 높은 지점
if (candles[i].high > max(candles[i-3..i-1]) &&
    candles[i].high > max(candles[i+1..i+3])) {
    → 저항 존 후보
}

// 최소 폭 200포인트, 150포인트 이내 존은 병합
zones = merge(zones.filter(z => z.width >= 200), distance=150)

이렇게 만들어진 존이 곧 박스다.

두 가지 진입 모드

모드조건청산 방식
BOX지지선 근처 + 양봉 반전 (롱)
저항선 근처 + 음봉 반전 (숏)
TP1 절반 익절 → SL 본절로 이동 → TP2 나머지
BREAKOUT저항선 돌파 + 직전봉은 아래 (롱)
지지선 하방 이탈 + 직전봉은 위 (숏)
전량 한 번에 익절

BOX 모드의 절반 익절이 핵심이다. 절반을 먼저 수익 확정하고, 손절을 진입가로 올린다. 나머지 절반은 리스크 프리 상태에서 큰 수익을 노린다. 잃어도 원금, 이기면 두 배. 수학적으로 유리한 구조다.


하나가 둘이 되다: Scanner + Monitor

기존엔 워크플로우 하나가 전부를 했다. 분석도 하고, 진입도 하고, 관리도 하고. 그게 노드 40개의 원인이었다.

우마 전략에선 역할을 분리했다.

Scanner — 진입 담당 (26노드)

Monitor — 관리 담당 (14노드)

Scanner가 "언제 들어갈까"를, Monitor가 "들어간 뒤 어떻게 할까"를 담당한다. 서로의 영역을 침범하지 않는다.

이 분리 덕분에 디버깅이 쉬워졌다. 진입에 문제가 있으면 Scanner만 보면 되고, 청산 타이밍이 이상하면 Monitor만 보면 된다.


AI의 역할 변화

가장 큰 철학적 전환이 여기 있다.

기존우마 전략
AI 모델Ollama Qwen 3 (8b + 14b)Gemini 2.5 Flash
AI 역할매매 판단의 주체뉴스 감성 분석만
매매 결정AI가 결정코드가 결정
재현성낮음 (LLM 특성상 랜덤)높음 (같은 입력 = 같은 출력)

AI한테 "사야 할까 말아야 할까"를 물어보지 않는다. 대신 "지금 시장 분위기가 어때?"만 물어본다.

Gemini는 최신 BTC 뉴스를 분석해서 강세/약세/중립과 1~5점 컨피던스만 돌려준다. 이건 7점 만점 신뢰도 점수의 한 요소일 뿐이다. 나머지 6점은 전부 코드로 계산한다 — 가격 vs MA 위치, 감성 정렬, 존 폭, 리스크 대비 수익률, 트레이드 모드.

로컬 Ollama에서 클라우드 Gemini로 바꾼 이유도 실용적이다. 로컬 LLM은 서버 자원을 많이 먹고, 간혹 JSON 포맷이 깨졌다. Gemini Flash는 빠르고 안정적이고, 뉴스 분석 정도는 무료 티어로 충분하다.


DB도 진화했다

기존 positions 테이블에 8개 컬럼을 추가했다.

ALTER TABLE positions ADD COLUMN sl_price DECIMAL(20,8);
ALTER TABLE positions ADD COLUMN tp_mid DECIMAL(20,8);
ALTER TABLE positions ADD COLUMN tp_full DECIMAL(20,8);
ALTER TABLE positions ADD COLUMN trade_mode VARCHAR(20) DEFAULT 'BOX';
ALTER TABLE positions ADD COLUMN zone_top DECIMAL(20,8);
ALTER TABLE positions ADD COLUMN zone_bottom DECIMAL(20,8);
ALTER TABLE positions ADD COLUMN confidence VARCHAR(10);
ALTER TABLE positions ADD COLUMN news_sentiment VARCHAR(20);

핵심은 trade_modetp_mid/tp_full 분리다. BOX 모드에서 Monitor가 TP1 도달을 감지하려면, "원래 절반 익절 가격이 얼마였는지"를 알아야 한다. 이걸 DB에 기록해두면 Monitor는 현재 수량과 비교해서 TP1 히트 여부를 바로 판단할 수 있다.

zone_topzone_bottom은 나중에 트레이드 리뷰할 때 쓴다. "이 트레이드는 어떤 박스에서 나왔는지"를 추적할 수 있어야 전략을 개선할 수 있다.


레버리지와 신뢰도

신뢰도 점수에 따라 레버리지가 달라진다.

신뢰도점수레버리지
HIGH6점 이상10x
MEDIUM4~5점5x
LOW1점 이하3x

기존 전략이 HIGH 5x, MEDIUM 3x, LOW 2x였던 것에 비하면 공격적으로 바뀌었다. 이건 의도적이다. 우마 전략의 손절은 존 경계 + 100포인트 버퍼로 명확하게 정해져 있다. 손절이 명확하면 레버리지를 높여도 리스크가 통제된다.

레버리지 10x가 안전하다는 뜻은 아니다. 다만 "어디서 잘라야 하는지 모르는 10x"와 "존 경계에서 반드시 자르는 10x"는 완전히 다른 이야기다.


Binance 실행 시퀀스

실제 주문 실행은 엄격한 순서를 따른다.

  1. 기존 주문 취소 — 남아있는 SL/TP 주문 정리
  2. 반대 포지션 청산 — 방향 전환 시 기존 포지션 닫기
  3. 레버리지 설정 — 신뢰도에 따른 배율 적용
  4. 잔고 확인 — 주문 가능 금액 조회
  5. 진입 주문 — 시장가 주문 실행
  6. SL 설정 — 존 경계 + 버퍼
  7. TP 설정 — BOX는 TP1(1.5R), BREAKOUT은 전량(1.5R)

모든 API 호출에 HMAC-SHA256 서명이 필요하고, 서버 시간 동기화가 필수다. 이건 Scanner의 Code 노드에서 URL을 미리 조립해두고, HTTP Request 노드에서 실행하는 구조로 해결했다. EP.07에서 이미 겪은 교훈이다.


정리하면

이번 전환의 핵심은 이거다.

40개 노드짜리 워크플로우를 만들었을 때는 그게 정교한 거라고 생각했다. 지금 돌아보면, 복잡한 것과 정교한 것은 다르다. 우마 전략은 26+14=40 노드로 총량은 비슷하지만, 각 노드가 자기 역할만 한다. 분석과 실행이 분리되어 있고, AI와 코드의 경계가 명확하다.

아직 실전 결과가 쌓이지 않았다. 하지만 적어도 "왜 이 포지션을 잡았는지"를 설명할 수 있게 됐다. "AI가 그렇게 말해서"가 아니라, "94,200~94,850 저항 존에서 음봉 반전이 나왔고, MA 아래여서 숏 진입했다"고 말할 수 있다.

설명할 수 있는 전략만이 개선할 수 있는 전략이다.

비비드인덱스 글 목록

← 프로젝트로 이동
비트인덱스 전략 수정 2026.02.24 성적과 학습 시스템 2026.02.19 테스트 2026.02.14 리팩토링 2026.02.14 알트코인 전략 2026.02.14 깃 커밋 2026.01.30 글로벌 확장 계획 2026.01.26 대시보드 구성 2026.01.25 플랫폼 전환 2026.01.12 시작 2026.01.05