Esta estratégia utiliza o cruzamento de duas médias móveis para determinar mudanças nas tendências do mercado e toma decisões de compra/venda com base na direção da tendência.
O núcleo desta estratégia é composto por duas médias móveis: uma MA rápida (período de inadimplência 32) e uma MA lenta (também período de inadimplência 32), ajustável através de parâmetros.
Através deste método de cruzamento MA, a estratégia pode seguir a tendência, mantendo posições longas em tendências ascendentes e posições curtas em tendências descendentes, até que apareça um sinal de reversão.
Para abordar esses riscos, pode-se considerar a adição de filtros apropriados, como ATR ou filtros de faixa verdadeira média, para reduzir o excesso de negociação em mercados variados; definir stop-loss razoáveis para controlar as perdas de negociação única; e otimizar continuamente os parâmetros para se adaptar ao mercado.
As otimizações acima mencionadas podem melhorar a capacidade da estratégia de lidar com mercados complexos, mas deve-se tomar cuidado para evitar a otimização excessiva que pode levar à adaptação da curva e a um desempenho futuro pobre.
A estratégia de dupla MA segue as tendências através de crossovers de MA. É simples, fácil de usar e amplamente aplicável.
A estratégia pode ser otimizada através da introdução de mais indicadores de filtragem, stop-losses dinâmicos, dimensionamento de posição, análise de vários prazos e parâmetros adaptativos.
Em geral, esta estratégia pode servir como uma estratégia básica de acompanhamento de tendências, mas é difícil de ser isolada e é mais adequada como parte de um portfólio de estratégias.
/*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')