Diese Strategie ist ein Trend-Folgende Handelssystem, das Fibonacci-Retracements, mehrere exponentielle gleitende Durchschnitte und Volumenanalyse kombiniert. Es identifiziert potenzielle Handelsmöglichkeiten, indem es Preispositionen auf verschiedenen Fibonacci-Retracement-Niveaus (0, 0, 382, 0, 618, 1) analysiert, Trends mit mehrjährigen EMAs (20/50/100/200) bestätigt und durch Volumenschwellen filtert. Das System umfasst einen umfassenden Risikomanagementmechanismus mit festen Prozentsatz-Stop-Loss- und Take-Profit-Einstellungen.
Die Kernlogik basiert auf mehrstufiger technischer Analyse:
Dies ist eine gut konzipierte mehrstufige Trendfolgestrategie, die einen umfassenden Analyserahmen mit klassischen technischen Analysewerkzeugen aufbaut. Seine Stärken liegen in der strengen Signalbestätigung und dem vollständigen Risikomanagement, während die Leistung in verschiedenen Märkten berücksichtigt werden muss. Durch die vorgeschlagenen Optimierungen, insbesondere im dynamischen Risikomanagement und der Quantifizierung der Trendstärke, können die Stabilität und Rentabilität der Strategie weiter verbessert werden.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("ALD Fib Ema SAKALAM", overlay=true) // Inputs lookback = input.int(30, title="Lookback Period for Fibonacci", minval=10) volumeThreshold = input.float(500000, title="24h Volume Threshold", step=50000) stopLossPct = input.float(3.0, title="Stop Loss %", minval=0.5) takeProfitPct = input.float(6.0, title="Take Profit %", minval=1.0) maLength = input.int(50, title="Trend Filter MA Length", minval=1) // Moving Average (Trend Filter) ma = ta.sma(close, maLength) // High and Low for Fibonacci Levels var float swingHigh = na var float swingLow = na if bar_index > lookback swingHigh := ta.highest(high, lookback) swingLow := ta.lowest(low, lookback) // Fibonacci Levels Calculation fib0 = swingLow fib1 = swingHigh fib382 = swingHigh - 0.382 * (swingHigh - swingLow) fib618 = swingHigh - 0.618 * (swingHigh - swingLow) // 24-hour Volume Calculation volume24h = ta.sma(volume, 24) // Plot Fibonacci Levels plot(fib0, title="Fib 0", color=color.new(color.red, 80)) plot(fib382, title="Fib 0.382", color=color.new(color.green, 50)) plot(fib618, title="Fib 0.618", color=color.new(color.blue, 50)) plot(fib1, title="Fib 1", color=color.new(color.red, 80)) plot(ma, title="Trend Filter MA", color=color.orange) // Entry Condition: Buy Signal longCondition = (close <= fib382) and (volume24h > volumeThreshold) and (close > ma) if (longCondition) strategy.entry("Buy", strategy.long) label.new(bar_index, low, "BUY", style=label.style_label_up, color=color.green, textcolor=color.white) // Exit Conditions takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPct / 100) stopLossPrice = strategy.position_avg_price * (1 - stopLossPct / 100) // Place Exit Orders strategy.exit("Take Profit/Stop Loss", from_entry="Buy", limit=takeProfitPrice, stop=stopLossPrice) // Add Labels for Exits if (strategy.position_size > 0) if (high >= takeProfitPrice) label.new(bar_index, high, "EXIT (Take Profit)", style=label.style_label_down, color=color.blue, textcolor=color.white) if (low <= stopLossPrice) label.new(bar_index, low, "EXIT (Stop Loss)", style=label.style_label_down, color=color.red, textcolor=color.white) // Short Selling Conditions shortCondition = (close >= fib618) and (volume24h > volumeThreshold) and (close < ma) if (shortCondition) strategy.entry("Sell", strategy.short) label.new(bar_index, high, "SELL", style=label.style_label_down, color=color.red, textcolor=color.white) // Short Exit Conditions if (strategy.position_size < 0) strategy.exit("Short Take Profit/Stop Loss", from_entry="Sell", limit=strategy.position_avg_price * (1 - takeProfitPct / 100), stop=strategy.position_avg_price * (1 + stopLossPct / 100)) // Add EMA 20/50/100/200 shortest = ta.ema(close, 20) short = ta.ema(close, 50) longer = ta.ema(close, 100) longest = ta.ema(close, 200) plot(shortest, color=color.orange, title="EMA 20") plot(short, color=color.red, title="EMA 50") plot(longer, color=color.black, title="EMA 100") plot(longest, color=color.green, title="EMA 200")