Basado en la estrategia de ruptura de doble tendencia


Fecha de creación: 2024-02-19 11:52:40 Última modificación: 2024-02-19 11:52:40
Copiar: 0 Número de Visitas: 711
1
Seguir
1617
Seguidores

Basado en la estrategia de ruptura de doble tendencia

Descripción general

La estrategia de breakout de doble tendencia utiliza una combinación de indicadores técnicos, principalmente líneas de tendencia, cruces de líneas medias y breakouts de canales de precios, para identificar cambios en la tendencia del mercado y capturar oportunidades de reversión de la tendencia. La estrategia combina el seguimiento de la tendencia y las señales de ruptura, y las posiciones de entrada y salida son más estables, pero también existe cierto riesgo de falsa ruptura.

Principio de estrategia

Línea de tendencia

La estrategia primero divide la tendencia de la pluralidad en los puntos altos y bajos del eje central, indicando un potencial cambio de tendencia cuando el precio rompe la línea de tendencia. La inclinación se calcula utilizando el método ATR, lo que la hace más cercana a la fluctuación real.

La línea de la igualdad cruza

La estrategia utiliza la línea de 5 días a corto plazo y la línea de 34 días a largo plazo para construir una estrategia de cruce de líneas de media lenta. La línea de media corta es una señal de compra y la línea de media larga es una señal de venta. La línea de media rápida es utilizada para capturar tendencias a corto plazo y la línea de media lenta para seguir tendencias a largo plazo.

El canal de precios

La estrategia también establece un canal de precios de 5 días, que rompe la compra en la vía ascendente y la venta en la vía descendente, para capturar brechas de precios a corto plazo. La combinación de la línea media rápida y lenta determina la fiabilidad de la ruptura.

La combinación de las tres señales de indicadores técnicos mencionados anteriormente se utiliza en la estrategia para formar un sólido mecanismo de doble juicio y evitar errores de negociación.

Ventajas estratégicas

  1. La integración de varios indicadores técnicos determinó que la señal era más sólida y redujo los daños causados por las falsas brechas.

  2. Las líneas medias rápidas y los canales de precios permiten capturar los cambios en las tendencias de precios a corto plazo. Las líneas medias lentas y las líneas de tendencia siguen las tendencias a largo plazo y son más estables en las entradas y salidas.

  3. La estructura del código es clara, los parámetros del indicador se pueden ajustar y optimizar para diferentes períodos y variedades.

  4. Combinando el juicio de tendencia y la señal de ruptura, en un mercado de tendencia alcista, la situación más agresiva es favorable para obtener ganancias; en el ordenamiento del rango, la frecuencia de las transacciones de señales de ruptura disminuye, lo que es favorable para evitar grandes sacudidas.

Riesgo estratégico

  1. Existe un cierto riesgo de falso avance, especialmente en situaciones de fluctuación de precios, que puede provocar pérdidas.

  2. El cruce de la línea media es una señal de retraso, y si la tendencia se invierte significativamente, existe el riesgo de seguir comprando o vendiendo.

  3. La integración de varios indicadores técnicos requiere una gran cantidad de pruebas y cálculos para optimizar los parámetros, lo que consume mucho tiempo.

  • Para el riesgo de una falsa ruptura, se puede filtrar con el indicador de volumen de transacciones, por ejemplo, se necesita un aumento de volumen de transacciones para una ruptura, o el precio de cierre de una línea K no se rompe antes de la alta o baja anterior, etc.

  • Para el riesgo de seguimiento de compra alta, se pueden establecer condiciones de filtrado de indicadores de sobreventa y sobreventa, como el indicador RSI para evitar la sobreventa. o establecer una línea de stop loss para acelerar el stop loss.

  • Para los problemas de optimización de parámetros, se puede utilizar un método de aprendizaje automático para auxiliar la búsqueda de optimización, buscando la combinación óptima de parámetros en una gran cantidad de datos históricos.

Optimización de la estrategia

  1. La inclusión de un indicador de volumen de transacción o un indicador de sobreventa para determinar la fiabilidad de la tendencia y establecer condiciones de filtración estrictas para evitar pérdidas por brechas falsas.

  2. Para las diferentes variedades de transacción, ajustar la configuración de los parámetros de la línea media y los parámetros del canal de precios para que se ajusten mejor a las características de la variedad.

  3. Aumentar las estrategias de stop loss y controlar las pérdidas individuales mediante el movimiento de stop loss, el suspenso de stop loss, etc.

  4. Utiliza un método de adaptación, reduciendo la frecuencia de apertura de posiciones cuando el mercado entra en la fase de liquidación de la conmoción; aumenta la frecuencia de las transacciones cuando la tendencia es evidente.

  5. El uso de métodos de aprendizaje profundo para entrenar modelos para determinar puntos de venta y venta, complementar o sustituir los indicadores técnicos tradicionales, y utilizar la capacidad de generalización del aprendizaje profundo para buscar estrategias de negociación más efectivas.

Resumir

