Esta estrategia utiliza el indicador de canal dinámico para determinar la dirección del mercado basado en las rupturas de canal, con el objetivo de capturar la direccionalidad de la tendencia.
La estrategia utiliza la función de entrada para establecer la longitud del período del canal en 20 días. Luego calcula el máximo más alto en los últimos 20 días como la banda superior, y el mínimo más bajo en los últimos 20 días como la banda inferior.
El área por encima de la banda superior está llena de verde, y el área por debajo de la banda inferior está llena de rojo, formando un canal dinámico.
La media móvil de 200 días (EMA) (cerca de 200) también se muestra como referencia para determinar la tendencia general.
La estrategia utiliza el EMA como referencia para juzgar la tendencia principal. Cuando el cierre está por encima de la línea de 200 días, indica una tendencia alcista. Cuando el cierre está por debajo, indica una tendencia bajista.
En una tendencia alcista, si el cierre del precio rompe la banda superior, se genera una señal larga.
La pérdida de parada larga se establece en la banda inferior o línea media en función de las reglas larga / corta.
El canal dinámico se adapta a las tendencias cambiantes del mercado.
Las señales de negociación se generan en función de las rupturas, siguiendo el principio de negociación de tendencia.
La tendencia principal está determinada por la media móvil, combinada con las rupturas del canal.
Posicionamiento flexible de stop loss basado en las condiciones del mercado.
El juicio erróneo de la tendencia principal puede desviarse del mercado.
La configuración incorrecta del período de canal aumenta el comercio incorrecto.
La pérdida de parada que se encuentre demasiado cerca del canal puede aumentar la parada.
Las señales de escape tienen un cierto retraso, posiblemente perdiendo el mejor punto de entrada.
Soluciones:
Utilice múltiples indicadores para juzgar la tendencia principal, reduciendo los errores.
Optimizar los parámetros del período del canal para los diferentes ritmos del mercado.
Ajuste la posición de stop loss para tener suficiente amortiguador.
Añadir filtros a las señales de entrada de pantalla.
Añadir más indicadores para juzgar la tendencia principal, mejorando la precisión.
Incorporar indicadores de volumen para evitar errores.
Optimizar los parámetros del período del canal para diferentes productos.
Implementar el stop de pérdida dinámico.
Añadir filtros para mejorar la calidad de la señal y evitar operaciones innecesarias.
Esta estrategia sigue el principio de la negociación de tendencias en general, utilizando canales dinámicos para determinar el rango de volatilidad y generar señales de las rupturas. Puede rastrear efectivamente los cambios de tendencia y es una estrategia de seguimiento de tendencias confiable. Pero los principales mecanismos de juicio de tendencias y de stop loss necesitan una mayor optimización y se deben agregar condiciones de filtrado para mejorar la robustez. La estrategia es adecuada para el seguimiento de tendencias a medio y largo plazo, y puede combinarse con otras estrategias en una cartera para cubrir riesgos.
/*backtest start: 2023-10-13 00:00:00 end: 2023-11-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © pratyush_trades //@version=4 strategy("Donchian Indexes", overlay=true) length = input(20) longRule = input("Higher High", "Long Entry", options=["Higher High", "Basis"]) shortRule = input("Lower Low", "Short Entry", options=["Lower Low", "Basis"]) longSL=input("Lower Low", "LONG SL", options=["Lower Low", "Basis"]) shortSL=input("Higher High", "SHORT SL", options=["Higher High", "Basis"]) hh = highest(high, length) ll = lowest(low, length) up = plot(hh, 'Upper Band', color = color.green) dw = plot(ll, 'Lower Band', color = color.red) mid = (hh + ll) / 2 midPlot = plot(mid, 'Basis', color = color.orange) fill(up, midPlot, color=color.green, transp = 95) fill(dw, midPlot, color=color.red, transp = 95) plot(ema(close,200), "ema", color=color.orange) if (close>ema(close,200)) if (not na(close[length])) strategy.entry("Long", strategy.long, stop=longRule=='Basis' ? mid : hh) if (close<ema(close,200)) if (not na(close[length])) strategy.entry("Short", strategy.short, stop=shortRule=='Basis' ? mid : ll) if (strategy.position_size>0) strategy.exit(id="Longs Exit",stop=longSL=='Basis' ? mid : ll) if (strategy.position_size<0) strategy.exit(id="Shorts Exit",stop=shortSL=='Basis' ? mid : hh)