Strategie für den Indikator für Bandpass PB

Schriftsteller:ChaoZhang, Datum: 2024-01-17 17:10:53
Tags:

img

Übersicht

Diese Strategie berechnet den mittleren PB-Indikator und Bollinger-Bänder, um die goldene Kreuz- und Toten-Kreuz-Beziehung zwischen dem PB-Indikator und den oberen und unteren Schienen der Bollinger-Bänder zu bestimmen.

Strategieprinzip

Der Kernindikator der Strategie ist der mittlere PB-Indikator. Der mittlere PB-Indikator kombiniert die Stabilität des gleitenden Durchschnittssystems und die Empfindlichkeit des PB-Indikators. Er verwendet den Unterschied zwischen schnellen und langsamen gleitenden Durchschnitten verschiedener Zyklen, um Preisänderungstrends auszudrücken, um die langen und kurzen Trends zu bestimmen.

Die Strategie verwendet auch den Bollinger-Band-Indikator, um überkaufte und überverkaufte Bedingungen des Aktienpreises zu identifizieren. Der Bollinger-Band-Indikator besteht aus drei Kurven: Mittlere Schiene, obere Schiene und untere Schiene. Die mittlere Schiene ist der n-tägige gleitende Durchschnitt; die oberen und unteren Schienen werden auf der Grundlage der mittleren Schiene und der historischen Volatilität berechnet. Wenn der Aktienkurs in der Nähe der oberen Schiene ist, befindet er sich in der überkauften Zone; wenn er in der Nähe der unteren Schiene ist, befindet er sich in der überverkauften Zone, und das Gebiet um die mittlere Schiene ist eine angemessene Preisspanne für die Aktie.

Zusammenfassend lässt sich sagen, dass diese Strategie klug den mittleren PB-Indikator verwendet, um den Auf- oder Abwärtstrend der Aktienkurse zu bestimmen, und die Bollinger-Bänder als Hilfsindikator, um Überkauf- und Überverkaufszustände zu bestimmen, um Handelssignale aus der Beziehung zwischen den beiden Indikatoren zu finden.

Analyse der Vorteile

Die wichtigsten Vorteile dieser Strategie sind:

  1. Verwendung des mittleren PB-Indikators zur Bestimmung von Veränderungen der Preisentwicklung, hohe Empfindlichkeit
  2. Unterstützung bei der Ermittlung von Überkauf- und Überverkaufszonen durch Bollinger-Bänder zur Verbesserung der Genauigkeit der Bestimmung von Ein- und Ausstiegspunkten
  3. Einfache Strategie-Logik, einfach umzusetzen
  4. Die Daten aus den Backtests zeigen relativ zufriedenstellende Renditen

Risikoanalyse

Die wichtigsten Risiken dieser Strategie sind:

  1. Sowohl der mittlere PB-Indikator als auch die Bollinger Bands stützen sich bei der Berechnung auf historische Daten.
  2. Der PB-Indikator und die Bollinger-Bänder sind sehr empfindlich gegenüber den Parameter-Einstellungen.
  3. Makroumgebungsveränderungen während der Strategieumsetzung, wie Wirtschaftskrise, politische Veränderungen usw., können zum Scheitern der Strategie führen.

Um die oben genannten Risiken zu bewältigen, können Methoden wie die Optimierung der Parameter-Einstellungen, strenge Stop-Loss, Berücksichtigung von Makrofaktoren, manuelle Überwachung zur Risikominderung verwendet werden.

Optimierungsrichtlinien

Die Optimierungsrichtungen für diese Strategie umfassen:

  1. Optimierung der Parameter des mittleren PB-Indikators und der Bollinger-Bänder, um die beste Parameterkombination zu finden
  2. Hinzufügen anderer Indikatoren zur Filtration, wie MACD, KDJ usw., um die Strategieleistung zu verbessern
  3. Hinzufügen von Stop-Loss-Mechanismen zur effektiven Kontrolle einzelner Verluste
  4. Einbeziehung größerer Zeitrahmenindikatoren zur Bestimmung des Haupttrends, um den gegen den Trend gerichteten Handel zu vermeiden

Schlussfolgerung

Die Gesamtleistung dieser Strategie ist ziemlich zufriedenstellend. Mit dem mittleren PB-Indikator als Kern und Bollinger-Bändern zur Unterstützung bei der Bestimmung von Handelssignalen verfügt sie über einfache Logik, hohe Empfindlichkeit und anständige Backtest-Ergebnisse. Durch die kontinuierliche Optimierung der Parameter-Einstellungen, das Hinzufügen anderer unterstützender Indikatoren, die Implementierung eines strengen Stop-Loss usw. können die Rentabilität und Stabilität der Strategie weiter verbessert werden.


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

    

Mehr