Estrategia del indicador de PB de banda media

El autor:¿ Qué pasa?, Fecha: 2024-01-17 17:10:53
Las etiquetas:

img

Resumen general

Esta estrategia calcula el indicador promedio PB y las bandas de Bollinger para determinar la relación de cruz dorada y cruz muerta entre el indicador PB y los rieles superior e inferior de las bandas de Bollinger.

Principio de la estrategia

El indicador de PB medio combina la estabilidad del sistema de promedios móviles y la sensibilidad del indicador de PB. Utiliza la diferencia entre promedios móviles rápidos y lentos de diferentes ciclos para expresar las tendencias de cambio de precios para determinar las tendencias largas y cortas.

La estrategia también utiliza el indicador de la banda de Bollinger para identificar las condiciones de sobrecompra y sobreventa del precio de las acciones. El indicador de la banda de Bollinger consta de tres curvas: tren medio, tren superior y tren inferior. El tren medio es el promedio móvil de n días; los carriles superior e inferior se calculan en función del tren medio y la volatilidad histórica. Cuando el precio de las acciones está cerca del tren superior, está en la zona de sobrecompra; cuando está cerca del tren inferior, está en la zona de sobreventa, y el área alrededor del tren medio es un rango de precios razonable para la acción.

En resumen, esta estrategia utiliza inteligentemente el indicador PB medio para determinar la tendencia alcista o bajista de los precios de las acciones, y las bandas de Bollinger como indicador auxiliar para determinar las condiciones de sobrecompra y sobreventa, para encontrar señales comerciales de la relación entre los dos indicadores.

Análisis de ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. Utilice el indicador PB medio para determinar los cambios en las tendencias de los precios, alta sensibilidad
  2. Asistir con bandas de Bollinger para identificar zonas de sobrecompra y sobreventa para mejorar la precisión de la determinación de los puntos de entrada y salida
  3. Lógica de estrategia sencilla, fácil de implementar
  4. Los datos obtenidos a partir de pruebas previas muestran rendimientos relativamente satisfactorios

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Tanto el indicador PB medio como las bandas de Bollinger se basan en datos históricos para el cálculo.
  2. El indicador PB y las bandas de Bollinger son muy sensibles a la configuración de los parámetros.
  3. Los cambios macroeconómicos en el entorno durante el período de aplicación de la estrategia, como la crisis económica, los cambios en las políticas, etc., pueden causar el fracaso de la estrategia.

Para abordar los riesgos anteriores, se pueden utilizar métodos como la optimización de la configuración de parámetros, el estricto stop loss, teniendo en cuenta los factores macro, la monitorización manual para mitigar el riesgo.

Direcciones de optimización

Las direcciones de optimización para esta estrategia incluyen:

  1. Optimizar los parámetros del indicador PB medio y las bandas de Bollinger para encontrar la mejor combinación de parámetros
  2. Añadir otros indicadores de filtración, como el MACD, el KDJ, etc., para mejorar el rendimiento de la estrategia
  3. Añadir mecanismos de stop loss para controlar eficazmente las pérdidas individuales
  4. Incorporar indicadores de marcos de tiempo más grandes para determinar la tendencia principal para evitar el comercio contra la tendencia

Conclusión

El rendimiento general de esta estrategia es bastante satisfactorio. Con el indicador PB medio como su núcleo y las bandas de Bollinger para ayudar a determinar las señales comerciales, tiene una lógica simple, alta sensibilidad y resultados de backtest decentes. Al continuar optimizando los ajustes de parámetros, agregar otros indicadores de asistencia, implementar un stop loss estricto, etc., la rentabilidad y estabilidad de la estrategia se pueden mejorar aún más.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BandPass EOS", overlay=false, initial_capital = 1000)

src = input(close, "Source", input.source)
Period1 = input(41, "Fast Period", input.integer)
Period2 = input(54, "Slow Period", input.integer)
showBG = input(false, "Show crosses on background?", input.bool)
UseReversalStop = input(true, "Use additional triggers?", input.bool)

//Super Passband Filter
a1 = 0.0
a2 = 0.0
PB = 0.0
RMS = 0.0
if bar_index > Period1
    a1 := 5 / Period1
    a2 := 5 / Period2
    PB := (a1 - a2) * src + (a2 * (1 - a1) - a1 * (1 - a2)) * src[1] + 
       (1 - a1 + 1 - a2) * nz(PB[1]) - (1 - a1) * (1 - a2) * nz(PB[2])
    for i = 0 to 49 by 1
        RMS := RMS + PB[i] * PB[i]
        RMS
    RMS := sqrt(RMS / 40)
    RMS
z = 0

buy = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
sell = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)
signal = buy ? 1 : sell ? -1 : 0
bg = buy ? color.green : sell ? color.red : color.white
bg := showBG ? bg : na
upperFill = PB>RMS ? color.lime : na
lowerFill = PB<-RMS ? color.red : na

p1 = plot(PB,"PB",color.red)
p2 = plot(RMS,"+RMS",color.blue)
p3 = plot(-RMS,"-RMS",color.blue)
bgcolor(bg)
fill(p1,p2,upperFill)
fill(p1,p3,lowerFill)
hline(0)



//PERIOD
testStartYear = input(2018, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0)

testPeriod() => true
    
lcolor = PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z)
scolor = PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z)

c1 = (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
c2 = (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))

plot (c1 ? PB : na, style = plot.style_circles, color = color.red, linewidth = 3)
plot (c2 ? PB : na, style = plot.style_circles, color = color.green, linewidth = 3)

if (PB > PB [5] and crossover(PB, -RMS) or PB > PB [5] and crossover (PB, RMS) or PB > PB [5] and crossover (PB, z))
    strategy.entry("long", strategy.long, when = testPeriod())


if (PB < PB [5] and crossunder(PB, RMS) or PB < PB [5] and crossunder (PB, -RMS) or PB < PB [5] and crossunder (PB, z))
    strategy.entry("short", strategy.short, when = testPeriod())

    

Más.