Stratégie de l'indicateur PB de bande passante

Auteur:ChaoZhang est là., Date: 2024-01-17 17:10:53 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie calcule l'indicateur PB moyen et les bandes de Bollinger pour déterminer la relation de croix dorée et de croix morte entre l'indicateur PB et les rails supérieur et inférieur des bandes de Bollinger.

Principe de stratégie

L'indicateur moyen PB combine la stabilité du système de moyenne mobile et la sensibilité de l'indicateur PB. Il utilise la différence entre les moyennes mobiles rapides et lentes de différents cycles pour exprimer les tendances de changement de prix afin de déterminer les tendances longues et courtes.

L'indicateur de bande de Bollinger se compose de trois courbes: le rail du milieu, le rail supérieur et le rail inférieur. Le rail du milieu est la moyenne mobile de n jours; les rails supérieurs et inférieurs sont calculés en fonction du rail du milieu et de la volatilité historique. Lorsque le prix de l'action est proche du rail supérieur, il est dans la zone de surachat; lorsqu'il est proche du rail inférieur, il est dans la zone de survente, et la zone autour du rail du milieu est une plage de prix raisonnable pour l'action.

En résumé, cette stratégie utilise habilement l'indicateur moyen PB pour déterminer la tendance haussière ou baissière des cours des actions, et les bandes de Bollinger comme indicateur auxiliaire pour déterminer les conditions de surachat et de survente, pour trouver des signaux de trading à partir de la relation entre les deux indicateurs.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Utiliser l'indicateur moyen PB pour déterminer les variations des tendances des prix, haute sensibilité
  2. Assistance avec les bandes de Bollinger pour identifier les zones de surachat et de survente afin d'améliorer la précision de la détermination des points d'entrée et de sortie
  3. Logie de stratégie simple, facile à mettre en œuvre
  4. Les résultats des tests antérieurs sont relativement satisfaisants

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. L'indicateur PB moyen et les bandes de Bollinger reposent sur des données historiques pour le calcul.
  2. L'indicateur PB et les bandes de Bollinger sont très sensibles aux paramètres.
  3. Les changements macro-environnementaux au cours de la période de mise en œuvre de la stratégie, tels que la crise économique, les changements de politique, etc., peuvent entraîner l'échec de la stratégie.

Pour lutter contre les risques susmentionnés, des méthodes telles que l'optimisation des paramètres, un stop loss strict, en tenant compte des facteurs macro, une surveillance manuelle peuvent être utilisées pour atténuer les risques.

Directions d'optimisation

Les orientations d'optimisation de cette stratégie comprennent:

  1. Optimiser les paramètres de l'indicateur PB moyen et des bandes de Bollinger pour trouver la meilleure combinaison de paramètres
  2. Ajouter d'autres indicateurs pour la filtration, tels que MACD, KDJ, etc. pour améliorer les performances de la stratégie
  3. Ajouter des mécanismes de stop loss pour contrôler efficacement les pertes uniques
  4. Incorporer des indicateurs de temps plus longs pour déterminer la tendance principale afin d'éviter de négocier contre tendance

Conclusion

La performance globale de cette stratégie est assez satisfaisante. Avec l'indicateur PB moyen comme noyau et les bandes de Bollinger pour aider à déterminer les signaux de trading, il a une logique simple, une sensibilité élevée et des résultats de backtest décents. En continuant à optimiser les paramètres, en ajoutant d'autres indicateurs d'assistance, en mettant en œuvre un stop loss strict, la rentabilité et la stabilité de la stratégie peuvent être encore améliorées.


/*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())

    

Plus de