Estratégia de negociação cruzada de MA baseada em cruzações de médias móveis de curto e longo prazo

Autora:ChaoZhang, Data: 2024-02-22 15:36:49
Tags:

img

Resumo

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.

Estratégia lógica

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.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Utilizando regras de cruzamento de média móvel simples e universais, fáceis de entender, adequadas para iniciantes

  2. 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.

  3. Ter condições de stop loss que permitam o stop loss oportuno, bloquear lucros parciais e reduzir o risco de perda

  4. Muitos parâmetros personalizáveis que podem ser ajustados com base nas condições do mercado e estilo de negociação pessoal

  5. Facilmente extensivel para combinação com outros indicadores para conceber estratégias mais complexas

Análise de riscos

A estratégia apresenta igualmente alguns riscos, principalmente em relação aos seguintes aspectos:

  1. As próprias médias móveis têm atributos mais atrasados, podem perder pontos de reversão de preços a curto prazo

  2. Baseia-se exclusivamente em indicadores simples, propensos a falhar em determinados ambientes de mercado (choques de tendência, limites de intervalo, etc.)

  3. Posicionamento inadequado de stop loss pode causar perdas desnecessárias

  4. 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:

  1. Incorporar outros indicadores principais para melhorar a sensibilidade às alterações a curto prazo

  2. Adicionar condições de filtragem para evitar ser afetado por falsos sinais durante choques e mercados de gama

  3. Otimizar a lógica de stop loss e ajustar dinamicamente a faixa de stop loss com base na volatilidade do mercado

  4. Optimização de múltiplos parâmetros para encontrar configurações de parâmetros ideais

Orientações de otimização

A estratégia tem também um grande potencial de otimização, principalmente no que diz respeito aos seguintes aspectos:

  1. Adicionar outras condições de filtragem para evitar sinais falsos durante choques e mercados de gama

  2. Incorporar indicadores de impulso para identificar sinais de ruptura mais fortes

  3. Otimizar os parâmetros do período de média móvel para encontrar a melhor combinação de parâmetros

  4. Otimizar automaticamente o intervalo de stop loss com base na volatilidade do mercado

  5. Tentar otimizar automaticamente toda a estratégia com base em técnicas de aprendizagem de máquina

  6. Tentar combinar com outras estratégias para conceber sistemas multiestratégica mais complexos

Conclusão

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)


Mais.