Estratégia de tendência cruzada dinâmica da SMA

Autora:ChaoZhang, Data: 2024-02-05 12:14:12
Tags:

img

Resumo

Esta estratégia é uma simples média móvel (SMA) estratégia de cruzamento adequada para os mercados de criptomoedas. Ele usa SMAs rápidos, médios e lentos para identificar sinais de entrada e saída potenciais. Quando o SMA rápido cruza o SMA médio, um sinal de compra é gerado. Quando o SMA rápido cruza abaixo do SMA médio, um sinal de venda é gerado.

Estratégia lógica

Configurações de parâmetros

A estratégia permite aos operadores definir os seguintes parâmetros-chave:

  • Fonte de preços: preço de fechamento ou outros preços
  • Considere barras incompletas ou não
  • Método de previsão da SMA: previsão de deslocamento ou previsão de regressão linear
  • Duração do SMA rápido: padrão 7
  • Duração média da SMA: 30
  • Duração da SMA lenta: por defeito 50
  • Fundos da conta
  • Percentagem de risco por transacção

Cálculo da SMA

A SMA rápida, a SMA média e a SMA lenta são calculadas com base nos comprimentos de SMA definidos pelo utilizador.

Sinais comerciais

Quando a SMA rápida cruza a SMA média, um sinal de compra é gerado.

Risco e dimensionamento das posições

A estratégia calcula o capital nominal por negociação com base nos fundos da conta e na percentagem de risco aceitável por negociação.

Análise das vantagens

  • Utiliza múltiplas SMAs para identificar tendências com maior convicção
  • Métodos opcionais de previsão da SMA para uma maior adaptabilidade
  • Sinais de negociação simples e claros fáceis de implementar
  • Inclui gestão científica do risco e da posição

Análise de riscos

  • A natureza atrasada das SMAs pode perder os pontos de reversão de preços
  • Considera apenas indicadores técnicos sem combinar os fundamentais
  • Não considera o impacto de acontecimentos súbitos

Pode otimizar-se através do encurtamento dos períodos de SMA, da adição de outros indicadores, etc.

Orientações de otimização

  • Adicionar outros indicadores para filtrar sinais falsos
  • Incorporar análise fundamental
  • Otimizar os parâmetros do período SMA
  • Otimizar os parâmetros de dimensionamento do risco e da posição

Conclusão

Esta estratégia integra regras de cruzamento de SMA, gerenciamento de risco e dimensionamento de posição para um sistema robusto de tendência adequado para os mercados de criptomoedas.


/*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")


Mais.