
La estrategia determina la relación entre el promedio de PB y la baja de la banda de Brin, y genera una señal de compra y una señal de venta. Cuando el indicador de PB se eleva, se genera una señal de compra; cuando el indicador de PB se eleva, se genera una señal de venta.
El indicador central de la estrategia es el indicador de PB promedio. El indicador de PB promedio combina la estabilidad del sistema de medias y la sensibilidad del indicador de PB, que utiliza la diferencia entre dos medias periódicas diferentes para expresar la tendencia de los cambios en los precios, lo que permite ver la situación de la carencia.
La estrategia también utiliza el indicador de la banda de Brin para determinar las tendencias de sobreventa y sobrecompra en el precio de las acciones. El indicador de la banda de Brin se compone de tres curvas: la media, la media y la media. La media es una media móvil de n días; la media y la media se calculan a través de la media y la tasa de fluctuación histórica.
En resumen, la estrategia utiliza el índice de PB promedio para determinar la tendencia al alza y a la baja de los precios de las acciones, y el índice de Brin para determinar el exceso de compra y venta, buscando puntos de venta y compra en la relación de indicadores combinados, es una estrategia típica de comercio de indicadores numéricos.
Las principales ventajas de esta estrategia son:
Los principales riesgos de esta estrategia son:
Para los riesgos mencionados anteriormente, se puede evitar el riesgo mediante la configuración de parámetros optimizados, la detención estricta, la consideración de los factores ambientales generales y la supervisión artificial.
La estrategia se puede optimizar en las siguientes áreas:
La estrategia tiene un buen funcionamiento general, con el índice de PB promedio como núcleo, con el apoyo de la banda de Brin para determinar el punto de compra y venta. La operación es simple, la sensibilidad es alta y el rendimiento de la retroalimentación es excelente. Mediante la configuración de parámetros de optimización continua, la adición de otras medidas de ayuda de indicadores y el estricto cierre de pérdidas, se puede mejorar aún más la rentabilidad y la estabilidad de la estrategia.
/*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())