La estrategia se basa en un canal de banda de onda adaptativo, diseñado para dos estrategias diferentes de seguimiento de stop-loss, con verificación de retroceso sistemático en varios marcos de tiempo, y pertenece a la estrategia de comercio de seguimiento de tendencias.
Cálculo de las vías ascendentes y descendentes de los canales de banda de onda adaptados, ajustando la anchura de los canales a través de parámetros.
La estrategia de seguimiento de la ruptura, la apertura de posiciones después de que el precio rompa el canal y el cierre de pérdidas dentro del canal.
La estrategia de reversión de retorno, abre una posición cuando el precio llega al canal y se detiene cuando el precio regresa dentro del canal.
Los indicadores de la CCI ayudan a juzgar la cantidad de líneas aéreas.
El análisis de retrospectiva de marcos temporales múltiples comprobó la viabilidad de ambas estrategias.
El canal de la banda de ondas es simple e intuitivo y permite capturar las tendencias de los precios.
Las dos estrategias pueden adaptarse a diferentes situaciones del mercado y mejorar la estabilidad.
El índice CCI puede ayudar a determinar si hay más vacantes.
El retrospectivo de múltiples marcos de tiempo hace que los resultados sean más convincentes.
Las reglas de la estrategia son simples, claras y fáciles de implementar.
En caso de fallo del canal de banda ancha
Ambos tipos de estrategias tienen el riesgo de detenerse demasiado pronto o demasiado tarde.
El indicador CCI puede emitir una señal errónea.
La discrepancia en los datos de retroalimentación debe ser tratada con precaución.
Puede haber un exceso de compatibilidad en la optimización de parámetros.
Prueba diferentes parámetros para encontrar la combinación óptima de ellos.
Evaluar la adición de otros indicadores para filtrar la señal.
Optimizar las estrategias de stop loss y reducir el riesgo.
Estudiar el método de cálculo de la anchura del canal adaptado.
Se realizan revisiones en más variedades y ciclos.
Parámetros de optimización dinámica con métodos de aprendizaje automático.
La estrategia se basa en el diseño de dos estrategias de seguimiento de stop loss basadas en el canal de banda de ondas, y se realiza una verificación de retroalimentación de varios marcos de tiempo. A través de la optimización de los parámetros y la mejora de la estrategia de stop loss, se puede mejorar la estabilidad del sistema y desarrollarlo como un sistema de negociación de seguimiento de tendencias confiable y maduro.
/*backtest
start: 2022-09-13 00:00:00
end: 2023-09-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title = "Underworld Hunter", overlay=true)
len = input(75, minval=1, title="Length")
src = input(close, title="Source")
basis = 0.0
basis := na(basis[1]) ? sma(src, len) : ema(ema(ema(src,len),len),len)
mult = input(1.9, minval=0.001, maxval=50, title="Deviation")
dev = mult * stdev(src, len)
upper = basis + dev
lower = basis - dev
//CCI calculation and inputs
lengthcci = input(20, minval=1, title="Period for CCI")
ma = sma(close, lengthcci)
ccivalue = (src - ma) / (0.015 * dev(src, lengthcci))
//CCI plotting
cciover0 = ccivalue >= 100 and ccivalue <= 120
cciover1 = ccivalue > 120 and ccivalue <= 140
cciover2 = ccivalue > 140 and ccivalue <= 160
cciover3 = ccivalue > 160 and ccivalue <= 180
cciover4 = ccivalue > 180
cciunder0 = ccivalue <= -100 and ccivalue >= -120
cciunder1 = ccivalue <= -120 and ccivalue > -140
cciunder2 = ccivalue <= -140 and ccivalue > -160
cciunder3 = ccivalue <= -160 and ccivalue > -180
cciunder4 = ccivalue <= -180
plotshape(cciover0, title="CCIO0", location=location.abovebar, color=#c6ff1a, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciunder0, title="CCIU0", location=location.belowbar, color=#c6ff1a, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciover1, title="CCIO1", location=location.abovebar, color=#ffff00, transp=0,style=shape.circle, size=size.tiny)
plotshape(cciunder1, title="CCIU1", location=location.belowbar, color=#ffff00, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciover2, title="CCIO2", location=location.abovebar, color=#ff9900, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciunder2, title="CCIU2", location=location.belowbar, color=#ff9900, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciover3, title="CCIO3", location=location.abovebar, color=#ff0000, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciunder3, title="CCIU3", location=location.belowbar, color=#ff0000, transp=0, style=shape.circle, size=size.tiny)
plotshape(cciover4, title="CCIO4", location=location.abovebar, color=#cc00cc, transp=0,style=shape.circle, size=size.tiny)
plotshape(cciunder4, title="CCIU4", location=location.belowbar, color=#cc00cc, transp=0,style=shape.circle, size=size.tiny)
//plotting
plot(upper, title="Upper shadow", color=color.black, transp = 30, linewidth = 4)
plot(upper, title="Upper line", color=#FF2E00, transp = 0, linewidth = 2)
plot(lower, title="Lower shadow", color=color.black, transp = 30, linewidth = 4)
plot(lower, title="Lower line", color=#FF2E00, transp = 0, linewidth = 2)
plot(basis, title="Basic line", color=color.red, transp = 50, linewidth = 2)
mean = input(title="Test Reverse to the Mean instead", type=input.bool, defval=false)
test = input(title="Enable testing", type=input.bool, defval=true)
ordersize=floor(50000/close)
if(close>upper and strategy.opentrades==0 and not mean and test)
strategy.entry("Hunt Up", strategy.long, ordersize)
if (close<upper and close[1]<upper and close[2]<upper)
strategy.close("Hunt Up", qty_percent = 100, comment = "Hunt End")
if(close<lower and strategy.opentrades==0 and not mean and test)
strategy.entry("Hunt Down", strategy.short, ordersize)
if (close>lower and close[1]>lower and close[2]>lower)
strategy.close("Hunt Down", qty_percent = 100, comment = "Hunt End")
//bounce of bands
if(close>upper and strategy.opentrades==0 and mean and test)
strategy.entry("Sneak Down", strategy.short, ordersize)
if (close<upper and close[1]<upper and close[2]<upper and close>high[1])
strategy.close("Sneak Down", qty_percent = 100, comment = "SneakEnd")
if(close<lower and strategy.opentrades==0 and mean and test)
strategy.entry("Sneak Up", strategy.long, ordersize)
if (close>lower and close[1]>lower and close[2]>lower and close<low[1])
strategy.close("Sneak Up", qty_percent = 100, comment = "Sneak End")