Esta estrategia combina señales del precio y el volumen de negociación, junto con los niveles de retroceso de Fibonacci, para generar señales de compra y venta dentro de los marcos de tiempo de 15 minutos y 45 minutos. La estrategia emplea múltiples promedios móviles (MA) como indicadores de tendencia e impulso, incluidos los promedios móviles simples (SMA) y los promedios móviles exponenciales (EMA). Además, los niveles de retroceso de Fibonacci se utilizan como puntos de entrada potenciales.
Esta estrategia genera señales de compra y venta dentro de múltiples marcos de tiempo mediante la combinación de precios, volumen de operaciones y niveles de retroceso de Fibonacci. La ventaja de la estrategia radica en su consideración integral de múltiples elementos de mercado y el uso de múltiples MAs y EMAs como indicadores auxiliares. Sin embargo, la estrategia puede generar señales comerciales excesivas en mercados agitados y se basa en indicadores calculados a partir de datos históricos. Por lo tanto, se necesita una mayor optimización para mejorar su adaptabilidad y confiabilidad.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title="Buy/Sell with Volume and Candlestick Signals", overlay=true) // Fibonacci Retracement Levels var float[] fibonacciLevels = array.new_float(5) array.set(fibonacciLevels, 2, 0.47) array.set(fibonacciLevels, 3, 0.658) array.set(fibonacciLevels, 4, 0.886) // Calculate Fibonacci Retracement Levels fibonacciRetrace(highLevel, lowLevel) => priceRange = highLevel - lowLevel retracementLevels = array.new_float(0) for i = 0 to array.size(fibonacciLevels) - 1 level = highLevel - array.get(fibonacciLevels, i) * priceRange array.push(retracementLevels, level) retracementLevels fibRetracementValues = fibonacciRetrace(high, low) fibRetracement = ta.sma(close, 21) plot(fibRetracement, color=color.purple, title="Fibonacci Retracement") // Define inputs fast_ma = input.int(title="Fast MA Period", defval=10) short_sma_10 = input.int(title="Short SMA 10 Period", defval=10) short_sma_60 = input.int(title="Short SMA 60 Period", defval=60) slow_ma = input.int(title="Slow MA Period", defval=30) ema1Length = input.int(title="EMA 1 Length", defval=3) fast_ma_9 = input.int(title="Fast MA 9", defval=9) // Define indicators fast_ma_val = ta.sma(close, fast_ma) short_sma_10_val = ta.sma(close, short_sma_10) short_sma_60_val = ta.sma(close, short_sma_60) slow_ma_val = ta.sma(close, slow_ma) up_trend = fast_ma_val > slow_ma_val down_trend = fast_ma_val < slow_ma_val volume_up = volume > ta.sma(volume, 20) volume_down = volume < ta.sma(volume, 20) // Calculate accuracy values fast_ema_val = ta.ema(close, fast_ma) slow_ema_val = ta.ema(close, slow_ma) ema1_val = ta.ema(close, ema1Length) fast_ma_9_val = ta.sma(close, fast_ma_9) ema7_val = ta.ema(close, 7) accuracy = ta.crossover(close, slow_ma_val) ? fast_ema_val : slow_ema_val // Define lines plot(up_trend ? fast_ma_val : na, color=color.green, linewidth=2, title="Up Trend") plot(down_trend ? fast_ma_val : na, color=color.red, linewidth=2, title="Down Trend") plot(volume_up ? fast_ma_val : na, color=color.green, linewidth=2, title="Volume Up") plot(volume_down ? fast_ma_val : na, color=color.red, linewidth=2, title="Volume Down") plot(accuracy, color=color.yellow, linewidth=1, title="Accuracy Line") plot(ema1_val, color=color.purple, linewidth=1, title="EMA 1") plot(fast_ma_9_val, color=color.orange, linewidth=1, title="Fast MA 9") plot(ema7_val, color=color.blue, linewidth=1, title="EMA 7") plot(short_sma_60_val, color=color.red, linewidth=1, title="Short SMA 60") hline(0, color=color.gray, linestyle=hline.style_dotted, title="Zero Line") // Buy/Sell Signals buySignal = ta.crossunder(short_sma_60_val, accuracy) sellSignal = ta.crossover(short_sma_60_val, accuracy) // Exit Signals exitLongSignal = ta.crossunder(fast_ma_9_val, ema7_val) exitShortSignal = ta.crossover(fast_ma_9_val, ema7_val) // Plot Buy/Sell Signals plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell") if exitLongSignal strategy.close("Buy") if exitShortSignal strategy.close("Sell") if buySignal strategy.entry("Enter Long", strategy.long) else if sellSignal strategy.entry("Enter Short", strategy.short)