Estratégia de Crossover de Tendência de Média Móvel Dinâmica


Data de criação: 2024-02-05 12:14:12 última modificação: 2024-02-05 12:14:12
cópia: 0 Cliques: 589
1
focar em
1617
Seguidores

Estratégia de Crossover de Tendência de Média Móvel Dinâmica

Visão geral

A estratégia é uma estratégia de cruzamento de médias móveis simples (SMA) aplicada ao mercado de criptomoedas. Utiliza três grupos de SMAs: rápida, média e lenta para identificar potenciais sinais de entrada e saída. Quando uma SMA rápida atravessa uma SMA média, gera um sinal de compra; quando uma SMA rápida atravessa uma SMA média, gera um sinal de venda.

Princípio da estratégia

Configurações de parâmetros

A estratégia permite que o comerciante configure os seguintes parâmetros-chave:

  • Fonte de dados de preços: preço de fechamento ou outro preço
  • Se considerar a linha K incompleta
  • Método de previsão do SMA: previsão horizontal ou previsão de regressão linear
  • Tamanho do SMA rápido: 7 por padrão
  • Duração SMA média: 30 por padrão
  • Duração SMA lenta: 50 por padrão
  • Fundos da conta
  • Proporção de risco por transação

Cálculo de SMA

De acordo com o comprimento do SMA definido pelo usuário, o SMA rápido, o SMA médio e o SMA lento são calculados, respectivamente.

Sinais de negociação

Quando o SMA rápido atravessa o SMA médio, gera um sinal de compra; quando o SMA rápido atravessa o SMA médio, gera um sinal de venda.

Gestão de riscos e posições

A estratégia combina o capital da conta com a proporção de risco assumido por cada transação para calcular o capital nominal de cada transação. A estratégia combina o ATR para calcular a margem de parada e, finalmente, determinar a posição específica de cada transação.

Análise de vantagens

  • Melhor julgamento usando múltiplos grupos de SMAs para identificar tendências
  • Métodos de previsão de SMA opcionais e mais adaptáveis
  • Os sinais de transação são simples, claros e fáceis de implementar
  • Integração de risco e gestão de posições, mais ciência

Análise de Riscos

  • O SMA em si está atrasado e pode perder a reviravolta do preço
  • Os dados são apenas técnicos e não incluem o básico.
  • Não tem em conta o impacto de eventos inesperados

Pode ser otimizado através de uma redução apropriada do ciclo SMA, auxiliando outros indicadores, etc.

Direção de otimização

  • Combinação com outros indicadores de filtragem de falhas
  • Adicionar julgamentos fundamentais
  • Optimizar os parâmetros do ciclo SMA
  • Parâmetros de cálculo de risco e posição

Resumir

Esta estratégia integra vários recursos de julgamento de cruzamento de SMA, gerenciamento de risco e otimização de posição, uma estratégia de acompanhamento de tendências adequada para o mercado de criptografia. Os comerciantes podem ajustar os parâmetros de acordo com o seu estilo de negociação, o ambiente de mercado e outros fatores e implementar otimização.

Código-fonte da estratégia
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")

// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) => 
    maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)

offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]

fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)

// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)

// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold

if (enterLong)
    strategy.entry("Enter Long", strategy.long, qty=tradeSize)

if (exitLong)
    strategy.close("Enter Long")

// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")