Esta estrategia genera señales de negociación mediante la construcción de un canal de hipertrend de dos capas, combinado con un canal de ruptura de precios. Al mismo tiempo, utiliza la volatilidad de los precios para ajustar el ancho del canal y lograr un efecto de auto-adaptación.
Se calcula la diferencia estándar del precio y la tasa de fluctuación ATR, ajustando la anchura del canal de tendencia por encima de la tasa de fluctuación.
Construir un canal supertrend de dos capas, el canal interior más sensible y el canal exterior más estable.
Cuando el precio rompe el canal de tendencia superior de la capa interna o externa, se genera una señal de compra o venta.
El uso de una estructura de dos capas para filtrar las falsas brechas.
La tasa de fluctuación ATR se utiliza para ajustar la anchura del canal, aumentando la anchura del canal cuando aumenta la fluctuación, para lograr un efecto de auto-adaptación.
El canal Supertrend es simple y fácil de usar y permite un mejor seguimiento de las tendencias.
La estructura de doble canal mejora la calidad de la señal y filtra las falsas brechas.
La fluctuación se adapta a la amplitud del canal para adaptarlo a las diferentes condiciones del mercado.
Es fácil de implementar y de ajustar los parámetros.
Visualización de los canales y las brechas para crear señales de transacción intuitivas.
Las señales de ruptura pueden ser mal interpretadas y causar pérdidas innecesarias.
El riesgo de una negociación a la inversa es que no se pueda determinar la dirección de la tendencia.
La adaptación puede ser demasiado sensible y la adaptación puede ser demasiado amplia.
La optimización incorrecta de los parámetros puede conducir a una optimización excesiva.
Como estrategia de seguimiento de tendencias, eluddle es una estrategia que puede resultar ineficaz o perjudicial.
Prueba de la influencia de los diferentes parámetros en el efecto de la autoadaptación del canal.
En el caso de las tendencias generales, se puede combinar indicadores como la línea media para determinar la dirección de las tendencias.
Optimizar el mecanismo de confirmación de brechas para evitar falsas brechas.
Añadir estrategias de stop loss para controlar las pérdidas individuales.
Evaluar el impacto de los ajustes de los parámetros de canal en la frecuencia de las transacciones.
Los parámetros se pueden optimizar dinámicamente mediante algoritmos de aprendizaje automático.
La estrategia utiliza dos capas de auto-adaptación para capturar las tendencias de precios. La ventaja es que es simple e intuitiva, y puede seguir la tendencia de manera efectiva. Pero también existe el riesgo de algunos errores de juicio y error de juicio de tendencia.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SuperTrend Cloud Strategy", shorttitle="SuperTrend Cloud Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital = 1000)
//Inputs
multi = input(title="Multiplier", type=input.float, step=0.1, defval=3, minval=1)
period = input(title="Period", type=input.integer, step=1, defval=10, minval=1)
SelfAdjust = input(title="Self-Adjusting", type=input.bool, defval = false)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
////////////////////////////////////////////////////////////////////////////////
dev = stdev(close, period)
stdDev = (dev / close) * 100 + 1
MultDev = SelfAdjust ? multi * stdDev : multi
up_lev1 = hl2 - MultDev * atr(period)
dn_lev1 = hl2 + MultDev * atr(period)
up_lev2 = hl2 - (MultDev * 2 * atr(period))
dn_lev2 = hl2 + (MultDev * 2 * atr(period))
up_trend1 = 0.0
up_trend1 := close[1] > up_trend1[1] ? max(up_lev1, up_trend1[1]) : up_lev1
up_trend2 = 0.0
up_trend2 := close[1] > up_trend2[1] ? max(up_lev2, up_trend2[1]) : up_lev2
down_trend1 = 0.0
down_trend1 := close[1] < down_trend1[1] ? min(dn_lev1, down_trend1[1]) : dn_lev1
down_trend2 = 0.0
down_trend2 := close[1] < down_trend2[1] ? min(dn_lev2, down_trend2[1]) : dn_lev2
trend1 = 0
trend1 := close > down_trend1[1] ? 1: close < up_trend1[1] ? -1 : nz(trend1[1], 1)
trend2 = 0
trend2 := close > down_trend2[1] ? 1: close < up_trend2[1] ? -1 : nz(trend2[1], 1)
st_line1 = trend1 == 1 ? up_trend1 : down_trend1
st_line2 = trend2 == 1 ? up_trend2 : down_trend2
// Plotting
plot1 = plot(st_line1, color = trend1 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 1")
plot2 = plot(st_line2, color = trend2 == 1 ? color.green : color.red , style = plot.style_line, linewidth = 1, title = "SuperTrend 2")
fill(plot1, plot2, color = color.aqua, title = "Cloud")
buy = crossover(close, st_line1) and close > st_line2 or crossover(close, st_line2) and close > st_line1
sell = crossunder(close, st_line1) and close < st_line2 or crossunder(close, st_line2) and close < st_line1
if(buy and time_cond)
strategy.entry("long", long = true , comment="long")
if (close < st_line1 and time_cond or close < st_line2 and time_cond)
strategy.close("long")
if (not time_cond)
strategy.close_all()