Esta é uma estratégia quantitativa de negociação baseada em sinais duplos de cruzamento de média móvel. A estratégia emprega duas médias móveis, uma como linha principal de sinal e outra como linha de sinal de suavização.
A estratégia utiliza dois níveis de cálculos de média móvel. Primeiro, calcula uma média móvel básica (período padrão de 9), seguida por um processo de suavização secundário (período padrão de 5). A estratégia oferece vários métodos de cálculo de média móvel, incluindo média móvel simples (SMA), média móvel exponencial (EMA), média móvel suavizada (SMMA), média móvel ponderada (WMA) e média móvel ponderada por volume (VWMA).
Esta é uma versão aprimorada de uma estratégia clássica de tendência que aumenta a estabilidade, mantendo a simplicidade através de um design de média móvel de duas camadas. A estratégia oferece boa escalabilidade e flexibilidade, adaptável a diferentes ambientes de mercado através da otimização de parâmetros e extensões de funções. No entanto, os usuários precisam prestar atenção ao controle de custos de transação e gestão de risco, e recomenda-se realizar um backtesting completo antes da negociação ao vivo.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average 1.0 Strategy", overlay=true) // Input for Moving Average Length len = input.int(9, minval=1, title="Length") src = input(close, title="Source") offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) // Calculate the Moving Average out = ta.sma(src, len) // Plot the Moving Average plot(out, color=color.blue, title="MA", offset=offset) // Function to choose the type of moving average ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Input for Smoothing Method and Length typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing") // Calculate the Smoothing Line smoothingLine = ma(out, smoothingLength, typeMA) // Plot the Smoothing Line plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset) // Strategy Logic if (ta.crossover(close, smoothingLine)) strategy.entry("Buy", strategy.long) if (ta.crossunder(close, smoothingLine)) strategy.entry("Sell", strategy.short)