Estratégia de Stop Loss Dinâmico de Confirmação Múltipla do Gráfico de Faixa Nadaraya-Watson

ADX DI RSI MAE
Data de criação: 2024-05-24 17:58:47 última modificação: 2024-05-24 17:58:47
cópia: 0 Cliques: 1065
1
focar em
1617
Seguidores

Estratégia de Stop Loss Dinâmico de Confirmação Múltipla do Gráfico de Faixa Nadaraya-Watson

Visão geral

A estratégia usa o gráfico de bandas de Nadarya-Watson para suavizar o preço e calcular o sucesso e o fracasso com base no preço após o sucesso. Em seguida, usa os indicadores ADX e DI para avaliar a força e a direção da tendência, o RSI para confirmar a dinâmica da tendência e, ao mesmo tempo, identificar potenciais pontos de ruptura através da ruptura do preço.

Princípio da estratégia

  1. O gráfico de bandas de Nadaraya-Watson é usado para suavizar o preço, calculado em cima e abaixo da linha.
  2. Usar os indicadores ADX e DI para determinar a força e direção da tendência. Quando o ADX é maior do que o limiar e o + DI é maior do que o -DI, é uma tendência ascendente, ao contrário da tendência descendente.
  3. A determinação de se o preço quebrou o trajeto do gráfico de bandas é para cima ou para baixo, indicando respectivamente uma potencial quebra para cima e uma para baixo.
  4. O indicador RSI é usado para confirmar a dinâmica da tendência. Quando o RSI é maior que 70, ele indica a dinâmica ascendente, e menor que 30, a dinâmica descendente.
  5. A combinação de múltiplos sinais, como tendências, pontos de ruptura e dinâmica, para executar uma transação:
    • Quando há uma forte tendência ascendente, uma ruptura ascendente e uma alta dinâmica, é possível abrir mais posições.
    • Quando houver uma forte tendência de queda, abrir um vazio quando houver uma ruptura para baixo e uma queda de energia.
  6. O risco é gerenciado com stop loss dinâmico, com o preço de stop loss calculado com base no preço máximo/mínimo e no preço de fechamento.
  7. Apresentação de sinais de estratégia através da marcação de linhas de tendência, pontos de ruptura e sinais de dinâmica no gráfico.

Vantagens estratégicas

  1. O gráfico de bandas de Nadarya-Watson pode ser usado para suavizar os dados de preços e reduzir a interferência de ruído.
  2. O mecanismo de confirmação de múltiplos sinais aumenta a confiabilidade do sinal, e os sinais de tendência, de ruptura e de energia complementam-se mutuamente para verificar as oportunidades de negociação.
  3. A gestão de stop loss dinâmica permite uma melhor adaptação à volatilidade do mercado, reduzindo o risco. O preço de stop loss é calculado com base no preço máximo/mínimo e no preço de fechamento e pode ser ajustado com o mercado.
  4. Os indicadores de linha de tendência, pontos de ruptura e sinais de dinâmica são visualizados no gráfico para que os usuários possam observar e ler os sinais de estratégia.

Risco estratégico

  1. Em mercados turbulentos ou em reversões de tendência, os sinais de ruptura frequentes podem levar a excesso de negociação e perdas.
  2. A parada dinâmica pode não ser interrompida em tempo hábil quando a tendência se inverte, o que aumenta a retração.
  3. Parâmetros de estratégia, como a largura de banda de um gráfico de bandas de Nadarya-Watson, os limites do ADX, etc., precisam ser otimizados para diferentes mercados e padrões. A configuração inadequada dos parâmetros pode afetar a eficácia da estratégia.

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

  1. A introdução de mais indicadores eficazes de determinação de tendências, como MACD, sistema de medição, etc., aumenta a precisão e a estabilidade da determinação de tendências.
  2. Otimização de métodos dinâmicos de cálculo de stop loss, como a consideração de indicadores relacionados à volatilidade, como ATR, SAR, etc., para tornar o stop loss mais flexível e eficaz.
  3. Para diferentes características do mercado, como tendências, oscilações, etc., configure diferentes conjuntos de parâmetros, aumentando a adaptabilidade da estratégia.
  4. Adicionar o módulo de gerenciamento de posições, ajustar posições de forma dinâmica de acordo com as tendências do mercado, a volatilidade e outros fatores, controlar o risco.

