Esta estratégia é um sistema de negociação de tendência que combina retracements de Fibonacci, múltiplas médias móveis exponenciais e análise de volume. Identifica oportunidades de negociação potenciais analisando posições de preço em diferentes níveis de retracementos de Fibonacci (0, 0, 382, 0, 618, 1), confirmando tendências com EMAs de vários períodos (20/50/100/200) e filtrando através de limiares de volume. O sistema inclui um mecanismo abrangente de gerenciamento de risco com configurações de stop-loss e take-profit em porcentagem fixa.
A lógica central baseia-se na análise técnica de vários níveis:
Esta é uma estratégia de seguimento de tendências de vários níveis bem projetada que constrói uma estrutura de análise abrangente usando ferramentas clássicas de análise técnica. Seus pontos fortes estão na confirmação rigorosa do sinal e na gestão completa do risco, enquanto a atenção precisa ser dada ao desempenho em mercados variados. Através das otimizações sugeridas, particularmente na gestão dinâmica do risco e na quantificação da força da tendência, a estabilidade e a lucratividade da estratégia podem ser ainda melhoradas.
/*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")