
이 전략은 다중 지수 이동 평균 (EMA) 과 상대적으로 약한 지표 (RSI) 를 기반으로 한 트렌드 추적 거래 시스템입니다. 전략은 일계 레벨의 EMA (20, 30, 200) 교차 신호, RSI 동력 확인 및 동적 스톱 메커니즘을 결합하여 시장의 장기적인 트렌드 기회를 잡기 위해 고안되었습니다.
전략의 핵심 논리에는 다음과 같은 핵심 구성 요소가 포함됩니다.
이 전략은 다중 기술 지표의 협동 협동으로 완전한 트렌드 추적 거래 시스템을 구축한다. 전략의 주요 특징은 중·장기 트렌드 판단과 동적 위험 제어를 결합하여 트렌드가 명확한 시장 환경에서 작동하는 것이 좋다. 지속적인 최적화 및 개선으로 전략은 실제 거래에서 더 나은 성능을 기대한다.
/*backtest
start: 2024-02-10 00:00:00
end: 2025-02-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Talbuaia Signal", overlay=true)
// Request EMAs on the daily timeframe
ema20_daily = request.security(syminfo.tickerid, "D", ta.ema(close, 20), lookahead=barmerge.lookahead_on)
ema30_daily = request.security(syminfo.tickerid, "D", ta.ema(close, 30), lookahead=barmerge.lookahead_on)
ema200_daily = request.security(syminfo.tickerid, "D", ta.ema(close, 200), lookahead=barmerge.lookahead_on)
// RSI Calculation
rsi = ta.rsi(close, 14)
// Plot daily EMAs
plot(ema20_daily, color=color.blue, title="Daily EMA 20")
plot(ema30_daily, color=color.orange, title="Daily EMA 30")
plot(ema200_daily, color=color.red, title="Daily EMA 200")
// Plot RSI
hline(50, "RSI Midline", color=color.gray)
plot(rsi, color=color.purple, title="RSI")
// Entry condition: 20 EMA crosses above 30 EMA, price is above 200 EMA, and RSI > 50
bullishEntry = ta.crossover(ema20_daily, ema30_daily) and close > ema200_daily and rsi > 50
// Variables to track entry price, take profit, and trailing stop
var float entryPriceLong = na
var float highestPriceSinceEntry = na
var float takeProfitLevel = na
var float trailingStopLevel = na
// Entry Logic
if bullishEntry
strategy.entry("Long", strategy.long)
entryPriceLong := close
highestPriceSinceEntry := close // Initialize the highest price since entry
takeProfitLevel := entryPriceLong * 1.50 // Set take profit at 50% above entry price
trailingStopLevel := na // Reset trailing stop
label.new(bar_index, close, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white)
// Update highest price and trailing stop dynamically
if strategy.position_size > 0
highestPriceSinceEntry := math.max(highestPriceSinceEntry, close) // Track the highest price reached
trailingStopLevel := highestPriceSinceEntry * (1 - 0.25) // Set trailing stop at 25% below the highest price
// Exit Logic: Take profit or trailing stop
if strategy.position_size > 0 and (close >= takeProfitLevel or close <= trailingStopLevel)
strategy.close("Long")
label.new(bar_index, close, "EXIT LONG", style=label.style_label_down, color=color.red, textcolor=color.white)
// Plot trailing stop and take profit levels on the chart
plot(trailingStopLevel, "Trailing Stop", color=color.red, linewidth=2, style=plot.style_line)
plot(takeProfitLevel, "Take Profit", color=color.green, linewidth=2, style=plot.style_line)