Esta estrategia integra varios indicadores técnicos de uso común para formar un sistema de doble juicio, que puede identificar eficazmente los cambios de tendencia y mostrar una buena estabilidad en la retroevaluación. Sin embargo, también se debe tener en cuenta el riesgo de cierta falsa ruptura, que se puede optimizar mediante el aumento de las condiciones de filtrado, la estrategia de deterioro, el ajuste de parámetros y la aplicación de métodos de aprendizaje automático.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-11 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
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/
// © FinanceUpPvtLtd

//@version=5
strategy("FINANCE UP FREE STRATEGY (+919665229664)", overlay=true)

// Script 01 - Trendlines
length_tl = input.int(14, 'Swing Detection Lookback')
mult_tl = input.float(1., 'Slope', minval=0, step=.1)
calcMethod_tl = input.string('Atr', 'Slope Calculation Method', options=['Atr', 'Stdev', 'Linreg'])
backpaint_tl = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')
upCss_tl = input(color.teal, 'Up Trendline Color', group='Style')
dnCss_tl = input(color.red, 'Down Trendline Color', group='Style')
showExt_tl = input(true, 'Show Extended Lines')

var upper_tl = 0.
var lower_tl = 0.
var slope_ph_tl = 0.
var slope_pl_tl = 0.
var offset_tl = backpaint_tl ? length_tl : 0
n_tl = bar_index
src_tl = close
ph_tl = ta.pivothigh(length_tl, length_tl)
pl_tl = ta.pivotlow(length_tl, length_tl)
slope_tl = switch calcMethod_tl
    'Atr'    => ta.atr(length_tl) / length_tl * mult_tl
    'Stdev'  => ta.stdev(src_tl, length_tl) / length_tl * mult_tl
    'Linreg' => math.abs(ta.sma(src_tl * n_tl, length_tl) - ta.sma(src_tl, length_tl) * ta.sma(n_tl, length_tl)) / ta.variance(n_tl, length_tl) / 2 * mult_tl
slope_ph_tl := ph_tl ? slope_tl : slope_ph_tl
slope_pl_tl := pl_tl ? slope_tl : slope_pl_tl
upper_tl := ph_tl ? ph_tl : upper_tl - slope_ph_tl
lower_tl := pl_tl ? pl_tl : lower_tl + slope_pl_tl
var upos_tl = 0
var dnos_tl = 0
upos_tl := ph_tl ? 0 : close > upper_tl - slope_ph_tl * length_tl ? 1 : upos_tl
dnos_tl := pl_tl ? 0 : close < lower_tl + slope_pl_tl * length_tl ? 1 : dnos_tl

// var uptl_tl = line.new(na, na, na, na, color=upCss_tl, style=line.style_dashed, extend=extend.right)
// var dntl_tl = line.new(na, na, na, na, color=dnCss_tl, style=line.style_dashed, extend=extend.right)
// if ph_tl and showExt_tl
//     uptl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? ph_tl : upper_tl - slope_ph_tl * length_tl)
//     uptl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? ph_tl - slope_tl : upper_tl - slope_ph_tl * (length_tl + 1))
// if pl_tl and showExt_tl
//     dntl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? pl_tl : lower_tl + slope_pl_tl * length_tl)
//     dntl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? pl_tl + slope_tl : lower_tl + slope_pl_tl * (length_tl + 1))

plot(backpaint_tl ? upper_tl : upper_tl - slope_ph_tl * length_tl, 'Upper', color=ph_tl ? na : upCss_tl, offset=-offset_tl)
plot(backpaint_tl ? lower_tl : lower_tl + slope_pl_tl * length_tl, 'Lower', color=pl_tl ? na : dnCss_tl, offset=-offset_tl)

plotshape(upos_tl > upos_tl[1] ? low : na, "Upper Break", shape.labelup, location.absolute, upCss_tl, text="B", textcolor=color.white, size=size.tiny)
plotshape(dnos_tl > dnos_tl[1] ? high : na, "Lower Break", shape.labeldown, location.absolute, dnCss_tl, text="B", textcolor=color.white, size=size.tiny)

alertcondition(upos_tl > upos_tl[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos_tl > dnos_tl[1], 'Downward Breakout', 'Price broke the up-trendline downward')

// Script 02 - Channel Breakout
length_channel = input.int(title="Channel Length", minval=1, maxval=1000, defval=5)
upBound_channel = ta.highest(high, length_channel)
downBound_channel = ta.lowest(low, length_channel)
if (not na(close[length_channel]))
    strategy.entry("LE-LE", strategy.long, stop=upBound_channel + syminfo.mintick, comment="LE-LE")
strategy.entry("BECH-DE", strategy.short, stop=downBound_channel - syminfo.mintick, comment="BECH-DE")

// Script 03 - MA Cross
shortlen_ma = input.int(5, "Short MA Length", minval=1)
longlen_ma = input.int(34, "Long MA Length", minval=1)
short_ma = ta.sma(close, shortlen_ma)
long_ma = ta.sma(close, longlen_ma)
plot(short_ma, color=#FF6D00, title="Short MA")
plot(long_ma, color=#43A047, title="Long MA")
plot(ta.cross(short_ma, long_ma) ? short_ma : na, color=#2962FF, style=plot.style_cross, linewidth=4, title="Cross")