La estrategia dinámica de seguimiento de pérdida de parada calcula el rango verdadero promedio (ATR) de las acciones como punto de referencia, combinado con los coeficientes ATR establecidos por los usuarios para establecer dinámicamente las líneas de pérdida de parada y las líneas de seguimiento para lograr el propósito de la pista de pérdida de parada.
La estrategia utiliza principalmente el indicador técnico ATR para calcular el rango promedio verdadero de los precios de las acciones, y combina los coeficientes ATR ingresados por los usuarios como puntos de referencia para las compras de ruptura de acciones y las ventas de stop loss. Específicamente, la estrategia primero calcula el valor ATR de la acción en los últimos 120 días, luego se multiplica por el coeficiente ATR de venta establecido por el usuario para obtener el precio de referencia de venta de stop loss, es decir, la línea de stop loss; se multiplica por el coeficiente ATR de compra para obtener el precio de referencia de compra, es decir, la línea de rastro. Cuando el precio más alto de hoy rompe la línea de rastro, se establece una posición larga utilizando una estrategia de seguimiento de tendencias; cuando el precio más bajo de hoy cae por debajo de la línea de pérdida y mantiene una posición larga, se establece una posición corta utilizando una estrategia de inversión.
La estrategia también traza líneas de stop loss y líneas de trail. Las posiciones de estas dos líneas cambiarán de acuerdo con las fluctuaciones en los precios de las acciones, con algunas capacidades de seguimiento dinámico. El indicador ATR puede reflejar mejor el rango de fluctuación real promedio de una acción.
En resumen, esta es una estrategia típica de rastro de stop loss. La idea central es establecer líneas de stop loss y líneas de rastro basadas en indicadores ATR para el seguimiento de tendencias. Las ventajas de esta estrategia son que la negociación bidireccional está habilitada y las posiciones son flexibles; los indicadores ATR ayudan a controlar los riesgos, por lo que es adecuado para acciones altamente volátiles. Sin embargo, hay algunos riesgos de seguimiento ciego debido a reglas de negociación bastante simples; la configuración inadecuada de parámetros también afecta la eficacia de la estrategia. Las optimizaciones futuras pueden centrarse en mejorar el tiempo de negociación, controlar los tamaños de las posiciones, reducir el exceso de negociación, etc. para hacer que el rendimiento de la estrategia sea más robusto.
/*backtest start: 2022-11-14 00:00:00 end: 2023-11-20 00:00:00 period: 1d basePeriod: 1h 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/ // © phobo3s //@version=4 strategy("ATR Stop Buy Strategy",shorttitle="ATR-ST",initial_capital=1000, overlay = true, default_qty_type = strategy.percent_of_equity, pyramiding = 5, default_qty_value = 20, commission_type = strategy.commission.cash_per_order, commission_value = 1, calc_on_every_tick = true) daysBack = input(defval=120, title="Days Back", type=input.integer) sellCoeff = input(defval=1.5, title="Selling Coefficent For ATR", type=input.float, minval= 0.01, step=0.1) buyCoeff = input(defval=1.2, title = "Buying Coefficent For ATR", type=input.float, minval= 0.01, step=0.1) fromDate = timenow - (daysBack*24*60*60*1000) toDate = timenow ATR = atr(14) stopLossPoint = ATR * sellCoeff buyPoint = ATR * buyCoeff StoplossLine = close[1] - stopLossPoint[1] BuyLine = close[1] + buyPoint[1] if (high > BuyLine and time >= fromDate and time <= toDate ) strategy.entry("GG", strategy.long, comment="Gir") if (low < StoplossLine and strategy.position_avg_price < close and time >= fromDate and time <= toDate ) strategy.entry("GG", strategy.short, comment="Çık") //longFlags = close < StoplossLine //shortFlags = close > BuyLine //plotshape(shortFlags, style=shape.triangledown, location=location.abovebar, color=color.red) //plotshape(longFlags, style=shape.triangleup, location=location.belowbar, color=color.blue) plot(StoplossLine) plot(BuyLine)