
Die Strategie ist ein Trend-Tracking-Trading-System, basierend auf mehreren Index-Moving Averages (EMA) und relativ starken Indikatoren (RSI). Die Strategie kombiniert EMA-Kreuzsignale (EMA) auf Tageslinie-Ebene (20, 30, 200), RSI-Dynamik-Bestätigung und eine dynamische Stop-Loss-Mechanik, um langfristige Trendchancen in den Märkten zu erfassen.
Die Kernlogik der Strategie umfasst die folgenden Schlüsselkomponenten:
Die Strategie ist durch die synchronisierte Zusammenarbeit von mehreren technischen Indikatoren zu einem vollständigen Trend-Tracking-Trading-System geworden. Die Hauptmerkmale der Strategie sind die Kombination von mittelfristigen Trendurteilen und dynamischen Risikokontrollen, die sich für den Betrieb in marktbestimmten Trendumgebungen eignen. Durch kontinuierliche Optimierung und Verbesserung wird die Strategie voraussichtlich im tatsächlichen Handel besser abschneiden.
/*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)