Esta estratégia é uma simples estratégia de negociação de crossover de média móvel baseada em crossovers de média móvel de curto e longo prazo. Ela usa médias móveis de 34 períodos e 89 períodos para observar seus crossovers durante a sessão da manhã como sinais de compra e venda. Quando a média móvel de curto prazo cruza acima da média móvel de longo prazo de baixo, um sinal de compra é gerado. Quando cruza abaixo de cima, um sinal de venda é gerado.
A lógica central desta estratégia baseia-se em cruzes entre médias móveis de curto e longo prazo como sinais de negociação. Especificamente, a estratégia define médias móveis simples de curto e longo prazo (SMAs) de 34 períodos e 89 períodos. Ele só observa os cruzes entre essas duas SMAs durante a sessão da manhã (08:00 - 10:00). Quando a SMA de curto prazo cruza acima da SMA de longo prazo de baixo, o mercado é considerado em uma tendência ascendente, gerando assim um sinal de compra. Quando a SMA de curto prazo cruza abaixo da SMA de longo prazo de cima, o mercado é considerado em uma tendência descendente, gerando assim um sinal de venda.
Após receber um sinal de compra ou venda, a estratégia entrará em uma posição e estabelecerá uma condição para sair da posição, que é obter lucro depois de manter por um número especificado de velas (o padrão é 3 velas) desde a entrada.
Deve-se notar que a estratégia só identifica sinais cruzados durante a sessão da manhã. Isso ocorre porque este período de tempo tem maiores volumes de negociação e os sinais de mudança de tendência são mais confiáveis. Outros períodos de tempo têm maiores flutuações de preços e são mais fáceis de gerar falsos sinais.
A estratégia apresenta as seguintes vantagens:
Utilizando regras de cruzamento de média móvel simples e universais, fáceis de entender, adequadas para iniciantes
Identificar apenas sinais durante a sessão da manhã, quando os sinais de qualidade são abundantes, o que filtra os falsos sinais durante outros prazos.
Ter condições de stop loss que permitam o stop loss oportuno, bloquear lucros parciais e reduzir o risco de perda
Muitos parâmetros personalizáveis que podem ser ajustados com base nas condições do mercado e estilo de negociação pessoal
Facilmente extensivel para combinação com outros indicadores para conceber estratégias mais complexas
A estratégia apresenta igualmente alguns riscos, principalmente em relação aos seguintes aspectos:
As próprias médias móveis têm atributos mais atrasados, podem perder pontos de reversão de preços a curto prazo
Baseia-se exclusivamente em indicadores simples, propensos a falhar em determinados ambientes de mercado (choques de tendência, limites de intervalo, etc.)
Posicionamento inadequado de stop loss pode causar perdas desnecessárias
As definições incorretas dos parâmetros (períodos de média móvel, períodos de retenção, etc.) também podem afectar o desempenho da estratégia
Soluções correspondentes:
Incorporar outros indicadores principais para melhorar a sensibilidade às alterações a curto prazo
Adicionar condições de filtragem para evitar ser afetado por falsos sinais durante choques e mercados de gama
Otimizar a lógica de stop loss e ajustar dinamicamente a faixa de stop loss com base na volatilidade do mercado
Optimização de múltiplos parâmetros para encontrar configurações de parâmetros ideais
A estratégia tem também um grande potencial de otimização, principalmente no que diz respeito aos seguintes aspectos:
Adicionar outras condições de filtragem para evitar sinais falsos durante choques e mercados de gama
Incorporar indicadores de impulso para identificar sinais de ruptura mais fortes
Otimizar os parâmetros do período de média móvel para encontrar a melhor combinação de parâmetros
Otimizar automaticamente o intervalo de stop loss com base na volatilidade do mercado
Tentar otimizar automaticamente toda a estratégia com base em técnicas de aprendizagem de máquina
Tentar combinar com outras estratégias para conceber sistemas multiestratégica mais complexos
Em geral, essa estratégia é relativamente simples e prática, adequada para iniciantes aprenderem. Ela incorpora o padrão típico de estratégias de cruzamento de média móvel e usa paradas para controlar riscos. No entanto, outras otimizações podem ser feitas para melhorar o desempenho para mais condições de mercado. Os investidores podem alavancar essa estrutura básica para projetar estratégias de negociação quantitativas mais avançadas.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("34 89 SMA Crossover Strategy", overlay=true) // Define the length for the SMAs short_length = input(34, title="Short SMA Length") long_length = input(89, title="Long SMA Length") exit_candles = input(3, title="Exit after how many candles?") exit_at_open = input(true, title="Exit at Open?") // Define morning session morning_session = input("0800-1000", "Morning Session") // Calculate SMAs short_sma = ta.sma(close, short_length) long_sma = ta.sma(close, long_length) // Function to check if current time is within specified session in_session(session) => session_start = na(time(timeframe.period, "0800-1000")) ? na : true session_start // Condition for buy signal (short SMA crosses over long SMA) within specified trading hours buy_signal = ta.crossover(short_sma, long_sma) // Condition for sell signal (short SMA crosses under long SMA) within specified trading hours sell_signal = ta.crossunder(short_sma, long_sma) // Function to exit the trade after specified number of candles var int trade_entry_bar = na var int trade_exit_bar = na if (buy_signal or sell_signal) trade_entry_bar := bar_index if (not na(trade_entry_bar)) trade_exit_bar := trade_entry_bar + exit_candles // Exit condition exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar)) // Execute trades if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) if (exit_condition) strategy.close("Buy") strategy.close("Sell") // Plot SMAs on the chart plot(short_sma, color=color.blue, linewidth=1) plot(long_sma, color=color.red, linewidth=1)