La estrategia se llama
Específicamente, el indicador de Momentum se utiliza para juzgar la aceleración o desaceleración de los movimientos de precios y los cambios en las tendencias.
Parte del indicador de impulso
Calcular el valor del momento de N días del precio y calcular el momento de 1 día del valor del momento. Cuando el momento de N días > 0 y el momento de 1 día > 0, es una señal larga; cuando el momento de N días < 0 y el momento de 1 día < 0, es una señal corta.
Parte del indicador SuperTrend
Calcular el valor ATR del precio, y dibujar la línea del canal ascendente y la línea del canal descendente basado en ATR. Cuando el precio rompe el canal ascendente desde abajo, es una señal larga, y cuando el precio rompe el canal descendente desde arriba, es una señal corta.
Lógico de entrada
Tomar la operación AND de la señal larga del indicador de momento y la señal larga de la SuperTendencia para generar la señal de entrada larga final cuando ambas ocurren al mismo tiempo; Tomar la operación AND de la señal corta del indicador de momento y la señal corta de la SuperTendencia para generar la señal de entrada corta final cuando ambas ocurren al mismo tiempo.
Utilice indicadores de impulso para determinar la aceleración o la desaceleración de los movimientos de precios para capturar los puntos de inversión de tendencia.
Utilice los indicadores de SuperTendencia para determinar los canales de ruptura de precios para capturar los puntos de ruptura.
La verificación mutua de dos tipos de indicadores puede reducir las señales falsas y mejorar la exactitud de las entradas.
La combinación de la lógica de salida de los dos indicadores permite el seguimiento de la tendencia de salida para evitar una salida prematura.
La configuración incorrecta de los parámetros del indicador de impulso de N días puede perder los puntos de inversión de tendencia.
La configuración incorrecta de los parámetros de SuperTrend puede dar lugar a dibujos de canales inexactos y señales falsas.
La verificación mutua de los dos indicadores puede perder algunas oportunidades.
La combinación de parámetros debe ajustarse para encontrar el par de parámetros óptimo para maximizar el potencial de la estrategia.
Soluciones correspondientes:
Utilice el análisis de avanzada para encontrar los parámetros óptimos.
Añadir módulo de optimización de parámetros para la optimización de parámetros en tiempo real.
Ajuste la lógica de combinación de los dos indicadores y considere de manera exhaustiva.
Añadir módulo de optimización de parámetros adaptativos para el ajuste en tiempo real de acuerdo con las condiciones del mercado
Añadir un modelo de aprendizaje automático para ayudar a juzgar la precisión de las señales de indicadores
Ampliar más indicadores para formar un conjunto de indicadores y utilizar el mecanismo de votación para generar señales de entrada
Utilice modelos de aprendizaje profundo en lugar de indicadores tradicionales para juicios basados en datos sobre el momento de entrada y salida
Esta estrategia combina las fortalezas de los indicadores de Momentum y SuperTrend a través de la doble verificación para mejorar la precisión de las Entradas, y utiliza indicadores para juzgar el momento de las Salidas. En comparación con el uso único de indicadores, puede reducir las señales falsas y lograr tasas de ganancia más altas. A través de la optimización de parámetros, el aprendizaje automático y otras tecnologías de extensión, todavía hay espacio para mejorar aún más la efectividad de la estrategia y merece una investigación y aplicación en profundidad.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Momentum + SuperTrend Strategy", overlay=true) // Momentum Strategy length = input(12) price = close momentum(seria, length) => mom = seria - seria[length] mom mom0 = momentum(price, length) mom1 = momentum(mom0, 1) momLongCondition = mom0 > 0 and mom1 > 0 momShortCondition = mom0 < 0 and mom1 < 0 // SuperTrend Strategy Periods = input(10) Multiplier = input(3.0) changeATR = input(true) src = input(hl2) atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 up = src - (Multiplier * atr) up1 = nz(up[1], up) up := close[1] > up1 ? max(up, up1) : up dn = src + (Multiplier * atr) dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? min(dn, dn1) : dn trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend buySignal = trend == 1 and trend[1] == -1 sellSignal = trend == -1 and trend[1] == 1 // Combined Entry Conditions longCondition = momLongCondition and buySignal shortCondition = momShortCondition and sellSignal // Strategy Entries if (longCondition) strategy.entry("MomLE", strategy.long, stop=high+syminfo.mintick, comment="MomLE") else strategy.cancel("MomLE") if (shortCondition) strategy.entry("MomSE", strategy.short, stop=low-syminfo.mintick, comment="MomSE") else strategy.cancel("MomSE") // Plot SuperTrend on the chart upPlot = plot(trend == 1 ? up : na, title="SuperTrend Up", color=color.green, linewidth=2) dnPlot = plot(trend == -1 ? dn : na, title="SuperTrend Down", color=color.red, linewidth=2) // Highlight the SuperTrend region fill(upPlot, dnPlot, color = trend == 1 ? color.new(color.green, 90) : color.new(color.red, 90), title="SuperTrend Highlight") // Plot SuperTrend Buy/Sell signals on the chart plotshape(series=buySignal, title="SuperTrend Buy Signal", color=color.green, style=shape.triangleup, size=size.small) plotshape(series=sellSignal, title="SuperTrend Sell Signal", color=color.red, style=shape.triangledown, size=size.small) // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © naveen1119