A estratégia é chamada de
A lógica central desta estratégia é rastrear o cruzamento de preços com a média móvel simples de 21 dias (SMA).
Especificamente, a estratégia solicita o preço de fechamento dentro de um intervalo de datas determinado e calcula diferentes SMAs com base em períodos de entrada.
Junto com o cálculo de SMAs e determinação de crossovers, a estratégia também rastreia a posição atual.
A maior vantagem desta estratégia é ser simples e fácil de entender e implementar. O SMA é um indicador técnico comumente usado e o crossover do SMA é um dos sinais de negociação mais comuns.
Outra vantagem é que essa estratégia pode ser otimizada ajustando os parâmetros da SMA. Por exemplo, podemos testar diferentes combinações de períodos de SMA para encontrar o ideal para ações específicas. Além disso, a estratégia pode ser melhorada adicionando outros indicadores para confirmação e otimização.
O maior risco desta estratégia é que as estratégias baseadas em indicadores tendem a gerar sinais falsos excessivos.
As soluções comuns incluem definir stop loss, ajustar parâmetros ou adicionar condições de filtro. Por exemplo, podemos definir a taxa de perda máxima para limitar o risco, ajustar os períodos de SMA para encontrar parâmetros mais estáveis ou usar outros indicadores para filtrar alguns sinais de negociação.
A estratégia pode ser otimizada nos seguintes aspectos:
Teste e selecione combinações óptimas de parâmetros SMA e teste de volta diferentes comprimentos SMA para encontrar os melhores períodos.
Adicionar outros indicadores para confirmação de sinal de filtro, como RSI, MACD etc. Isso ajuda a filtrar sinais falsos.
Incorporar uma lógica de stop loss, definindo a perda máxima tolerável ou trailing stop para melhor controlar os riscos.
Otimize o tempo de entrada. Considere entrar em torno de grandes breakouts em vez de seguir estritamente o crossover da SMA.
Teste estratégias compostas. Combine-as com outros tipos de estratégias, como seguir tendências.
A estratégia realiza negociação automatizada com sinais crossover SMA simples. Os prós estão sendo fáceis de entender e implementar. Os contras são sinais excessivos e propensos a whipssaws. Podemos melhorá-lo por ajuste de parâmetros, adição de filtros, stop loss, etc. A estratégia nos fornece uma estrutura básica. Podemos enriquecê-la incorporando mais componentes.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Price Cross Above/Below SMA Strategy", shorttitle="Tressy Strat", overlay=true) // Define start and end year inputs start_year = input.int(2022, title="Start Year") end_year = input.int(2022, title="End Year") // Define start and end month inputs start_month = input.int(1, title="Start Month", minval=1, maxval=12) end_month = input.int(12, title="End Month", minval=1, maxval=12) // Define SMA length inputs sma_length = input.int(21, title="SMA Length") sma_length_50 = input.int(50, title="50 SMA Length") sma_length_200 = input.int(200, title="200 SMA Length") // Filter data within the specified date range filter_condition = true filtered_close = request.security(syminfo.tickerid, "D", close[0], lookahead=barmerge.lookahead_on) // Define SMAs using the input lengths sma = ta.sma(filtered_close, sma_length) sma_50 = ta.sma(filtered_close, sma_length_50) sma_200 = ta.sma(filtered_close, sma_length_200) // Initialize position var bool in_position = false // Condition for a price cross above SMA within the date range cross_above = filter_condition and ta.crossover(filtered_close, sma) // Condition for a price cross below SMA within the date range cross_below = filter_condition and ta.crossunder(filtered_close, sma) // Buy condition if cross_above in_position := true // Sell condition if cross_below in_position := false // Strategy entry and exit if cross_above strategy.entry("Buy", strategy.long) if cross_below strategy.close("Buy") // Plot the SMAs on the chart plot(sma, color=color.blue, title="21 SMA") plot(sma_50, color=color.red, title="50 SMA") plot(sma_200, color=color.orange, title="200 SMA") // Plot the Buy and Sell signals with "tiny" size plotshape(cross_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Buy Signal") plotshape(cross_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Sell Signal")