Esta estrategia utiliza el cruce de dos promedios móviles para determinar los cambios en las tendencias del mercado y toma decisiones de compra / venta basadas en la dirección de la tendencia.
El núcleo de esta estrategia son dos promedios móviles: un MA rápido (período de impago 32) y un MA lento (también período de impago 32, ajustable a través de parámetros).
A través de este método de cruce MA, la estrategia puede seguir la tendencia, manteniendo posiciones largas en tendencias alcistas y posiciones cortas en tendencias bajistas, hasta que aparezca una señal de inversión.
Para hacer frente a estos riesgos, se puede considerar la adición de filtros apropiados, como ATR o filtros de rango verdadero promedio, para reducir el exceso de operaciones en los mercados variados; establecer stop-loss razonables para controlar las pérdidas de una sola operación; y optimizar continuamente los parámetros para adaptarse al mercado.
Las optimizaciones anteriores pueden mejorar la capacidad de la estrategia para manejar mercados complejos, pero se debe tener cuidado de evitar la sobre-optimización que puede conducir al ajuste de la curva y a un mal rendimiento futuro.
El doble MA sigue la tendencia de la estrategia y captura las tendencias a través de los cruces de MA. Es simple, fácil de usar y ampliamente aplicable.
La estrategia puede optimizarse introduciendo más indicadores de filtrado, stop-loss dinámicos, dimensionamiento de posiciones, análisis de marcos de tiempo múltiples y parámetros adaptativos.
En general, esta estrategia puede servir como una estrategia básica de seguimiento de tendencias, pero es difícil de mantenerse sola y es más adecuada como parte de una cartera de estrategias.
/*backtest start: 2023-03-16 00:00:00 end: 2024-03-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true) strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15) // Backtest Date Range start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530')) end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530')) backtest_range = true // Inputs maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA') sslLen = input(title='SSL Length', defval=32) showCross = input(title='Show Crossover?', defval=true) showEntry = input(title='Show Entry?', defval=true) showTrend = input(title='Show Trend Colors?', defval=true) // Calc MA for SSL Channel calc_ma(close, len, type) => float result = 0 if type == 'SMA' // Simple result := ta.sma(close, len) result if type == 'EMA' // Exponential result := ta.ema(close, len) result if type == 'WMA' // Weighted result := ta.wma(close, len) result result // Add SSL Channel maHigh = calc_ma(high, sslLen, maType) maLow = calc_ma(low, sslLen, maType) Hlv = int(na) Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1] sslDown = Hlv < 0 ? maHigh : maLow sslUp = Hlv < 0 ? maLow : maHigh ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red) ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime) // Conditions longCondition = ta.crossover(sslUp, sslDown) shortCondition = ta.crossover(sslDown, sslUp) // Strategy if shortCondition strategy.close('Long', comment='Long Exit', alert_message='JSON') if longCondition strategy.close('Short', comment='Short Exit', alert_message='JSON') if backtest_range and longCondition strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON') if backtest_range and shortCondition strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON') // Plots fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')