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.
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.
Die wichtigsten Vorteile dieser Strategie sind:
Die wichtigsten Risiken dieser Strategie sind:
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.
Die Optimierungsrichtungen für diese Strategie umfassen:
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())