Resumir

A estratégia usa o padrão de Nadarya-Watson para alinhar os preços, combinando indicadores de tendência como o ADX, o DI e o RSI, com sinais múltiplos, como pontos de ruptura de preços, para construir um sistema de negociação mais completo. O gerenciamento de stop loss dinâmico pode se adaptar às mudanças no mercado e controlar o risco, mas na aplicação prática, é necessário prestar atenção ao julgamento de tendências, stop loss dinâmico e configuração de parâmetros para melhorar a estabilidade e a lucratividade da estratégia.

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

//@version=5
strategy("Nadaraya-Watson Envelope with Multi-Confirmation and Dynamic Stop-Loss", overlay=true)

// Input parameters
h = input.float(7.2, "Bandwidth", minval=0)
mult = input.float(2.1, minval=0)
src = input(close, "Source")

// ADX and DI Input Parameters
adxLength = input.int(14, "ADX Length")
adxThreshold = input.float(25, "ADX Threshold")
adxSmoothing = input.int(14, "ADX Smoothing")

// Calculate ADX and DI
[dmiPlus, dmiMinus, adx] = ta.dmi(adxLength, adxSmoothing)
strongTrendUp = dmiPlus > dmiMinus and adx > adxThreshold
strongTrendDown = dmiMinus > dmiPlus and adx > adxThreshold

// Nadaraya-Watson Envelope Calculation
gauss(x, h) =>
    math.exp(-(math.pow(x, 2) / (h * h * 2)))

coefs = array.new_float(0)
den = 0.0

for i = 0 to 100
    w = gauss(i, h)
    array.push(coefs, w)

den := array.sum(coefs)

out = 0.0
for i = 0 to 100
    out += src[i] * array.get(coefs, i)
out /= den
mae = ta.sma(math.abs(src - out), 100) * mult

upper = ta.sma(out + mae, 10)
lower = ta.sma(out - mae, 10)

// Confirmations
breakoutUp = ta.crossover(src, upper)
breakoutDown = ta.crossunder(src, lower)

// Original RSI period and thresholds
rsiPeriod = input.int(14, "RSI Period")
rsi = ta.rsi(src, rsiPeriod)
momentumUp = rsi > 70 and adx > adxThreshold
momentumDown = rsi < 30 and adx > adxThreshold

// // Plot ADX-based Trend Confirmation Lines
// if (strongTrendUp)
//     line.new(bar_index, low, bar_index + 1, low, color=color.new(color.blue, 50), width=2, style=line.style_dashed)

// if (strongTrendDown)
//     line.new(bar_index, high, bar_index + 1, high, color=color.new(color.red, 50), width=2, style=line.style_dashed)

// Plot Breakout Confirmation Dots
plotshape(series=breakoutUp, style=shape.circle, location=location.abovebar, color=color.blue, size=size.tiny, title="Breakout Up")
plotshape(series=breakoutDown, style=shape.circle, location=location.belowbar, color=color.orange, size=size.tiny, title="Breakout Down")

// Plot Momentum Confirmation Arrows
plotshape(series=momentumUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Momentum Up")
plotshape(series=momentumDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Momentum Down")

// Strategy Entry and Exit
var float stopLossLevel = na
var float highestPrice = na

potentialBuy = strongTrendUp and breakoutUp
potentialSell = strongTrendDown and breakoutDown
momentumConfirmUp = potentialBuy and momentumUp
momentumConfirmDown = potentialSell and momentumDown

if (momentumConfirmUp)
    strategy.entry("Buy", strategy.long)
    stopLossLevel := close * 0.90
    highestPrice := close

if (momentumConfirmDown)
    strategy.entry("Sell", strategy.short)
    stopLossLevel := close * 1.10
    highestPrice := close

if (strategy.position_size > 0)
    highestPrice := math.max(highestPrice, close)
    stopLossLevel := math.max(highestPrice * 0.85, close * 0.90)

if (strategy.position_size < 0)
    highestPrice := math.min(highestPrice, close)
    stopLossLevel := math.min(highestPrice * 1.15, close * 1.10)

// Close position if stop loss is hit
if (strategy.position_size > 0 and close < stopLossLevel)
    strategy.close("Buy")

if (strategy.position_size < 0 and close > stopLossLevel)
    strategy.close("Sell")