
이 전략은 쌍평선 돌파 이론에 기반한 자동화 거래 시스템으로, 위험 관리 기능이 결합되어 있다. 전략의 핵심은 21주기 및 50주기의 지수 이동 평균 ((EMA) 을 신호 지표로 사용하여, 평선 교차를 통해 시장 추세 변화를 판단하고 자동으로 거래를 수행한다. 시스템은 스톱 로스 (Stop Loss) 및 스톱 테이크 프로피트 (Take Profit) 기능을 통합하여 각 거래의 위험과 수익 목표를 효과적으로 제어할 수 있다.
전략의 핵심 논리는 기술 분석의 고전적인 평행선 교차 이론에 기초한다. 짧은 주기 (~21일) EMA가 상향으로 긴 주기 (~50일) EMA를 통과할 때, 시스템은 포이스 신호로 인식하고 포지션을 더 많이 열다. 짧은 주기 (~21일) EMA가 상향으로 긴 주기 (~50일) EMA를 통과할 때, 시스템은 포이스 신호로 인식하고 포지션을 공백으로 열다. 각 거래 신호는 자동으로 스톱로스 및 스톱포트 지점을 설정하며, 시스템은 기본으로 스톱로스를 최소 파동 40개로 설정하고, 스톱포트를 최소 파동 80개로 설정한다. 이 디자인은 거래의 위험/수익 비율이 1:2로, 전문 거래 관리 원칙에 부합하도록 보장한다.
이것은 합리적이고 논리적으로 명확하게 설계된 자동화 거래 전략이다. 일률적인 교차 신호와 엄격한 위험 관리를 결합하여 거래 안전을 보장하면서 시장 추세 기회를 잡기 위해 신뢰할 수있는 기술 프레임 워크를 제공합니다.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy with SL & TP", overlay=true, default_qty_type=strategy.percent_of_equity)
// Input settings for SL and TP (ticks)
slTicks = input.int(40, title="Stop Loss (ticks)", minval=1)
tpTicks = input.int(80, title="Take Profit (ticks)", minval=1)
// Define EMA periods
ema21 = ta.ema(close, 21)
ema50 = ta.ema(close, 50)
// Detect crossovers
bullishCross = ta.crossover(ema21, ema50)
bearishCross = ta.crossunder(ema21, ema50)
// Plot the EMAs
plot(ema21, color=color.green, linewidth=2, title="EMA 21")
plot(ema50, color=color.red, linewidth=2, title="EMA 50")
// Calculate tick size in points
var float tickSize = syminfo.mintick
// Calculate stop loss and take profit prices for long and short positions
longSL = close - slTicks * tickSize
longTP = close + tpTicks * tickSize
shortSL = close + slTicks * tickSize
shortTP = close - tpTicks * tickSize
// Execute trades on crossover signals
if (bullishCross)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP)
if (bearishCross)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP)
// Plot arrows on crossovers
plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Optional: Background coloring
bgcolor(bullishCross ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(bearishCross ? color.new(color.red, 90) : na, title="Bearish Background")