전략 실험실

JavaScript로 나만의 매매 전략을 직접 작성하고 백테스팅하세요. 피보나치 되돌림, 수학적 매매 공식 등 무한한 가능성을 실험합니다.

전략 코드 에디터 JavaScript
📐
피보나치 되돌림
최고점 대비 38.2%~61.8% 되돌림에서 매수
📊
평균 회귀
이동평균 ± N 표준편차 이탈 시 역방향 진입
🚀
채널 돌파
N일 최고가 돌파 시 매수, 최저가 이탈 시 매도
모멘텀 팩터
N일 수익률 기반 모멘텀 점수로 매수/매도
🔲
그리드 트레이딩
일정 가격 간격마다 매수/매도 주문 배치
✏️
빈 템플릿
처음부터 직접 작성
🤖 AI 전략 생성 Gemini
자연어로 전략을 설명하면 코드로 변환됩니다
strategy.js
백테스팅 설정 & 실행
콘솔
전략 코드를 작성하고 '백테스팅 실행'을 클릭하세요.
--
전략 수익률
--
홀딩 수익률
--
총 거래
--
승률
--
최대 낙폭
--
샤프 비율
--
총 수수료
--
손익비
가격 & 매매 차트 마우스 휠 또는 핀치로 확대/축소 · 더블클릭으로 초기화
자산 변화 추이
거래 내역
#유형날짜가격사유

전략 코드 작성 가이드

strategy(data, params) 함수를 정의하세요. data는 OHLCV 배열이고, params는 설정값입니다. 반환값은 { buy: [인덱스], sell: [인덱스] } 형태의 시그널 객체입니다.

객체/함수설명예시
data[i]i번째 캔들. { date, open, high, low, close, volume }data[i].close
params.capital초기 자본 (USD)10000
params.feeRate수수료율 (소수)0.001
Ind.sma(close, period)단순이동평균 계산Ind.sma(close, 20)
Ind.ema(close, period)지수이동평균Ind.ema(close, 12)
Ind.rsi(close, period)RSI (상대강도지수)Ind.rsi(close, 14)
Ind.bollingerBands(close, p, std)볼린저밴드 {upper, middle, lower}Ind.bollingerBands(close, 20, 2)
Ind.macd(close, f, s, sig)MACD {macd, signal, histogram}Ind.macd(close, 12, 26, 9)
Ind.atr(h, l, c, period)ATR (평균진정범위)Ind.atr(high, low, close, 14)
Ind.stochastic(h, l, c, k, d)스토캐스틱 {k, d}Ind.stochastic(high, low, close, 14, 3)
log(msg)콘솔에 메시지 출력log('매수 시그널: ' + i)

🤖 AI 코드 생성 팁: 위의 함수/객체를 몰라도 괜찮습니다. "RSI가 30 이하일 때 사고, 70 이상일 때 팔아줘" 같이 자연어로 입력하면 AI가 코드를 자동으로 생성합니다. 분봉 선택 시에는 데이터 양이 많아지므로 기간을 짧게 (1~7일) 설정하는 것이 좋습니다.

초보자 가이드

3단계로 시작하기

1
템플릿 선택 또는 AI에게 요청

템플릿 카드를 클릭하거나, 🤖 AI 전략 생성란에 원하는 전략을 자연어로 설명하세요. 예: "RSI 30 이하면 사고, 70 이상이면 팔아줘"

2
설정 확인

오른쪽에서 날짜, 캔들 간격(1일봉~1분봉), 초기 자본을 설정하세요. 분봉은 기간을 짧게(1~7일) 잡는 것이 좋습니다.

3
실행 & 확대!

'백테스팅 실행' 버튼을 누르면 결과가 나옵니다. 차트에서 마우스 휠로 확대/축소, 더블클릭으로 초기화할 수 있습니다.

코드 핵심 개념

전략 코드는 크게 3가지로 구성됩니다:

  • 데이터 읽기data[i].close로 i번째 날의 종가를 읽습니다.
  • 매수 조건 — 조건이 맞으면 buy.push(i)로 매수합니다.
  • 매도 조건 — 조건이 맞으면 sell.push(i)로 매도합니다.

자주 쓰는 코드 패턴

가격이 떨어지면 사고, 오르면 판다:

if (close[i] < close[i-1] * 0.95) { buy.push(i); // 전일 대비 5% 하락 시 매수 } if (close[i] > close[i-1] * 1.05) { sell.push(i); // 전일 대비 5% 상승 시 매도 }

이동평균으로 추세 판단:

const sma20 = Ind.sma(close, 20); const sma50 = Ind.sma(close, 50); // 단기 이평이 장기 이평 위로 올라가면 매수 if (sma20[i] > sma50[i] && sma20[i-1] <= sma50[i-1]) { buy.push(i); }

RSI로 과매도/과매수 판단:

const rsi = Ind.rsi(close, 14); if (rsi[i] < 30) buy.push(i); // 과매도→매수 if (rsi[i] > 70) sell.push(i); // 과매수→매도

숫자 변경 가이드

  • lookback (기간) — 작을수록 민감, 클수록 안정적. 일반적으로 20~100
  • 되돌림 비율 — 0.382(38.2%), 0.5(50%), 0.618(61.8%)이 피보나치 핵심 수치
  • 손절/익절 % — 0.95는 -5% 손절, 1.10은 +10% 익절
  • 이동평균 기간 — 5~20: 단기, 20~60: 중기, 60~200: 장기
  • RSI 기간 — 보통 14일, 과매도 30 이하, 과매수 70 이상

주의사항

  • 코드에 오류가 있으면 콘솔에 빨간 메시지가 나옵니다.
  • log('메시지')로 중간 결과를 콘솔에 출력할 수 있습니다.
  • 매수와 매도는 번갈아 이루어져야 합니다 (매수→매도→매수→매도).
  • 결과가 이상하면 '초기화' 버튼으로 템플릿을 다시 불러오세요.
전략 실험실의 커스텀 전략은 과거 데이터 기반이며 미래 수익을 보장하지 않습니다. 코드 실행은 브라우저 내 샌드박스에서 안전하게 이루어집니다.