Estratégia de Crossover de Média Móvel

SMA MA
Data de criação: 2024-06-14 15:48:32 última modificação: 2024-06-14 15:48:32
cópia: 3 Cliques: 621
1
focar em
1617
Seguidores

Estratégia de Crossover de Média Móvel

Visão geral

A estratégia é uma estratégia de negociação quantitativa baseada no cruzamento de médias móveis. Ela produz um sinal de compra quando a linha rápida atravessa a linha lenta de baixo para cima e um sinal de venda quando a linha rápida atravessa a linha lenta de cima para baixo, calculando médias móveis de dois períodos diferentes (a linha rápida e a linha lenta). A estratégia também introduz o conceito de gerenciamento de posições dinâmicas, ajustando dinamicamente o tamanho da posição de cada transação de acordo com a perda da conta, para controlar o risco.

Princípio da estratégia

  1. Calcule uma média móvel simples (SMA) de dois períodos diferentes, os períodos 9 e 21, respectivamente.
  2. Quando a linha rápida ((9 ciclos) atravessa a linha lenta ((21 ciclos) de baixo para cima, gera um sinal de compra; quando a linha rápida atravessa a linha lenta de cima para baixo, gera um sinal de venda.
  3. O montante de risco por transação é calculado com base em 1% do saldo da conta, e o número de ações a serem compradas é calculado com base no montante de risco e na faixa de preços atual (o preço mais alto - o preço mais baixo).
  4. Se a estratégia atual estiver em estado de lucro, a posição da próxima transação será aumentada em 10%; se estiver em estado de perda, a posição da próxima transação será reduzida em 10%.
  5. Execute a operação de compra quando o sinal de compra aparece e execute a operação de venda quando o sinal de venda aparece.

Vantagens estratégicas

  1. Simples e fácil de entender: a estratégia baseia-se no clássico princípio da média móvel cruzada, a lógica é clara, fácil de entender e implementar.
  2. Seguimento de tendências: através de duas médias móveis de diferentes períodos, pode efetivamente capturar tendências de médio e longo prazo de preços, adequado para negociações de seguimento de tendências.
  3. Gerenciamento de posição dinâmica: ajuste dinâmico do tamanho da posição de acordo com a situação de ganhos e perdas, aumento apropriado da posição em caso de lucro e redução apropriada da posição em caso de prejuízo, ajudando a controlar o risco e melhorar a receita.
  4. Ampla aplicabilidade: a estratégia pode ser aplicada a vários mercados financeiros e variedades de negociação, como ações, futuros, divisas, etc.

Risco estratégico

  1. Negociação frequente: Como a estratégia é baseada em sinais de cruzamento de médias móveis de curto prazo, pode levar a negociações frequentes, aumentando os custos de negociação e o risco de deslizamento.
  2. Desempenho fraco em mercados de turbulência: Em mercados de turbulência e não-trend, a estratégia pode gerar mais falsos sinais, resultando em perdas.
  3. Risco de otimização de parâmetros: o desempenho da estratégia depende da escolha periódica da média móvel, diferentes parâmetros podem levar a resultados diferentes, existe o risco de sobreajuste de otimização de parâmetros.

Direção de otimização da estratégia

  1. Introdução de indicadores de confirmação de tendência: com base no sinal de cruzamento da média móvel, introduza outros indicadores de confirmação de tendência, como MACD, ADX, etc., para filtrar alguns sinais falsos e melhorar a qualidade do sinal.
  2. Optimizar as regras de gerenciamento de posições: as regras de gerenciamento de posições existentes são mais simples, e pode-se considerar a introdução de algoritmos de gerenciamento de posições mais complexos, como a fórmula de Kelly, gerenciamento de capital de proporção fixa, etc., para aumentar ainda mais o retorno ajustado ao risco.
  3. Adição de um mecanismo de stop-loss: adição de regras de stop-loss e stop-loss na estratégia para controlar a perda máxima e o lucro máximo de uma única transação, aumentando o risco-benefício da estratégia.
  4. Optimização de parâmetros de adaptação: introdução de mecanismos de otimização de parâmetros de adaptação, ajustando automaticamente os parâmetros da estratégia de acordo com as mudanças no estado do mercado, aumentando a estabilidade e a adaptabilidade da estratégia.

Resumir

A estratégia de cruzamento de média móvel é uma estratégia de negociação quantitativa simples e prática para capturar a tendência de preços através de sinais de cruzamento de duas médias móveis de diferentes períodos, ao mesmo tempo em que introduz regras de gerenciamento de posição dinâmica para controlar o risco. A lógica da estratégia é clara, fácil de implementar e de ampla aplicação.

Código-fonte da estratégia
/*backtest
start: 2024-06-06 00:00:00
end: 2024-06-13 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © okolienicholas

//@version=5
strategy("Moving Average Crossover Strategy", overlay=true)

// Input parameters
fast_length = input(9, title="Fast MA Length")
slow_length = input(21, title="Slow MA Length")
source = close
account_balance = input(100, title="Account Balance") // Add your account balance here

// Calculate moving averages
fast_ma = ta.sma(source, fast_length)
slow_ma = ta.sma(source, slow_length)

// Plot moving averages
plot(fast_ma, color=color.blue, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")

// Generate buy/sell signals
buy_signal = ta.crossover(fast_ma, slow_ma)
sell_signal = ta.crossunder(fast_ma, slow_ma)

// Plot buy/sell signals
plotshape(buy_signal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")

// Calculate the risk per trade
risk_per_trade = account_balance * 0.01

// Calculate the number of shares to buy
shares_to_buy = risk_per_trade / (high - low)

// Calculate the profit or loss
profit_or_loss = strategy.netprofit

// Adjust the position size based on the profit or loss
if (profit_or_loss > 0)
    shares_to_buy = shares_to_buy * 1.1 // Increase the position size by 10% when in profit
else
    shares_to_buy = shares_to_buy * 0.9 // Decrease the position size by 10% when in loss

// Execute orders
if (buy_signal)
    strategy.entry("Buy", strategy.long, qty=shares_to_buy)
    
if (sell_signal)
    strategy.entry("Sell", strategy.short, qty=shares_to_buy)