Previsão de tendência dinâmica multiperíodo combinada com estratégia de filtragem de média móvel

EMA SMA ML AI PREDICTION Trend FILTER BACKTEST
Data de criação: 2025-02-20 14:03:44 última modificação: 2025-02-27 17:38:36
cópia: 1 Cliques: 345
2
focar em
319
Seguidores

Previsão de tendência dinâmica multiperíodo combinada com estratégia de filtragem de média móvel Previsão de tendência dinâmica multiperíodo combinada com estratégia de filtragem de média móvel

Visão geral

A estratégia é um sistema de acompanhamento de tendências que combina a análise técnica tradicional e os métodos modernos de inteligência artificial. Utiliza principalmente a média móvel indexada (EMA) e a média móvel simples (SMA) como filtros de tendência, ao mesmo tempo em que introduz modelos de previsão para otimizar o tempo de entrada. A estratégia é optimizada especificamente para o nível da linha do dia, com o objetivo de capturar tendências de mercado de médio a longo prazo.

Princípio da estratégia

A lógica central da estratégia inclui três componentes principais:

  1. Sistema de determinação de tendências - usa EMA e SMA de 200 ciclos como filtros de tendências principais para determinar a direção da tendência atual por meio da relação entre a posição do preço e a linha média
  2. Módulo de previsão - Componentes de previsão escalonáveis, atualmente em previsão analógica, substituíveis por modelos de aprendizagem de máquina
  3. Gerenciamento de posições - define um período de posicionamento fixo de 4 linhas K para controlar o tempo de posicionamento e o risco

A geração de sinais de negociação precisa atender simultaneamente à direção da tendência e à consistência do sinal de previsão, ou seja:

  • Sinais de múltiplas cabeças: o preço está acima da EMA e SMA e o valor previsto é positivo
  • Sinal de cabeça vazia: preço está abaixo da EMA e SMA e prevê um valor negativo

Vantagens estratégicas

  1. Estrutura clara - lógica estratégica simples, intuitiva, fácil de entender e manter
  2. Risco controlado - controle eficaz do risco através de um ciclo de posição fixo e filtragem de dupla linha média
  3. Escalabilidade forte - Modulo de previsão flexível em design, com acesso a diferentes modelos de previsão de acordo com a necessidade
  4. Boa adaptabilidade - parâmetros ajustáveis para adaptar-se a diferentes cenários de mercado
  5. Frequência de operação moderada - operação de nível de linha de solta reduz custos de transação e estresse psicológico

Risco estratégico

  1. Risco de reversão de tendência - pode haver perdas contínuas em pontos de reversão de tendência
  2. Sensibilidade de parâmetros - a escolha de um período de linha média e de um período de detenção de posições tem maior influência na performance da estratégia
  3. Dependência do modelo - a precisão do módulo de previsão afeta diretamente o efeito da estratégia
  4. Efeito de deslizamento - operações no nível da linha de sol podem ter um deslizamento maior
  5. Dependência do cenário de mercado - pode ser fraco em mercados turbulentos

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

  1. Modelo de previsão de atualização - introdução de modelos de aprendizado de máquina para substituir as previsões aleatórias existentes
  2. Ciclo de posicionamento dinâmico - tempo de posicionamento ajustado dinamicamente à volatilidade do mercado
  3. Optimização de Stop Loss - Aumento do mecanismo de Stop Loss dinâmico para aumentar a capacidade de controle de risco
  4. Gestão de posições - introdução de um sistema de gestão de posições baseado na volatilidade
  5. Filtragem multidimensional - indicadores auxiliares como aumento de volume de transação, taxa de flutuação

Resumir

A estratégia, combinando a análise técnica tradicional e os métodos modernos de previsão, constrói um robusto sistema de acompanhamento de tendências. Suas principais vantagens são a clareza lógica, a capacidade de controlar o risco e a forte escalabilidade. A otimização da estratégia, especialmente através de melhorias nos modelos de previsão e no controle do risco, espera aumentar ainda mais a estabilidade e a lucratividade da estratégia.

Código-fonte da estratégia
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("My Strategy", overlay=true)

// Parameters (adjust as needed)
neighborsCount = 8
maxBarsBack = 2000
featureCount = 5
useDynamicExits = true
useEmaFilter = true
emaPeriod = 200
useSmaFilter = true
smaPeriod = 200

// Moving Average Calculations
ema = ta.ema(close, emaPeriod)
sma = ta.sma(close, smaPeriod)

// Trend Conditions
isEmaUptrend = close > ema
isEmaDowntrend = close < ema
isSmaUptrend = close > sma
isSmaDowntrend = close < sma

// Model Prediction (Replace with your real model)
// Here a simulation is used, replace it with real predictions
prediction = math.random() * 2 - 1 // Random value between -1 and 1

// Entry Signals
isNewBuySignal = prediction > 0 and isEmaUptrend and isSmaUptrend
isNewSellSignal = prediction < 0 and isEmaDowntrend and isSmaDowntrend

// Exit Signals
var int barsHeld = 0
var bool in_position = false
var int entry_bar = 0

if isNewBuySignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if isNewSellSignal and not in_position
    in_position := true
    entry_bar := bar_index
    barsHeld := 1
else if in_position
    barsHeld := barsHeld + 1
    if barsHeld == 4
        in_position := false

endLongTradeStrict = barsHeld == 4 and isNewBuySignal[1]
endShortTradeStrict = barsHeld == 4 and isNewSellSignal[1]

// Backtest Logic
var float totalProfit = 0
var float entryPrice = na
var int tradeDirection = 0

if isNewBuySignal and tradeDirection <= 0
    entryPrice := close
    tradeDirection := 1
    strategy.entry("Long", strategy.long)

if isNewSellSignal and tradeDirection >= 0
    entryPrice := close
    tradeDirection := -1
    strategy.entry("Short", strategy.short)

if (endLongTradeStrict and tradeDirection == 1) or (endShortTradeStrict and tradeDirection == -1)
    exitPrice = close
    profit = (exitPrice - entryPrice) / entryPrice
    if tradeDirection == -1
        profit := (entryPrice - exitPrice) / entryPrice

    totalProfit := totalProfit + profit
    tradeDirection := 0
    strategy.close_all()

plot(close, color=color.blue)
plot(ema, color=color.orange)
plot(sma, color=color.purple)