
Die Strategie ist ein Trend-Tracking-Trading-System, das Fibonacci-Retracements, Multiple-Index-Moving-Averages und Transaktionsvolumen kombiniert. Die Strategie bestätigt Trends durch die Analyse der Position der Preise in verschiedenen Fibonacci-Retracement-Niveaus (,382, ,618, , ,08) in Verbindung mit mehrperiodischen EMAs (<20/50/100/200) und identifiziert potenzielle Handelsmöglichkeiten durch Transaktionsvolumen-Trench-Filterung.
Die Kernlogik der Strategie basiert auf einer vielschichtigen Methode der technischen Analyse:
Es handelt sich um eine gut konzipierte, mehrschichtige Trendverfolgungsstrategie, die durch die Kombination klassischer technischer Analysewerkzeuge einen dreigliedrigen Analyse-Rahmen erstellt. Der Vorteil der Strategie liegt in der Genauigkeit der Signalbestätigung und der Integrität des Risikomanagements, wobei jedoch auch auf die Performance in einem wackligen Markt geachtet werden muss. Durch die empfohlene Optimierungsrichtung, insbesondere durch Verbesserungen im Bereich des dynamischen Risikomanagements und der Quantifizierung der Trendstärke, werden die Stabilität und die Profitabilität der Strategie voraussichtlich weiter verbessert.
/*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")