🧠 Freqtrade 가이드: 나만의 첫 전략(Strategy) 파일 적용하기
Freqtrade 설치가 '몸체'를 만드는 것이었다면, 전략(Strategy)을 적용하는 것은 '두뇌'를 심는 과정입니다. 기본으로 제공되는 SampleStrategy는 예시일 뿐 수익을 내기 어렵습니다.
오늘은 가장 대중적인 보조지표인 RSI(상대강도지수)를 이용해, "싸게 사서 비싸게 파는" 간단한 전략을 만들고 적용해보겠습니다.
1. 전략 파일 만들기 (Ctrl+C, Ctrl+V 하세요)
Freqtrade 폴더 내의 user_data/strategies/ 폴더로 이동합니다. 여기에 RsiStrat.py라는 파일을 새로 만들고 아래 코드를 복사해서 붙여넣으세요.
(이 코드는 RSI가 30 이하로 떨어지면 '과매도'로 보고 매수, 70 이상으로 오르면 '과매수'로 보고 매도하는 기본 로직입니다.)
# user_data/strategies/RsiStrat.py
import talib.abstract as ta
from freqtrade.strategy import IStrategy
from pandas import DataFrame
class RsiStrat(IStrategy):
# 1. 기본 설정 (최소 ROI, 손절, 타임프레임)
minimal_roi = {
"0": 0.1 # 10% 수익나면 익절
}
stoploss = -0.10 # 10% 손실나면 손절
timeframe = '1h' # 1시간 봉 기준
# 2. 지표 계산 (Indicators)
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# RSI 지표 계산 (기간 14)
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
return dataframe
# 3. 매수 조건 (Entry Signal)
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
(dataframe['rsi'] < 30) & # RSI가 30보다 작으면
(dataframe['volume'] > 0) # 거래량이 0보다 클 때
),
'enter_long'] = 1 # 매수 신호 발생
return dataframe
# 4. 매도 조건 (Exit Signal)
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[
(
(dataframe['rsi'] > 70) & # RSI가 70보다 크면
(dataframe['volume'] > 0)
),
'exit_long'] = 1 # 매도 신호 발생
return dataframe
2. 전략이 안전한지 검증하기 (Backtesting)
전략을 만들었다면 바로 돈을 넣지 말고, 과거 데이터로 테스트를 해봐야 합니다. 이를 백테스팅(Backtesting)이라고 합니다.
Docker 사용자 명령어:
터미널에서 아래 명령어를 입력하세요. (최근 30일 데이터 다운로드 후 테스트)
# 1. 과거 데이터 다운로드 (바이낸스, BTC/USDT, 30일치)
docker compose run --rm freqtrade download-data --exchange binance --pairs BTC/USDT --days 30 -t 1h
# 2. 백테스팅 실행 (전략 파일 이름 지정)
docker compose run --rm freqtrade backtesting --config user_data/config.json --strategy RsiStrat
실행이 끝나면 터미널에 표가 나옵니다.
- Total profit %: 총 수익률
- Win / Draw / Loss: 승/무/패 횟수
이 결과가 파란색(수익)이어야 실전 투입이 가능합니다.
3. 실전 봇에 적용하기
백테스팅 결과가 마음에 든다면, 이제 봇이 이 전략을 사용하도록 설정합니다.
방법 A: docker-compose.yml 수정 (추천)
docker-compose.yml 파일을 열어 command: 부분을 찾습니다. --strategy 뒤에 파일명을 적어주세요.
# 수정 전
command: >
trade
--logfile /freqtrade/user_data/logs/freqtrade.log
--db-url sqlite:////freqtrade/user_data/freqtrade.sqlite
--config /freqtrade/user_data/config.json
--strategy SampleStrategy <-- 이 부분을 수정
# 수정 후
command: >
...
--strategy RsiStrat <-- 내 전략 이름으로 변경
수정 후 봇을 재시작합니다.
docker compose down
docker compose up -d
방법 B: config.json 수정
config.json 파일 안에 전략 이름을 고정할 수도 있습니다.
"strategy": "RsiStrat",
🚀 마치며: 파이썬 코딩이 어려우신가요?
위의 코드를 이해하고 수정하려면 파이썬(Python)과 판다스(Pandas) 지식이 필요합니다.
- "나는 코딩은 모르겠고, 검증된 수익 나는 전략만 쓰고 싶다!"
- "RSI 말고 볼린저밴드, MACD, 머신러닝 전략은 없나요?"
이런 분들을 위해 저희는 [Freqtrade 전략 마켓플레이스]를 준비하고 있습니다.
전 세계 고수들이 만든 검증된 전략 파일을 클릭 한 번으로 내 봇에 적용할 수 있는 서비스를 기대해 주세요.
'Freqtrade' 카테고리의 다른 글
| Freqtrade 병아리반 (0) | 2025.12.24 |
|---|---|
| Docker로 빠르게 시작해보는 Freqtrade (0) | 2025.12.19 |
| Freqtrade 한글화 (0) | 2025.12.18 |
| 📈 Freqtrade 설치 가이드: 초보자부터 전문가까지 (0) | 2025.12.18 |
| ⚙️ Freqtrade config.json 필수 최적화 가이드 (0) | 2025.12.18 |