En la carga de los recursos... Cargando...

El valor de las pérdidas se calculará en función de las pérdidas que se hayan producido durante el período de referencia.

El autor:¿ Qué pasa?, Fecha: 2024-05-24 17:58:47
Las etiquetas:ADXEl DIIndicador de riesgoEl MAE

img

Resumen general

Esta estrategia utiliza la envolvente de Nadaraya-Watson para suavizar los datos de precios y calcular las bandas superior e inferior en función del precio suavizado. Luego utiliza los indicadores ADX y DI para determinar la fuerza y dirección de la tendencia, y el indicador RSI para confirmar el impulso de la tendencia. Se identifican breakouts potenciales cuando el precio cruza por encima o por debajo de las bandas de envolvente. Finalmente, ejecuta operaciones basadas en las señales combinadas de tendencia, breakout e impulso, mientras emplea stop-loss dinámico para gestionar el riesgo.

Principios de estrategia

  1. Aplicar el sobre Nadaraya-Watson para suavizar los datos de precios y calcular las bandas superior e inferior.
  2. Utilice los indicadores ADX y DI para determinar la fuerza y la dirección de la tendencia.
  3. Identificar las posibles rupturas cuando el precio cruza por encima de la banda superior o debajo de la banda inferior.
  4. Confirme el impulso de la tendencia utilizando el indicador RSI. Un RSI superior a 70 indica impulso alcista, mientras que un RSI inferior a 30 indica impulso bajista.
  5. Ejecutar operaciones basadas en las señales combinadas de tendencia, ruptura e impulso:
    • Entra en una posición larga cuando hay una fuerte tendencia alcista, una ruptura al alza y un impulso alcista.
    • Entrar en una posición corta cuando hay una fuerte tendencia a la baja, una ruptura a la baja y un impulso bajista.
  6. Implementar un stop-loss dinámico para gestionar el riesgo.
  7. Visualice las señales de estrategia trazando líneas de tendencia, puntos de ruptura y señales de impulso en el gráfico.

Ventajas estratégicas

  1. La envolvente Nadaraya-Watson suaviza eficazmente los datos de precios, reduciendo las interferencias de ruido.
  2. El mecanismo de confirmación múltiple mejora la confiabilidad de la señal.
  3. La gestión dinámica del stop-loss se adapta mejor a las fluctuaciones del mercado y reduce el riesgo. El precio del stop-loss se calcula sobre la base del precio más alto/más bajo y el precio de cierre, lo que le permite ajustarse al mercado.
  4. Trazar visualmente las líneas de tendencia, los puntos de ruptura y las señales de impulso en el gráfico facilita la observación e interpretación de las señales de estrategia por parte del usuario.

Riesgos estratégicos

  1. En mercados inestables o durante inversiones de tendencia, las señales de ruptura frecuentes pueden conducir a un exceso de operaciones y pérdidas.
  2. La posición de stop loss dinámico puede no salir rápidamente de las posiciones durante las inversiones de tendencia, lo que puede dar lugar a un aumento de las reducciones.
  3. Los parámetros de la estrategia, como el ancho de banda de la envolvente Nadaraya-Watson y el umbral ADX, deben optimizarse para diferentes mercados e instrumentos.

Direcciones para la optimización de la estrategia

  1. Incorporar indicadores efectivos adicionales de determinación de tendencias, como el MACD, los sistemas de medias móviles, etc., para mejorar la precisión y la estabilidad de la identificación de tendencias.
  2. Optimizar el método dinámico de cálculo del stop loss considerando indicadores relacionados con la volatilidad como ATR y SAR para hacer que los stop loss sean más flexibles y eficaces.
  3. Desarrollar diferentes combinaciones de parámetros para diversas características del mercado, tales como tendencias o mercados de rango, para mejorar la adaptabilidad de la estrategia.
  4. Introducir un módulo de dimensionamiento de posiciones para ajustar dinámicamente los tamaños de las posiciones en función de factores como la tendencia y la volatilidad del mercado, controlando así el riesgo.

Resumen de las actividades

Esta estrategia combina la envolvente de Nadaraya-Watson para suavizar los precios con indicadores de tendencia como ADX y DI, el indicador de impulso RSI y los puntos de ruptura de precios para crear un sistema comercial integral. La gestión dinámica de stop-loss ayuda a adaptarse a los cambios del mercado y controlar el riesgo hasta cierto punto. Sin embargo, en la aplicación práctica, se debe prestar atención a la optimización de la identificación de tendencias, stop-loss dinámico y configuración de parámetros para mejorar la robustez y rentabilidad de la estrategia.


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


Relacionados

Más.