😅 요즘 블로그가 뜸했던 이유#
안녕하세요! 11월의 첫 포스팅이네요~ 😊
여러분, 눈치채셨나요? 요즘 블로그 업데이트가 좀 뜸했죠? 😅
사실은… 이런 걸 만들고 있었습니다!

Git 히스토리를 확인해보니 최초 커밋이 10월 13일이더라고요. 3주가 조금 넘었네요!
🕰️ 4년 전, 그때 그 좌절#
사실 이 프로젝트, 처음 시도한 게 4년 전이었습니다.
당시에도 “나만의 자동매매 봇을 만들어보자!“는 열정은 넘쳤어요. 그런데…
프론트엔드, 백엔드, 데이터베이스, API 연동, 실시간 데이터 처리, 차트 구현… 어찌어찌 다 만들긴 했어요.
문제는 그 다음이었죠.
봇은 돌아가는데… 수익이 안 나는 거예요. 😰
차트를 어떻게 봐야 하는지, 언제 사고 언제 팔아야 하는지를 아예 몰랐거든요.
“아 이거… 기술 문제가 아니라 트레이딩 지식이 없는 게 문제구나…” 🤦♂️
결국 “나중에 공부하고 다시 하지 뭐~” 하면서 GitHub에 처박아두고 잊고 살았습니다. 😓
💡 Claude Code의 등장 - 다시 시작할 용기#
그러다가 최근에 Claude Code를 쓰면서 생각이 들더라고요.
“어? 이거면 그때 못 만들었던 거 만들 수 있지 않을까?”
Claude Code는 제가 “이런 기능이 필요해"라고 말하면, 알아서 척척 만들어주더라고요. 마치 옆에 시니어 개발자가 앉아있는 것처럼요! 🤖
🚀 15일간의 개발 여정#
첫 주: 순조로운 출발#
“트레이딩 봇 대시보드 만들고 싶은데, 간단하게 할 수 있는 방법 없어?”
Claude Code가 Streamlit을 추천했고, 기본 UI는 금방 만들었어요.
import streamlit as st
st.title("🌙 Moon Seeker Trading Bot 📊 Dashboard")
“와, 이렇게 쉽게 되네?” 😍
그리고 찾아온 복병… 😱#
“바이낸스 API 붙이려면 어떻게 해야 해?”
Claude Code가 추천한 건 python-binance 라이브러리였어요.
pip install python-binance
from binance.client import Client
# 테스트용으로 testnet 사용
client = Client(api_key, api_secret, testnet=True)
근데…
BinanceAPIException: Invalid API-key, IP, or permissions for action
“???” 🤔
3시간의 삽질 시작 😤#
“Claude야, 이거 왜 안 되는데?”
이것저것 시도해봤어요:
- API 키 재발급 → 안 됨
- IP 화이트리스트 설정 → 안 됨
- testnet URL 직접 지정 → 안 됨
- python-binance 버전 바꿔보기 → 안 됨
공식 문서도 뒤지고, 스택오버플로우도 찾아보고, GitHub 이슈도 읽어봤어요.
근데 모두가 같은 증상을 호소하고 있더라고요.
“testnet이 작동 안 해요!”
진실 발견 💡#
계속 삽질하다가… 바이낸스 공식 공지를 발견했어요.
바이낸스가 테스트넷 시스템을 완전히 바꿨더라고요! 😱
🔄 무슨 일이 있었나#
기존 시스템 (2024년 이전)
- Spot Testnet: testnet.binance.vision
- Futures Testnet: testnet.binancefuture.com
새로운 시스템 (2024년~)
- “Demo Trading"으로 통합!
- 주소: https://demo.binance.com
새로운 엔드포인트들#
# Spot REST API
https://demo-api.binance.com
# Spot WebSocket
wss://demo-ws-api.binance.com
# Futures REST API
https://demo-fapi.binance.com
# Futures WebSocket
wss://demo-fstream.binance.com
그래서 안 됐구나! 🤦♂️
python-binance는 옛날 testnet 주소를 사용하니까 당연히 안 되는 거였어요…
결단의 순간: “그냥 직접 만들자!” 💪#
여기서 선택의 순간이 왔어요.
- python-binance 업데이트 기다리기 (언제?)
- 라이브러리 소스 뜯어서 고치기 (복잡함)
- REST API 직접 붙이기
“Claude야, python-binance 버리자. 그냥 REST API로 직접 붙이면 안 돼?”
“좋아요! 바이낸스 API 문서 보면서 만들어볼게요!”
이게… 진짜 삽질의 시작이자 배움의 시작이었습니다 ㅋㅋㅋ
직접 만들기 🛠️#
1단계: BinanceClient 클래스 - Spot으로 시작
처음엔 Spot 거래만 생각하고 만들었어요:
class BinanceClient:
"""Binance API client wrapper with testnet support"""
def __init__(self, config_path: str = "config/trading_config.yaml",
logger=None, db_client=None):
load_dotenv()
# Get API credentials
self.api_key = os.getenv('BINANCE_API_KEY')
self.secret_key = os.getenv('BINANCE_SECRET_KEY')
self.environment = os.getenv('ENVIRONMENT', 'testnet')
# Spot 클라이언트만 초기화
self.spot_client = SpotAPIClient(
api_key=self.api_key,
secret_key=self.secret_key,
testnet=testnet
)
“자, 이제 매수해서 오르면 팔면 되겠네!” 😎
그런데…
하락장에서는 수익을 못 내는 거예요! 😱
“아… Spot은 롱만 되니까 하락장에서 손 놓고 있어야 하는구나…”
그래서 결단! 선물로 바꾸자!
# Spot과 Futures 둘 다 지원하도록 리팩토링!
self.trading_mode = os.getenv('TRADING_MODE', 'spot') # spot 또는 futures
# Initialize clients (Spot과 Futures 분리!)
self.spot_client = None
self.futures_client = None
self._initialize_client()
처음엔 Claude가 Spot이랑 Futures를 한 클래스에 다 때려박더라고요.
“야! 이거 유지보수 어떻게 해! 분리하라고!”
몇 번 갈궈서 결국 깔끔하게 분리했죠 ㅋㅋ
2단계: 환경별 클라이언트 초기화
testnet과 production을 쉽게 전환할 수 있게 만들었어요:
def _initialize_client(self):
try:
testnet = (self.environment == 'testnet')
if testnet:
self.logger.info("Connecting to Binance Testnet...")
else:
self.logger.warning("Connecting to Binance Production - USE WITH CAUTION!")
# Spot API Client 초기화
self.spot_client = SpotAPIClient(
api_key=self.api_key,
secret_key=self.secret_key,
testnet=testnet
)
# Futures API Client 초기화
self.futures_client = FuturesAPIClient(
api_key=self.api_key,
secret_key=self.secret_key,
testnet=testnet
)
# 선물 모드일 경우 레버리지 설정
if self.trading_mode == 'futures':
self._initialize_futures_leverage()
.env 파일에서 ENVIRONMENT=testnet만 바꾸면 끝! 😎
3단계: 통합 계좌 정보 조회
Spot이랑 Futures API 응답이 달라서 통합하는 게 진짜 까다로웠어요:
def get_account_info(self):
"""자동으로 trading_mode에 따라 spot 또는 futures API 호출"""
try:
if self.trading_mode == 'futures':
# 선물 계좌 정보를 spot 형식으로 변환!
account = self.futures_client.get_account()
balances = []
for asset_info in account.get('assets', []):
wallet_balance = float(asset_info['walletBalance'])
available_balance = float(asset_info['availableBalance'])
if wallet_balance > 0:
balances.append({
'asset': asset_info['asset'],
'free': str(available_balance),
'locked': str(wallet_balance - available_balance)
})
return {
'balances': balances,
'totalWalletBalance': float(account['totalWalletBalance']),
'totalUnrealizedProfit': float(account['totalUnrealizedProfit'])
}
else:
return self.spot_client.get_account()
“Claude야, Futures 응답 형식 다르잖아! spot 형식으로 변환해줘야지!”
4단계: 선물 주문 기능
시장가, 손절, 익절 주문을 모두 구현했어요:
def futures_market_order(self, symbol: str, side: str, quantity: float,
position_side: str = 'BOTH', reduce_only: bool = False):
"""선물 시장가 주문"""
try:
order = self.futures_client.create_order(
symbol=symbol,
side=side,
position_side=position_side,
order_type='MARKET',
quantity=quantity,
reduce_only=reduce_only
)
self.logger.info(
f"선물 시장가 주문: {symbol} {side} {quantity}"
)
return order
except Exception as e:
# -4131 에러는 자동 롤백되므로 WARNING
if '-4131' in str(e):
self.logger.warning(f"선물 주문 실패 (자동 재시도): {e}")
else:
self.logger.error(f"선물 주문 실패: {e}")
raise
“오! 드디어 주문도 되네!” 🎉
5단계: DB 기반 레버리지 관리
여기가 진짜 핵심! 심볼마다 다른 레버리지를 DB에서 관리해요:
def _initialize_futures_leverage(self):
"""선물 거래 레버리지 초기화 (심볼별 DB 설정)"""
try:
if self.db_client:
# DB에서 활성화된 심볼 읽기
db_symbols = self.db_client.get_enabled_symbols()
# DB에서 심볼별 레버리지 설정
for config in db_symbols:
symbol = config['symbol']
leverage = config.get('leverage', 1)
try:
self.futures_client.change_leverage(
symbol=symbol,
leverage=leverage
)
self.logger.debug(f"{symbol} 레버리지 {leverage}배 설정")
except Exception as e:
self.logger.warning(f"{symbol} 레버리지 설정 실패: {e}")
이제 DB에서 BTCUSDT는 3배, ETHUSDT는 2배 이런 식으로 관리할 수 있어요! 💪
삽질 하이라이트 🎬#
삽질 1: timeInForce 파라미터
# STOP_MARKET 주문에 timeInForce 넣었다가 에러
# Bug #8 수정: STOP_MARKET에는 timeInForce 불필요!
def futures_stop_market_order(self, symbol: str, side: str, quantity: float,
stop_price: float, reduce_only: bool = True):
order = self.futures_client.create_order(
symbol=symbol,
side=side,
order_type='STOP_MARKET',
stop_price=stop_price,
quantity=quantity,
reduce_only=reduce_only
# timeInForce 제거!
)
삽질 2: Spot에서 Futures로 전환
# 처음엔 Spot으로 테스트하다가 중간에 Futures로 바꿨는데
# FuturesAPIClient에 get_ticker_price() 메서드를 아직 안 만들어서
# 임시로 klines에서 최신 종가를 가져오는 방식으로 우회
def get_symbol_price(self, symbol: str):
if self.trading_mode == 'futures':
klines = self.futures_client.get_klines(symbol=symbol, interval='1m', limit=1)
price = float(klines[0][4]) # 종가
else:
ticker = self.spot_client.get_ticker_price(symbol=symbol)
price = float(ticker['price'])
return price
삽질 3: 캔들 데이터 파싱
# 배열로 오는 캔들 데이터를 딕셔너리로 변환
parsed_klines = []
for kline in klines:
parsed_klines.append({
'open_time': kline[0],
'open': float(kline[1]),
'high': float(kline[2]),
'low': float(kline[3]),
'close': float(kline[4]),
'volume': float(kline[5])
})
매번 Claude가 틀릴 때마다 제가 잡아줬어요.
“야! 바이낸스 API 문서 다시 봐!” “timeInForce는 MARKET/STOP_MARKET에 안 쓴다니까!”
Claude Code를 제대로 갈궈야 제대로 된 코드가 나오더라고요 😅
🎯 Streamlit + 직접 만든 API 클라이언트#
이제 제대로 작동하니까 Streamlit 대시보드 만드는 건 순식간이었어요!
import streamlit as st
st.title("🌙 Moon Seeker Trading Bot")
# 실시간 업데이트!
col1, col2, col3 = st.columns(3)
with col1:
account = binance_client.get_account_info()
balance = account['totalWalletBalance']
st.metric("잔고", f"${balance:.2f}")
with col2:
price = binance_client.get_symbol_price('BTCUSDT')
st.metric("BTC 가격", f"${price:.2f}")
with col3:
positions = binance_client.get_futures_position()
open_pos = [p for p in positions if float(p['positionAmt']) != 0]
st.metric("오픈 포지션", len(open_pos))
완벽! 😍
📊 현재 상태 - 작동은 하는데…#
Moon Seeker Trading Bot Dashboard#
📈 핵심 지표 모니터링
- 총 거래수와 변동 추이
- 승률 및 손익 통계
- 총 손익 (USDT)
- 평균 거래당 손익
📊 실시간 데이터
- WebSocket으로 실시간 가격 업데이트
- 포지션 변동 실시간 반영
- 잔고 변화 즉시 표시
🎨 UI/UX
- 다크 테마 (Streamlit 기본!)
- 반응형 레이아웃
- 기간별 필터링
🔧 기술 스택
- ✅ Streamlit 대시보드
- ✅ 바이낸스 REST API 직접 구현
- ✅ WebSocket 실시간 연결
- ✅ Demo Trading 완벽 지원
- ✅ python-binance? 안 씀! ㅋㅋ
4년 전 혼자서 몇 달 걸려도 못 만들었던 걸… 3주 만에 돌아가게는 만들었어요! 🎉
그리고 놀랍게도… 처음엔 잘 됐어요!
🤔 라이브러리 vs 직접 구현#
처음엔 “라이브러리 쓰면 쉽겠지?“라고 생각했는데…
오히려 직접 만드니까 더 좋았어요!
직접 만들어서 좋은 점#
1. 완전한 제어
- 원하는 대로 커스터마이징 가능
- 디버깅 쉬움 (내가 짠 코드니까)
- 새 기능 바로 추가 가능
2. 최신 API 바로 적용
- Demo Trading 나오자마자 바로 적용
- 라이브러리 업데이트 기다릴 필요 없음
- 바이낸스 API 변경사항 즉시 반영
3. 불필요한 코드 없음
- 필요한 기능만 구현
- 가볍고 빠름
- 의존성 최소화
4. 배우는 게 많음
- REST API 동작 원리 이해
- Spot/Futures 차이점 학습
- 레버리지 관리 방법 습득
python-binance의 한계#
물론 라이브러리도 장점은 있어요:
- 빠른 프로토타이핑
- 검증된 코드
- 많은 예제
하지만:
- 최신 API 반영 느림 (Demo Trading!)
- 블랙박스라 디버깅 어려움
- 불필요한 기능 많아 무거움
결론: 직접 만드는 게 더 낫더라! 💪
🎉 초심자의 행운? Spot 트레이딩 시절#
처음 Spot 트레이딩으로 시작했을 때는… 놀랍게도 잘 됐어요!
Demo Trading에서 일일 70~100달러씩 수익이 나더라고요! 😍
“와, 나 트레이딩 천재인가?” ㅋㅋㅋ
여러 지표를 조합해서 썼어요:
- RSI로 과매도/과매수 확인
- MACD로 추세 파악
- 이동평균선으로 지지/저항 체크
- 이것저것 섞어서!
복잡하게 생각 안 하고 여러 지표가 동의하면 진입하는 방식이었어요.
그냥 직관적으로 조합했는데… 잘 되더라고요!
욕심이 생기다#
“이 정도면 실전 투입해도 되는 거 아냐?”
근데 뭔가 찝찝했어요.
- Spot은 롱만 가능 (하락장에선 손 놓고 있어야 함)
- 지표를 그냥 섞어 쓰는 게 맞나?
- 더 체계적으로 만들고 싶다!
그래서 결정했어요:
- Futures로 전환! (숏도 가능)
- 진입/청산 로직 체계적으로 분리
- 선행/후행 지표 역할 구분
- 더 과학적인 시스템!
“이제 제대로 만들어보자!” 💪
그런데…
😱 욕심이 부른 현실의 벽#
Futures로 전환하고, 로직을 정교하게 만들기 시작했어요.
그런데 뭔가 이상했어요.
첫 번째 시도: Futures + 통합 로직#
Spot에서 쓰던 방식을 그대로 Futures에 적용했어요.
RSI 과매도면 롱 진입 → RSI 과매수면 청산 RSI 과매수면 숏 진입 → RSI 과매도면 청산
간단하잖아요?
근데 자꾸 손실이 나는 거예요. 😰
“어? Spot에서는 잘 됐는데?”
첫 번째 시도: 진입과 청산을 같이 판단#
처음엔 진입할 때 쓴 지표로 청산도 판단했거든요.
RSI가 과매수면 매수 → RSI가 과매도면 매도
간단하잖아요? 근데 이게 문제였어요!
Claude의 첫 번째 조언#
“진입 신호는 잘 잡는데 청산 타이밍을 못 잡겠어. 어떻게 하면 좋을까?”
Claude가 알려준 핵심:
- 진입할 때는 추세를 봐야 하고
- 나올 때는 수익/손실 보호가 우선
- 두 개는 완전히 다른 로직으로 작동해야 함!
“아… 그래서 안 됐구나!” 💡
그런데… 😱#
진입/청산 로직을 완전히 분리해서 다시 돌렸어요.
그리고 이틀 연속 가상 자금 100달러씩 증발했습니다. 😰
“엥? Claude 조언대로 했는데 왜 더 안 돼?” 🤯
다행히 Demo Trading이라 실제 돈은 아니었지만… 가상이어도 아프더라고요 ㅠㅠ
실전이었으면 완전 멘붕이었을 듯합니다.
문제는 청산 로직이었다#
진입/청산 분리는 맞았는데, 청산 로직 자체가 엉망이었던 거예요!
- 손절선이 너무 타이트해서 조금만 흔들려도 튕겨나가거나
- 반대로 너무 느슨해서 수익이 다 날아가거나
청산 로직을 계속 튜닝하고 조정했어요:
- 손절선을 적절한 위치로
- 익절은 단계별로 (일부는 빨리, 일부는 길게)
- 추세가 강할 때는 더 끌고 가기
그리고 드디어… 🎉
Demo Trading에서 일일 10~20달러 정도 수익이 나기 시작했어요! 💰
“드디어 되네!” 😭
계속 정교하게 만들기#
청산 로직 해결하고 나니, 진입 쪽도 개선하고 싶어지더라고요.
선행지표와 후행지표 분리 - 새로운 개념!
Spot 시절엔 여러 지표를 썼지만, 구분 없이 섞어서 썼거든요.
Claude가 새로운 개념을 알려줬어요:
“진입 시그널도 선행지표와 후행지표를 분리해서 봐야 해요.”
- 선행지표: 가격 변동에 앞서 신호 (오더북 불균형, 펀딩비, 거래량 급증 등)
- 후행지표: 이미 발생한 추세 확인 (RSI, MACD, 이동평균선 등)
“선행지표로 신호 포착 → 후행지표로 확인 → 진입”
이렇게 역할을 분리하니까 훨씬 체계적이더라고요!
Spot 때는 그냥 섞어서 썼는데, 이제는 각각의 역할이 명확해졌어요!
앙상블 투표 전략까지
여기서 한 발 더 나갔어요.
“여러 지표를 동시에 보면서 ‘투표’하듯이 결정하면 어떨까?”
Claude 아이디어:
- RSI 매수 신호 → 30점 (가중치 30%)
- MACD 매수 신호 → 40점 (가중치 40%)
- 이동평균선 매수 신호 → 30점 (가중치 30%)
- 총 100점 중 70점 이상이면 진입!
단순히 “몇 개 이상 동의하면 진입"이 아니라, 각 전략마다 가중치를 줘서 점수를 매기는 방식이에요!
중요도가 높은 지표는 가중치를 높게 주고, 총점이 일정 % 이상일 때만 진입하는 거죠.
예를 들어:
- RSI만 신호 → 30점 (진입 안 함)
- RSI + 이동평균선 → 60점 (진입 안 함)
- RSI + MACD → 70점 (진입!)
- 3개 다 신호 → 100점 (강력한 진입!)
단일 지표보다 훨씬 안정적이에요! 💪
아직도 튜닝 중 🔧#
일일 10~20달러는 수익이 나지만, 아직 만족 못 해요:
- 변동성 큰 날은 여전히 불안정
- 타이밍이 애매할 때 손실
- 포지션 크기 조절도 개선 필요
그리고 솔직히… Spot 시절만큼은 못 벌어요. 😅
- Spot 시절: 일일 70~100달러 (직관적 조합)
- 지금: 일일 10~20달러 (체계적 분리)
“이게 뭐야? 역주행?” ㅋㅋㅋ
하지만 포기 안 해요!
직관적 조합이 초심자의 행운이었을 수도 있고, 체계적 시스템이 완성되면 더 안정적일 거라고 믿어요.
계속 시스템을 정교하게 만들어가는 중입니다! 💪
직관 vs 체계… 정답은 뭘까? 🤔
💪 AI 활용의 기술 - 코딩부터 전략까지#
이번 프로젝트에서 AI를 두 가지 방식으로 활용했어요.
1. Claude Code - 코딩 어시스턴트#
Claude Code가 잘하는 것:
- 보일러플레이트 코드 작성
- 기본 구조 설계
- 문서 읽고 요약하기
- Streamlit UI 뚝딱
Claude Code가 못하는 것:
- 최신 API 모름 (Demo Trading)
- 세부 설정 놓침 (timeInForce, reduce_only)
- Edge case 처리 (재연결, 에러 핸들링)
- 미묘한 버그 찾기
2. Claude - 트레이딩 전략 어드바이저 🆕#
이건 예상 못 한 발견이었어요!
차트 보는 법을 몰라서 막막할 때, Claude한테 물어봤거든요.
“진입 신호는 잘 잡는데 청산 타이밍을 못 잡겠어.”
Claude가 제안한 전략들:
- 진입/청산 로직 완전 분리
- 선행지표/후행지표 구분 사용
- 앙상블 투표 방식 (여러 지표의 합의)
“오… AI한테 트레이딩 배우네?” 🤯
검색하면 나오는 뻔한 얘기가 아니라, 제 상황에 맞는 구체적인 조언을 해주더라고요!
제대로 활용하는 법#
1. 명확하게 지시 (코딩)
❌ "바이낸스 API 연결해줘"
✅ "바이낸스 Demo Trading Futures API 연결해줘.
URL은 https://demo-fapi.binance.com이고,
Spot과 Futures 클라이언트를 분리해서 만들어"
2. 구체적인 상황 설명 (전략)
❌ "트레이딩 전략 알려줘"
✅ "진입 신호는 잘 잡는데, 청산 타이밍에서 자꾸 손실이 나.
진입할 때는 RSI랑 이동평균선 크로스를 보고 있어.
청산은 어떻게 판단하면 좋을까?"
3. 틀렸을 때 정확히 지적 (코딩)
❌ "이거 안 되는데?"
✅ "STOP_MARKET 주문에는 timeInForce 파라미터 안 넣어.
바이낸스 API 문서 다시 확인해봐"
4. 칭찬도 하기 ㅋㅋ
"오! 이제 되네! 잘했어!"
"이 아이디어 완전 괜찮은데? 바로 적용해볼게!"
Claude Code로 코드 짜고, Claude로 전략 짜는 이 조합… 정말 강력해요! 💪
🎯 지금 하고 있는 것들#
우선순위 1: 전략 튜닝 (현재 진행 중!)
- ✅ 진입/청산 로직 분리 완료
- 🔄 매매 타이밍 계속 최적화 중
- 🔄 변동성 큰 날 대응 로직 개선
- 🔄 포지션 크기 자동 조절 추가 예정
현재 성과 (Demo Trading):
- 일일 평균 10~20달러 수익
- Spot 시절(70~100달러)보다는 못함 😅
- 하지만 일관성은 개선 중
- 큰 변동성엔 여전히 약함
우선순위 2: 데이터 기반 최적화
- 과거 데이터로 백테스팅
- 어떤 시장 상황에서 잘 작동하는지 분석
- 손실 패턴 찾아서 개선
나중에 할 것들:
- 자동 거래 알고리즘 다양화
- 텔레그램 봇 (거래 알림, 일일 리포트)
- 실전 전환 (Demo에서 안정적으로 수익 나올 때까지!)
실전 투입은 아직 멀었어요. 일일 수익이 안정적으로 나올 때까지 계속 튜닝할 겁니다! 💪
🌟 이번에 배운 것들#
1. 라이브러리는 만능이 아니다#
python-binance 같은 잘 만든 라이브러리도:
- API 변경사항 반영 느림
- 새 시스템(Demo Trading) 지원 안 됨
때로는 직접 만드는 게 더 빠르고 확실해요!
2. 공식 문서가 답이다#
바이낸스 API 공식 문서만 제대로 봤어도:
- Demo Trading 시스템 바로 알 수 있었고
- REST API 엔드포인트 찾을 수 있었고
- Spot/Futures 차이점 파악했을 거예요
인터넷 검색보다 공식 문서!
3. AI는 개발자이자 트레이더 멘토다#
코딩 어시스턴트로서의 Claude Code:
- 기본 코드는 빠르게 짜주고
- 반복 작업은 순식간에 처리하고
- 리팩토링도 알아서 해줘요
전략 어드바이저로서의 Claude:
- 진입/청산 분리 아이디어 제공
- 선행지표/후행지표 개념 설명
- 앙상블 투표 전략 제안
하지만:
- 최신 정보는 제가 알려줘야 하고
- 틀린 부분은 제가 잡아줘야 하고
- 최종 결정은 제가 해야 해요
AI + 사람 = 최강 조합! 💪
특히 이번에 깨달은 건… AI를 단순히 코딩 도구로만 쓰지 말고 전략 파트너로 활용할 수 있다는 거예요! 🤯
4. 삽질은 배움이다#
3시간 동안 python-binance 갈기면서:
- 바이낸스 시스템 변경 알게 됐고
- REST API 직접 구현 배웠고
- Spot/Futures 통합 방법 익혔고
- Claude 갈궈내는 법 터득했어요 ㅋㅋ
삽질 = 성장 🚀
5. 기술과 트레이딩은 완전히 다른 세계#
4년 전:
- 봇 만들기 성공 ✅
- 차트 보는 법 몰라서 수익 못 냄 ❌
지금:
- API 연동은 Claude Code 덕분에 더 쉬워짐
- 차트 분석과 전략은… 여전히 어렵지만 😅
- 진입/청산 로직 분리하니까 조금씩 나아지는 중!
Demo Trading에서 이틀 연속 가상 자금 날린 뒤, 로직을 완전히 뜯어고쳤어요.
지금은 일일 10~20달러 정도 수익 보고 있지만… 아직 안정적이진 않아요.
“작동하는 봇 ≠ 돈 버는 봇”
4년이 지났지만, 이제야 조금씩 감을 잡아가는 중입니다.
개발자가 트레이더가 되기까지… 갈 길이 멉니다! 📚
6. 직관적 조합 vs 체계적 분리#
Spot 시절 (직관적 조합):
- 여러 지표 사용 (RSI, MACD, 이동평균선)
- 역할 구분 없이 섞어서 판단
- 일일 70~100달러 수익 ✅
지금 (체계적 분리):
- 같은 지표들을 쓰지만…
- 진입/청산 분리, 선행/후행 구분, 앙상블 가중치…
- 일일 10~20달러 수익 😅
더 체계적으로 만들었는데 오히려 수익이 줄었어요!
이게 뭐지?
- 직관이 맞았던 걸까?
- 체계화가 덜 된 걸까?
- 아니면 과최적화(overfitting)?
아직 모르겠어요. 계속 실험 중입니다.
“체계적이다 = 좋다"가 아니더라고요. 💭
💬 함께 성장해요#
여러분도 비슷한 경험 있으세요?
- 바이낸스 Demo Trading으로 삽질?
- python-binance 안 돼서 고생?
- 라이브러리 버리고 직접 구현?
- Claude Code 갈궈가며 개발?
- 봇은 만들었는데 수익을 못 내는 중? 😅
- 진입/청산 로직은 어떻게 구성하셨나요?
- AI한테 트레이딩 전략 조언 받아보신 분? 🤖
- 직관적으로 조합 vs 체계적으로 분리, 어떤 게 더 잘 됐나요? 💭
댓글로 경험 공유해주세요! 😊
특히 “체계적으로 만들수록 오히려 안 됐다” 는 경험 있으신 분들! 저만 그런 건지, 아니면 과최적화(overfitting) 함정인지 궁금해요 ㅋㅋ
REST API 직접 구현 방법 더 자세히 알고 싶으신 분들도 댓글 남겨주세요!
P.S. python-binance 안 될 때 포기하지 않고 직접 만든 건… 제 선택이었어요.
Claude Code를 갈궈서 Spot/Futures 통합 클라이언트를 만든 것도 제 끈기였고요.
그런데 아이러니하게도…
직관적으로 조합했을 때(Spot)가 더 잘 됐고, 체계적으로 분리할수록(Futures) 수익이 줄었어요. 😅
이게 초심자의 행운인지, 직관의 힘인지, 아니면 과최적화인지는 아직 모르겠어요.
하지만 Demo Trading에서 실패하길 잘했어요. 실전이었으면… 🥲
안 되면 직접 만들면 됩니다! 💪
그리고 만든 다음엔… 끈질기게 튜닝하면 됩니다! 🚀
(언젠가 Spot 시절을 넘어서는 날이 오겠죠…? 🙏)
바이낸스 Demo Trading 정보:
