
이 전략은 다중 지수 이동 평균 (EMA) 을 기반으로 한 트렌드 추적 거래 시스템이다. 그것은 EMA25, EMA50, EMA100의 세 개의 평행선이 형성된 황금 교차선을 사용하여 강력한 상승 추세를 확인하고 가격이 EMA25을 돌파 할 때 대량으로 진입한다. 전략은 동적 스톱 손실과 대량 스톱을 사용하여 위험을 관리하고 수익을 얻는다.
전략의 핵심 논리는 다음과 같은 핵심 부분으로 구성됩니다.
이 전략은 다중 평평선 조합과 분기 운영 방식을 통해 비교적 완전한 트렌드 추적 거래 시스템을 구축한다. 전략의 장점은 트렌드 추적과 위험 관리의 여러 핵심 요소를 결합한다는 데 있다. 그러나 실제 시장 상황에 따라 변수 최적화 및 규칙 개선을 여전히 필요로 한다. 제안된 최적화 방향을 통해 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 수 있을 것으로 보인다.
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Golden Cross with Customizable TP/SL", overlay=true)
// Parameters for EMA
ema_short_length = 25
ema_mid_length = 50
ema_long_length = 100
// Parameters for stop-loss and take-profit
lookback_bars = input.int(20, title="Lookback bars for lowest low")
pip_buffer = input.float(0.0003, title="Stop-loss buffer (pips)") // Fixed default pip value (e.g., 3 pips for 5-digit pairs)
tp_multiplier1 = input.float(1.0, title="Take-profit multiplier 1")
tp_multiplier2 = input.float(1.5, title="Take-profit multiplier 2")
// Calculate EMAs
ema25 = ta.ema(close, ema_short_length)
ema50 = ta.ema(close, ema_mid_length)
ema100 = ta.ema(close, ema_long_length)
// Golden Cross condition (EMA25 > EMA50 > EMA100)
golden_cross = ema25 > ema50 and ema50 > ema100
// Entry condition: Candle crosses above EMA25 after a golden cross
cross_above_ema25 = ta.crossover(close, ema25)
entry_condition = golden_cross and cross_above_ema25
// Stop-loss and take-profit calculation
lowest_low = ta.lowest(low, lookback_bars)
var float entry_price = na
var float stop_loss = na
var float take_profit1 = na
var float take_profit2 = na
if (entry_condition)
entry_price := close
stop_loss := lowest_low - pip_buffer
take_profit1 := entry_price + (entry_price - stop_loss) * tp_multiplier1
take_profit2 := entry_price + (entry_price - stop_loss) * tp_multiplier2
strategy.entry("Buy1", strategy.long, qty=0.5) // First 50%
strategy.entry("Buy2", strategy.long, qty=0.5) // Second 50%
// Separate exit conditions for each entry
cross_below_ema100 = ta.crossunder(close, ema100)
exit_condition1 = close >= take_profit1
exit_condition2 = close >= take_profit2
exit_condition_sl = close <= stop_loss
if (exit_condition1 or cross_below_ema100)
strategy.close("Buy1")
if (exit_condition2 or cross_below_ema100 or exit_condition_sl)
strategy.close("Buy2")
// Plot EMAs
plot(ema25, color=color.blue, title="EMA 25")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.red, title="EMA 100")