Esta estrategia es un sistema inteligente de seguimiento de tendencias basado en promedios móviles duales, que identifica las tendencias del mercado mediante el cálculo de promedios móviles de máximos y mínimos junto con indicadores de pendiente, combinado con mecanismos dinámicos de toma de ganancias y stop-loss para la gestión de riesgos.
La estrategia emplea un sistema doble de promedios móviles como su lógica de negociación principal, calculando promedios móviles en series de precios altos y bajos. Las señales largas se generan cuando el precio se rompe por encima del promedio superior con una pendiente significativamente positiva, mientras que las señales cortas ocurren cuando el precio se rompe por debajo del promedio inferior con una pendiente significativamente negativa.
Esta es una estrategia de negociación cuantitativa que combina orgánicamente el seguimiento de tendencias con la gestión de riesgos. A través de la cooperación de un sistema doble de promedios móviles y umbrales de pendiente, la estrategia puede capturar con precisión las tendencias del mercado, mientras que los mecanismos dinámicos de toma de ganancias y de stop-loss proporcionan un control integral del riesgo. Aunque hay margen para mejorar la selección de parámetros y la adaptabilidad del mercado, su marco lógico claro y su sistema de parámetros flexible proporcionan una buena base para la optimización posterior. Se recomienda que los operadores realicen pruebas posteriores y optimicen a fondo varios parámetros de acuerdo con las características específicas del mercado y sus propias preferencias de riesgo al aplicar la estrategia en el comercio en vivo.
/*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("SMA Buy/Sell Strategy with Significant Slope", overlay=true) // Parametri configurabili smaPeriod = input.int(20, title="SMA Period", minval=1) initialTPPercent = input.float(5.0, title="Initial Take Profit (%)", minval=0.1) // Take Profit iniziale (ambizioso) trailingSLPercent = input.float(1.0, title="Trailing Stop Loss (%)", minval=0.1) // Percentuale di trailing SL slopeThreshold = input.float(0.05, title="Slope Threshold (%)", minval=0.01) // Soglia minima di pendenza significativa // SMA calcolate su HIGH e LOW smaHigh = ta.sma(high, smaPeriod) smaLow = ta.sma(low, smaPeriod) // Funzioni per pendenza significativa isSignificantSlope(sma, threshold) => math.abs(sma - sma[5]) / sma[5] > threshold / 100 slopePositive(sma) => sma > sma[1] and isSignificantSlope(sma, slopeThreshold) slopeNegative(sma) => sma < sma[1] and isSignificantSlope(sma, slopeThreshold) // Condizioni di BUY e SELL buyCondition = close > smaHigh and low < smaHigh and close[1] < smaHigh and slopePositive(smaHigh) sellCondition = close < smaLow and high > smaLow and close[1] > smaLow and slopeNegative(smaLow) // Plot delle SMA plot(smaHigh, color=color.green, linewidth=2, title="SMA 20 High") plot(smaLow, color=color.red, linewidth=2, title="SMA 20 Low") // Gestione TP/SL dinamici longInitialTP = strategy.position_avg_price * (1 + initialTPPercent / 100) shortInitialTP = strategy.position_avg_price * (1 - initialTPPercent / 100) // Trailing SL dinamico longTrailingSL = close * (1 - trailingSLPercent / 100) shortTrailingSL = close * (1 + trailingSLPercent / 100) // Chiusura di posizioni attive su segnali opposti if strategy.position_size > 0 and sellCondition strategy.close("Buy", comment="Close Long on Sell Signal") if strategy.position_size < 0 and buyCondition strategy.close("Sell", comment="Close Short on Buy Signal") // Apertura di nuove posizioni con TP iniziale e Trailing SL if buyCondition strategy.entry("Buy", strategy.long, comment="Open Long") strategy.exit("Long TP/Trailing SL", from_entry="Buy", limit=longInitialTP, stop=longTrailingSL) if sellCondition strategy.entry("Sell", strategy.short, comment="Open Short") strategy.exit("Short TP/Trailing SL", from_entry="Sell", limit=shortInitialTP, stop=shortTrailingSL)