반응형
마하세븐 매매 전략을 코드로 구현해보기
자동매매 전략을 백테스트하고 수익을 검증하는 것도 중요하지만,
그 시작은 항상 **“내 전략을 코드로 구현할 수 있는가?”**에서 출발한다.
이번 글에서는 앞서 소개했던 마하세븐 매매법을 파이썬 코드로 하나하나 구현하며,
전략을 실전 자동매매 시스템으로 옮기는 과정을 따라가본다.
반응형
1. 전략 구성요소 다시 보기
마하세븐 매매법의 핵심 로직은 다음과 같다.

이 전략을 자동화하려면 다음 4가지 함수를 구현해야 한다.
- RSI 계산기
- 골든크로스 판별 함수
- 매수/매도 조건 판단 함수
- 주문 실행 함수
2. RSI 계산기
def get_rsi(df, period=14):
delta = df['close'].diff()
gain = delta.where(delta > 0, 0)
loss = -delta.where(delta < 0, 0)
avg_gain = gain.rolling(window=period).mean()
avg_loss = loss.rolling(window=period).mean()
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))
return rsi
- delta: 전일 대비 종가 변화량
- gain/loss: 상승/하락만 분리
- rolling mean: 지정된 기간(14일) 동안의 평균 상승폭, 하락폭 계산
3. 골든크로스 판별
def is_golden_cross(df, short=5, long=20):
short_ma = df['close'].rolling(window=short).mean()
long_ma = df['close'].rolling(window=long).mean()
# 이전에는 교차되지 않았고, 이번에 골든크로스 발생
if short_ma.iloc[-2] < long_ma.iloc[-2] and short_ma.iloc[-1] > long_ma.iloc[-1]:
return True
return False
- 단기 이평선이 장기 이평선을 위로 뚫고 올라가는지를 판단
- iloc[-2]와 iloc[-1]을 비교하여 변화 지점 탐지
4. 매수 조건 판단 함수
def check_entry_condition(ticker="KRW-BTC"):
df = pyupbit.get_ohlcv(ticker, interval="minute60", count=100)
rsi = get_rsi(df)
if rsi.iloc[-1] < 60:
return False
if not is_golden_cross(df):
return False
return True
- 조건 1: RSI ≥ 60
- 조건 2: 골든크로스 발생
- 둘 다 만족해야 매수 신호 발생
5. 스탑로스 및 분할 매도 로직 설계
이 부분은 조금 복잡하므로 가상의 변수로 흐름을 구성한다.
buy_price = 1000000 # 매수 단가
current_price = pyupbit.get_current_price("KRW-BTC")
rate_of_return = (current_price - buy_price) / buy_price * 100
# 분할 매도 로직
if rate_of_return >= 1.0:
upbit.sell_market_order("KRW-BTC", quantity * 0.5)
elif rate_of_return >= 1.5:
upbit.sell_market_order("KRW-BTC", quantity * 0.25)
elif rate_of_return >= 2.0:
upbit.sell_market_order("KRW-BTC", quantity * 0.25)
# 스탑로스
if rate_of_return <= -8.0:
upbit.sell_market_order("KRW-BTC", quantity)
이 구조는 백테스트를 넘어 실전에서도 안정적인 매도 흐름을 유지할 수 있도록 설계됐다.
6. 테스트 환경에서 먼저 검증하자
- 가상 환경에서 print로 로그 출력하며 확인
- 실매매 전 잔고 확인 → 최소 금액만 실험
- 초기에는 '실시간 매매' 대신 하루 1회 실행으로 시작
7. 실전 팁
- 매수 조건이 자주 발생하지 않도록 조건 필터링 강화
- logger 사용하여 모든 주문 기록
- 카카오톡 메시지 전송 기능 추가 → 거래 확인 쉬움
- time.sleep() 대신 Crontab을 추천 (AWS에서 5분 단위 실행)
📌 마무리 요약
반응형
'📈 자동매매 & 퀀트 투자' 카테고리의 다른 글
바이낸스 선물거래 자동매매, 위험은? 수익은? (0) | 2025.04.01 |
---|---|
다중 종목에 자동 적용하는 자동매매 시스템 설계 (0) | 2025.04.01 |
RSI + 골든크로스 기반 전략, 수익이 나는 이유 (0) | 2025.04.01 |
업비트 자동매매 프로그램 (0) | 2025.03.31 |
마하세븐 매매법이란? (0) | 2025.03.31 |