
La estrategia es un sistema de comercio integral de seguimiento de tendencias, que combina varios indicadores técnicos para determinar la tendencia del mercado y el momento de negociación. El núcleo de la estrategia se basa en señales cruzadas de promedios móviles simples rápidos y lentos (SMA) y confirma la tendencia a través de indicadores de tendencia relativamente débiles (RSI) y promedio (ADX), mientras que utiliza la amplitud real de la onda (ATR) para la gestión del riesgo.
El mecanismo de funcionamiento de la estrategia incluye las siguientes partes clave:
La estrategia establece un sistema de comercio de seguimiento de tendencias relativamente completo mediante la aplicación combinada de múltiples indicadores técnicos. La estrategia está diseñada para centrarse en la fiabilidad de la señal y la gestión del riesgo, y tiene una buena utilidad. A través de la implementación de recomendaciones de optimización, la estrategia promete mejorar aún más el rendimiento. Se recomienda realizar una prueba de retroalimentación adecuada antes de la aplicación en el mercado real y optimizar los parámetros según las características de la variedad de comercio específica.
/*backtest
start: 2025-02-16 17:00:00
end: 2025-02-20 00:00:00
period: 4m
basePeriod: 4m
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("SMA + RSI + ADX + ATR Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=2)
// === Input Parameters ===
sma_fast_length = input(10, title="SMA Fast Period")
sma_slow_length = input(200, title="SMA Slow Period")
rsi_length = input(14, title="RSI Period")
adx_length = input(14, title="ADX Period")
adx_smoothing = input(14, title="ADX Smoothing Period") // <-- New parameter!
atr_length = input(14, title="ATR Period")
// === Filtering Levels for RSI and ADX ===
rsi_buy_level = input(50, title="RSI Buy Level")
rsi_sell_level = input(50, title="RSI Sell Level")
adx_min_trend = input(20, title="ADX Minimum Trend Strength")
// === Trailing Stop ===
use_trailing_stop = input(true, title="Enable Trailing Stop")
trailing_stop_pips = input(30, title="Trailing Stop (Pips)")
trailing_step_pips = input(5, title="Trailing Step (Pips)")
// === Indicators ===
sma_fast = ta.sma(close, sma_fast_length)
sma_slow = ta.sma(close, sma_slow_length)
rsi_value = ta.rsi(close, rsi_length)
[diPlus, diMinus, adx_value] = ta.dmi(adx_length, adx_smoothing) // <-- Corrected: added `adx_smoothing`
atr_value = ta.atr(atr_length)
// === Entry Logic ===
longCondition = ta.crossover(sma_fast, sma_slow) and rsi_value > rsi_buy_level and adx_value > adx_min_trend
shortCondition = ta.crossunder(sma_fast, sma_slow) and rsi_value < rsi_sell_level and adx_value > adx_min_trend
// === Open Positions ===
if longCondition
strategy.entry("BUY", strategy.long)
if shortCondition
strategy.entry("SELL", strategy.short)
// === Trailing Stop ===
if use_trailing_stop
strategy.exit("Exit Long", from_entry="BUY", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)
strategy.exit("Exit Short", from_entry="SELL", trail_points=trailing_stop_pips, trail_offset=trailing_step_pips)
// === Visualization ===
plot(sma_fast, color=color.blue, title="SMA 10")
plot(sma_slow, color=color.red, title="SMA 200")
hline(rsi_buy_level, title="RSI Buy Level", color=color.green)
hline(rsi_sell_level, title="RSI Sell Level", color=color.red)
hline(adx_min_trend, title="ADX Min Trend Level", color=color.orange)