
La estrategia de ruptura horizontal de la tendencia de las abejas ATR es una estrategia de ruptura de línea media y corta basada en el indicador ATR generado por la señal de negociación con la banda de Brin. Se trata principalmente de monitorear los cambios de tendencia en el precio de las acciones dentro de un canal ATR ascendente y descendente de cierta amplitud, y tomar decisiones de negociación cuando se desciende o se sube a la trayectoria, en combinación con el filtro de tendencia.
La estrategia tiene tres partes principales:
Canal ATR: Calcula el rango de fluctuación del precio de las acciones a través del indicador ATR y forma un canal por encima y por debajo de ese rango. El ancho del canal se controla a través del ciclo de retorno de ATR y el factor ATRdivisor.
Línea de abeja: toma como referencia la línea central del precio de la acción. La línea central se calcula como: el promedio de las cosechas altas y bajas de ayer.
Filtrado de tendencias: calcula la tendencia de los precios a través del indicador de movimiento de desviación y establece un ciclo de señal, cuando pricesig ‘>’: pricesig[3] cuando la tendencia es al alza, cuando pricesig ‘<’ pricesig[3] cuando la tendencia es hacia abajo.
La lógica de generación de la señal de transacción específica es:
Señales múltiples: preciosig > preciosig[3] y hacer más cuando los precios bajan;
Señales en blanco: pricesig < pricesig[3] y se vacío cuando el precio se pone en marcha;
No hay transacciones en otros casos.
La estrategia también establece condiciones de stop loss para controlar el riesgo de la operación.
Las estrategias para romper la tendencia ATR de las abejas tienen las siguientes ventajas:
El uso de indicadores ATR para calcular el rango de fluctuación de los precios de las acciones, capaz de capturar dinámicamente los cambios en el mercado;
En combinación con la línea central, evaluar el precio de las acciones en horizontal y establecer puntos de ruptura de canal para evitar la persecución de alzas y bajas;
El indicador de movimiento de la diferencia para juzgar la tendencia, evitar el comercio en contra y mejorar las probabilidades de ganar.
Establecer condiciones de stop-loss para controlar el riesgo individual;
Los parámetros de la política establecen una estrategia de optimización de factores como el ancho de canal y el ciclo ATR que se puede ajustar de forma flexible.
La estrategia también tiene ciertos riesgos:
Las transacciones en línea corta son muy volátiles, con un riesgo relativamente alto, y requieren una gestión cautelosa de los fondos.
El cálculo de la amplitud de los canales ATR puede ser inexacto y puede causar transacciones erróneas cuando los precios de las acciones fluctúan fuertemente;
Los indicadores de movimiento de desviación también pueden cometer errores en el juicio de tendencias, lo que afecta la precisión de las señales de negociación.
Para los riesgos anteriores, se puede optimizar y mejorar mediante el ajuste adecuado de los parámetros del canal ATR, el aumento de la frecuencia de las señales de filtración de tendencias, etc.
La estrategia puede ser optimizada en los siguientes aspectos:
Ajuste la anchura del canal ATR, reduzca o aumente los parámetros atRDivisor, comprima o amplíe el alcance del canal.
Ajuste los parámetros del ciclo de retroceso ATR para cambiar la sensibilidad del canal a las fluctuaciones recientes.
Ajuste de los parámetros de ciclo de la señal de tendencia para mejorar la precisión de la determinación de la tendencia de la pluralidad.
La inclusión de otros indicadores para la verificación multifactorial mejora la calidad de las señales de negociación.
Optimizar los algoritmos de stop loss y mejorar el control de riesgos.
La estrategia de ruptura de la tendencia de las abejas ATR, que integra el uso de análisis de la amplitud de fluctuación de los precios de las acciones y indicadores de determinación de tendencias para controlar el riesgo de las transacciones al mismo tiempo que captura los puntos calientes del mercado, es una estrategia cuantitativa de alta flexibilidad y gran adaptabilidad. La estrategia puede mejorarse continuamente a través de ajustes de parámetros y optimización de señales, y tiene un amplio potencial de uso.
/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Strategy - Bobo PATR Swing", overlay=true, default_qty_type = strategy.fixed, default_qty_value = 1, initial_capital = 10000)
// === STRATEGY RELATED INPUTS AND LOGIC ===
PivottimeFrame = input(title="Pivot Timeframe", defval="D")
ATRSDtimeFrame = input(title="ATR Band Timeframe (Lower timeframe = wider bands)", defval="D")
len = input(title="ATR lookback (Lower = bands more responsive to recent price action)", defval=13)
myatr = atr(len)
dailyatr = request.security(syminfo.tickerid, ATRSDtimeFrame, myatr[1])
atrdiv = input(title="ATR divisor (Lower = wider bands)", type=float, defval=2)
pivot0 = (high[1] + low[1] + close[1]) / 3
pivot = request.security(syminfo.tickerid, PivottimeFrame, pivot0)
upperband1 = (dailyatr / atrdiv) + pivot
lowerband1 = pivot - (dailyatr / atrdiv)
middleband = pivot
// == TREND CALC ===
i1=input(2, "Momentum Period", minval=1) //Keep at 2 usually
i2=input(20, "Slow Period", minval=1)
i3=input(5, "Fast Period", minval=1)
i4=input(3, "Smoothing Period", minval=1)
i5=input(4, "Signal Period", minval=1)
i6=input(50, "Extreme Value", minval=1)
hiDif = high - high[1]
loDif = low[1] - low
uDM = hiDif > loDif and hiDif > 0 ? hiDif : 0
dDM = loDif > hiDif and loDif > 0 ? loDif : 0
ATR = rma(tr(true), i1)
DIu = 100 * rma(uDM, i1) / ATR
DId = 100 * rma(dDM, i1) / ATR
HLM2 = DIu - DId
DTI = (100 * ema(ema(ema(HLM2, i2), i3), i4)) / ema(ema(ema(abs(HLM2), i2), i3), i4)
signal = ema(DTI, i5)
// === RISK MANAGEMENT INPUTS ===
inpTakeProfit = input(defval = 0, title = "Take Profit (In Market MinTick Value)", minval = 0)
inpStopLoss = input(defval = 100, title = "Stop Loss (In Market MinTick Value)", minval = 0)
// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
// === STRATEGY - LONG POSITION EXECUTION ===
enterLong = (((low<=lowerband1) and (close >lowerband1)) or ((open <= lowerband1) and (close > lowerband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal>signal[3])
exitLong = (high > middleband)
strategy.entry(id = "Long", long = true, when = enterLong)
strategy.close(id = "Long", when = exitLong)
// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort = (((high>=upperband1) and (close < upperband1)) or ((open >= upperband1) and (close < upperband1))) and (strategy.opentrades <1) and (atr(3) > atr(50)) and (signal<signal[3])
exitShort = (low < middleband)
strategy.entry(id = "Short", long = false, when = enterShort)
strategy.close(id = "Short", when = exitShort)
// === STRATEGY RISK MANAGEMENT EXECUTION ===
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss)
// === CHART OVERLAY ===
plot(upperband1, color=#C10C00, linewidth=3)
plot(lowerband1, color=#23E019, linewidth=3)
plot(middleband, color=#00E2E2, linewidth=3)
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)