
La estrategia utiliza la línea de Brin y el indicador ATR en combinación con la línea media EMA para juzgar y formar una estrategia de negociación de ruptura dinámica. Cuando el precio sube por encima de la línea media Brin y rompe rápidamente la línea media EMA, genera una señal de compra; Cuando el precio baja por debajo de la línea media Brin y cae rápidamente por debajo de la línea media EMA, genera una señal de venta.
Calcula la línea media, la línea superior y la línea inferior de la línea de Brin. La línea media es la línea media SMA de n periodos, la línea superior es la línea media + m*n diferencias estándar de ciclo, la órbita inferior es la línea media -m*El estándar de n ciclos es diferente.
Calcular el indicador ATR para el seguimiento de los pérdidas.
Calcula el promedio del EMA de 1 ciclo y n ciclos para determinar el movimiento de los precios.
La señal de compra se genera cuando el precio cruza el tren de Brin y rápidamente cruza la línea media de la EMA de n períodos.
La señal de venta se genera cuando el precio baja por debajo de la línea de Brin y baja rápidamente por la línea media de la EMA de n períodos.
El indicador ATR se utiliza para establecer puntos de parada, para seguir la dirección de las rupturas de los precios y evitar que se corra.
La línea de Brin combinada con el ATR para el control de riesgos es eficaz.
La EMA debe calcular la dirección del movimiento de la línea media de manera rápida para evitar falsas rupturas.
Los parámetros de la estrategia se pueden ajustar para diferentes entornos de mercado.
Las señales de compra y venta son claras, la frecuencia de las transacciones es alta y es adecuada para operaciones en línea corta.
El uso de los indicadores ATR para el seguimiento de pérdidas puede detener las pérdidas a tiempo.
Cuando el rango de las líneas de browning es demasiado estrecho, puede haber más ruido en las transacciones.
El parámetro ATR está demasiado pequeño, lo que puede causar que la distancia de parada esté demasiado cerca de la toma.
Los parámetros de EMA requieren un ajuste de ciclo, que tiene efectos diferentes según el ciclo.
Los mercados de la zona del sismo podrían generar más transacciones, por lo que hay que tener cuidado.
El seguimiento de las pérdidas a veces es demasiado radical y puede causar una expansión de las pérdidas.
Se puede combinar con otros indicadores para filtrar las señales de negociación. Por ejemplo, el indicador RSI juzga sobrecompra y sobreventa, el indicador KDJ juzga desviación, etc.
Se puede considerar ajustar los parámetros de la línea de Brin en función de la dinámica de ATR para que la línea de Brin sea más adecuada para las fluctuaciones de precios.
Se puede probar el efecto de los diferentes parámetros del ciclo EMA para encontrar la combinación óptima de parámetros.
Se puede ajustar el parámetro ATR en función de la fluctuación inteligente para evitar que el stop loss sea demasiado radical.
Se puede considerar la inclusión de modelos de aprendizaje profundo para ayudar a determinar el momento de comprar o vender.
La estrategia general es clara, utiliza la línea de Brin para capturar brechas de precios, el ATR establece el límite de pérdidas, la EMA determina la dirección del movimiento, el juicio de la brecha de movimiento en todos los sentidos, puede capturar eficazmente la tendencia de precios de la línea corta. Al mismo tiempo, la combinación de varios indicadores para hacer un juicio integral, puede mejorar la calidad de la señal.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="UT Bot Strategy", overlay = true)
//CREDITS to HPotter for the orginal code. The guy trying to sell this as his own is a scammer lol.
// Inputs
a = input(1, title = "Key Vaule. 'This changes the sensitivity'")
c = input(10, title = "ATR Period")
h = input(false, title = "Signals from Heikin Ashi Candles")
src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead = false) : close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
// plot(bbr, "Bollinger Bands %B", color=#26A69A)
// band1 = hline(1, "Overbought", color=#787B86, linestyle=hline.style_dashed)
// hline(0.5, "Middle Band", color=color.new(#787B86, 50))
// band0 = hline(0, "Oversold", color=#787B86, linestyle=hline.style_dashed)
// fill(band1, band0, color=color.rgb(38, 166, 154, 90), title="Background")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := iff(src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), src - nLoss),
iff(src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), src + nLoss),
iff(src > nz(xATRTrailingStop[1], 0), src - nLoss, src + nLoss)))
pos = 0
pos := iff(src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0), 1,
iff(src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))
xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue
ema = ema(src,1)
emaFast = ema(src,144)
emaSlow = ema(src,576)
sma = sma(src, c)
above = crossover(ema, xATRTrailingStop)
below = crossover(xATRTrailingStop, ema)
smaabove = crossover(src, sma)
smabelow = crossover(sma, src)
buy = src > xATRTrailingStop and above and (bbr>20 or bbr<80)
sell = src < xATRTrailingStop and below and (bbr>20 or bbr<80)
// buy = src > xATRTrailingStop
// sell = src < xATRTrailingStop
barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop
// plot(emaFast , color = color.rgb(243, 206, 127), title="emaFast")
plot(xATRTrailingStop, color = color.rgb(233, 233, 232), title="xATRTrailingStop")
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny)
// plotshape(buy, title = "Sell", text = 'Sell', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny)
// plotshape(sell, title = "buy", text = 'buy', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny)
barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)
// strategy.entry("short", false, when = buy)
// strategy.entry("long ", true, when = sell)
strategy.entry("long", true, when = buy)
strategy.entry("short ", false, when = sell)