Esta estrategia combina el indicador de Pivot Points y las Bandas de Rango Verdadero Promedio para implementar un sistema de seguimiento de tendencias a través de múltiples marcos de tiempo.
Esta estrategia se basa principalmente en dos indicadores:
Puntos de pivote: Calcula el promedio de los precios más altos, más bajos y de cierre durante un cierto período para determinar los puntos de pivote superiores e inferiores.
Bandas de rango verdadero promedio: Calcula el rango verdadero promedio durante un cierto período, y mueve la banda media hacia arriba y hacia abajo para formar un canal.
La lógica de negociación específica es:
Cuando el precio atraviesa el canal del rango verdadero promedio, tome posiciones largas o cortas a lo largo de la dirección de la ruptura. Cuando el precio regrese al canal, cierre posiciones. También, cuando el precio atraviese el punto de pivote superior, tome posición larga; cuando el precio atraviese el punto de pivote inferior, tome posición corta.
La estrategia también introduce el concepto de línea media de pivote.Cuando el beneficio obtenido rompe la línea media, es posible cerrar la mitad de la posición para obtener algún beneficio y controlar el riesgo.
La estrategia tiene las siguientes ventajas:
Diseño de marcos de tiempo múltiples: los ciclos largos e intermedios determinan las tendencias principales, mientras que los ciclos cortos determinan entradas específicas.
La línea media de pivote proporciona una opción para cerrar la mitad de la posición, bloqueando un poco de ganancia al tiempo que garantiza operaciones ganadoras.
Las bandas de rango verdadero promedio proporcionan niveles de stop loss claros.
La estrategia tiene pocos parámetros, fácil de optimizar para las mejores combinaciones de parámetros.
Evita al máximo el riesgo de fallas.
La estrategia también tiene algunos riesgos:
Los riesgos de stop loss son mayores durante la alta volatilidad del mercado.
La línea media puede desencadenar con frecuencia el stop loss durante las consolidaciones de mercado.
Las selecciones incorrectas de parámetros pueden dar lugar a operaciones demasiado pocas o demasiado frecuentes.
Las rupturas recientes del punto de pivote pueden ser falsas.
La estrategia se puede optimizar a partir de los siguientes aspectos:
Combine más filtros como volumen y bandas de Bollinger para evitar señales falsas.
Optimizar los períodos de Pivot Points y ATR para encontrar las mejores combinaciones de parámetros.
Establezca una zona tampón alrededor de la línea media para evitar disparos frecuentes.
Añadir filtros de tendencia adecuados para garantizar el funcionamiento a lo largo de las tendencias principales.
En general, esta es una estrategia de seguimiento de tendencias muy práctica. Soluciona las dificultades comunes de stop loss de los sistemas de tendencias y logra una negociación de tendencias controlada por el riesgo. Es una estrategia altamente recomendable. Con las optimizaciones y mejoras adecuadas, su rendimiento puede mejorarse aún más.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m 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/ // © LonesomeTheBlue //@version=4 strategy("Pivot Point SuperTrend [Backtest]", overlay = true) prd = input(defval = 2, title="Pivot Point Period", minval = 1, maxval = 50) Factor=input(defval = 3, title = "ATR Factor", minval = 1, step = 0.1) Pd=input(defval = 10, title = "ATR Period", minval=1) usecenter = input(defval = false, title="Use Center Line to Close Entry for 50%") showpivot = input(defval = false, title="Show Pivot Points") showcl = input(defval = false, title="Show PP Center Line") float ph = na float pl = na ph := pivothigh(prd, prd) pl := pivotlow(prd, prd) plotshape(ph and showpivot, text="H", style=shape.labeldown, color=na, textcolor=color.red, location=location.abovebar, transp=0, offset = -prd) plotshape(pl and showpivot, text="L", style=shape.labeldown, color=na, textcolor=color.lime, location=location.belowbar, transp=0, offset = -prd) float center = na center := center[1] float lastpp = ph ? ph : pl ? pl : na if lastpp if na(center) center := lastpp else center := (center * 2 + lastpp) / 3 Up = center - (Factor * atr(Pd)) Dn = center + (Factor * atr(Pd)) float TUp = na float TDown = na Trend = 0 TUp := close[1] > TUp[1] ? max(Up, TUp[1]) : Up TDown := close[1] < TDown[1] ? min(Dn, TDown[1]) : Dn Trend := close > TDown[1] ? 1: close < TUp[1]? -1: nz(Trend[1], 1) Trailingsl = Trend == 1 ? TUp : TDown linecolor = Trend == 1 and nz(Trend[1]) == 1 ? color.lime : Trend == -1 and nz(Trend[1]) == -1 ? color.red : na plot(Trailingsl, color = linecolor , linewidth = 2, title = "PP SuperTrend") plot(showcl ? center : na, color = showcl ? center < hl2 ? color.blue : color.red : na, transp = 0) bsignal = Trend == 1 and Trend[1] == -1 ssignal = Trend == -1 and Trend[1] == 1 if bsignal strategy.entry("Buy", true, 2, comment = "Buy") if ssignal strategy.entry("Sell", false, 2, comment = "Sell") if strategy.position_size == 2 and center > hl2 and usecenter strategy.close("Buy", qty_percent = 50, comment = "close buy entry for 50%") if strategy.position_size == -2 and center < hl2 and usecenter strategy.close("Sell", qty_percent = 50, comment = "close sell entry for 50%") if change(Trend) strategy.close_all()