Esta estratégia é uma estratégia de negociação quantitativa baseada no princípio do cruzamento de média móvel dupla. A estratégia gera sinais de compra quando a SMA de curto prazo cruza acima da SMA de longo prazo e gera sinais de venda quando a SMA de curto prazo cruza abaixo da SMA de longo prazo. O código da estratégia também introduz configurações para faixa de datas e prazo, permitindo backtesting flexível e otimização da estratégia.
O princípio básico desta estratégia é capturar mudanças nas tendências de preços utilizando a relação de cruzamento entre médias móveis de diferentes períodos. A média móvel é um indicador técnico comumente usado que filtra flutuações de curto prazo e reflete a tendência geral de preços através da média de preços em um período de tempo passado. Quando a média móvel de curto prazo cruza acima da média móvel de longo prazo, indica que o preço pode iniciar uma tendência ascendente, gerando um sinal de compra; inversamente, quando a média móvel de curto prazo cruza abaixo da média móvel de longo prazo, indica que o preço pode iniciar uma tendência descendente, gerando um sinal de venda.
A estratégia de cruzamento de média móvel dupla SMA é uma estratégia quantitativa de negociação simples, fácil de entender e altamente adaptável. Ao utilizar a relação de cruzamento de médias móveis com diferentes períodos, a estratégia pode efetivamente capturar mudanças nas tendências de preços e fornecer sinais de compra e venda para os traders. No entanto, o desempenho da estratégia pode ser sensível à seleção de parâmetros e pode gerar efeitos de negociação e atraso frequentes quando o mercado é altamente volátil. Para otimizar ainda mais a estratégia, medidas como a introdução de outros indicadores técnicos, a otimização da seleção de parâmetros, a adição de condições de filtragem, o ajuste dinâmico de parâmetros e a incorporação de gerenciamento de risco podem ser consideradas.
/*backtest start: 2023-06-01 00:00:00 end: 2024-06-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy with Date Range and Timeframe", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.USD, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0) // Define the lengths for the short and long SMAs shortSMA_length = input.int(50, title="Short SMA Length", minval=1) longSMA_length = input.int(200, title="Long SMA Length", minval=1) // Define the start and end dates for the backtest startDate = input(timestamp("2024-06-01 00:00"), title="Start Date") endDate = input(timestamp("2024-06-05 00:00"), title="End Date") // Define the timeframe for the SMAs smaTimeframe = input.timeframe("D", title="SMA Timeframe") // Request the short and long SMAs from the selected timeframe dailyShortSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, shortSMA_length)) dailyLongSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, longSMA_length)) // Plot the SMAs on the chart plot(dailyShortSMA, color=color.blue, title="Short SMA") plot(dailyLongSMA, color=color.red, title="Long SMA") // Define the crossover conditions based on the selected timeframe SMAs buyCondition = ta.crossover(dailyShortSMA, dailyLongSMA) sellCondition = ta.crossunder(dailyShortSMA, dailyLongSMA) // Generate buy and sell signals only if the current time is within the date range if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.close("Buy") // Optional: Add visual buy/sell markers on the chart plotshape(series=buyCondition and (time >= startDate and time <= endDate), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellCondition and (time >= startDate and time <= endDate), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")