Estrategia de trading adaptativa basada en el indicador de momentum


Fecha de creación: 2024-01-05 11:43:25 Última modificación: 2024-01-05 11:43:25
Copiar: 0 Número de Visitas: 564
1
Seguir
1619
Seguidores

Estrategia de trading adaptativa basada en el indicador de momentum

Descripción general

La estrategia es una estrategia de negociación de acciones auto-adaptativa basada en indicadores de dinámica. Integra bandas de Bryn, canales de Keltner y indicadores de compresión de precios, logrando el juicio de tendencias, la identificación de puntos de ruptura y la negociación totalmente automática de la retirada de los pérdidas.

Principio de estrategia

La estrategia se basa principalmente en la construcción de canales de precios a través de la banda de Brin y el canal de Keltner, identificando que las rupturas de los canales forman una señal de negociación. Cuando el precio se rompe el canal de abajo hacia arriba, se toma una operación de apertura; cuando el precio se rompe el canal de arriba hacia abajo, se toma una operación de apertura.

Concretamente, el cinturón de Brin se correlaciona con la diferencia estándar del precio para subir y bajar; el canal de Keltner se correlaciona con el promedio del precio y el rango de fluctuación promedio para subir y bajar. Cuando ambos canales se fdopen, se considera que el mercado se correlaciona y se espera la próxima ruptura. El indicador de compresión de precios refleja si el precio está comprimido en ambos canales, y la dirección del mercado se determina en función de los valores positivos y negativos de la diferencia de compresión.

En resumen, la estrategia combina una variedad de indicadores para determinar el movimiento de los precios, formando una lógica clara de largo y corto, que puede filtrar eficazmente las brechas falsas e identificar oportunidades de negociación de alta probabilidad.

Ventajas estratégicas

  1. Integración de varios indicadores, buen juicio. La combinación de indicadores se complementan entre sí, lo que puede mejorar la precisión de la identificación.

  2. Determinación de la diferencia del indicador de compresión para reducir las falsas rupturas. La diferencia del indicador como condición auxiliar para evitar transacciones inútiles.

  3. Adaptación de la parada del canal, control eficaz del riesgo. El canal como posición de parada, puede ajustarse automáticamente según las fluctuaciones del mercado, para reducir las pérdidas.

  4. Parámetros sencillos, adecuados para la automatización. Sólo unos pocos parámetros principales, fáciles de probar y optimizar, fácil de integrar en el sistema de comercio automático.

Riesgo estratégico

  1. Cuando la conversión de múltiples espacios es frecuente, aumenta el número de transacciones. Cuando las condiciones cambian, puede ocasionar la apertura frecuente de posiciones cerradas.

  2. Los parámetros indicadores incorrectos pueden perder una buena oportunidad de entrenamiento. Se necesita una prueba y optimización adecuadas para encontrar los parámetros óptimos.

  3. Solo es adecuado para precios de acciones con una dirección clara, no para mercados extremadamente volátiles. Los indicadores son fácilmente confundidos y producen señales erróneas.

Dirección de optimización de la estrategia

  1. Aumentar el módulo de control de posición, optimizar la eficiencia de la utilización de fondos. Por ejemplo, asignar fondos según la fuerza de ruptura, etc.

  2. Aumentar el modelo de aprendizaje automático para ajustar dinámicamente los parámetros del indicador. Permitir que los parámetros del indicador se adapten automáticamente a diferentes períodos y diferentes acciones.

  3. Mejorar las estrategias de detención de pérdidas, introducir más indicadores auxiliares para determinar el momento de detener las pérdidas. Las mejoras pueden reducir el número de paradas en los puntos clave.

Resumir

La estrategia integra las bandas de Brin, los canales de Keltner y los indicadores de compresión de precios, formando una lógica de juicio clara y un sistema de control de riesgo. Combina el conocimiento de tendencias y las operaciones de ruptura, que pueden adaptarse automáticamente a la práctica e identificar oportunidades de negociación de alta probabilidad. A través de la optimización de parámetros y el aumento de condiciones auxiliares, la estrategia puede fortalecerse aún más y convertirse en una herramienta importante para el comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juliopetronilo

//@version=4
strategy("DMI/ADX/Squeeze Robot", shorttitle="DMI/ADX/SQZ", overlay=true)

// Squeeze Momentum Indicator
length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = input(true, title="Use TrueRange (KC)")

source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

ma = sma(source, lengthKC)
rangeKC = useTrueRange ? tr : (high - low)
rangema = sma(rangeKC, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz = not (sqzOn or sqzOff)

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

// DMI/ADX Plot
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="Key Level for ADX")

dirmov(len) =>
    up = change(high)
    down = -change(low)
    truerange = rma(tr, len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx_val = abs(plus - minus) / (sum == 0 ? 1 : sum) * 100
    [adx_val, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Estrategia de Trading
strategy.entry("Buy", strategy.long, when=sqzOn and crossover(up, down) and crossover(val, 0))
strategy.entry("Sell", strategy.short, when=sqzOn and crossunder(up, down) and crossunder(val, 0))
strategy.close("Buy", when=sqzOff)
strategy.close("Sell", when=sqzOff)

// Plot de los indicadores
plot(val, color=color.blue, style=plot.style_histogram, linewidth=4)
plot(0, color=noSqz ? color.blue : sqzOn ? color.black : color.rgb(236, 238, 247), style=plot.style_cross, linewidth=2)
plot(up, color=color.blue, title="+DI")
plot(down, color=color.gray, title="-DI")
plot(keyLevel, color=color.white, title="Key Level")