Diese Strategie optimiert die traditionelle Umkehrstrategie der Drehpunkte, indem sie den ATR berechnet und die ATR-Filter so einstellt, dass unbedeutende Drehpunkte beseitigt und nur wirklich signifikante gehandelt werden.
Die Kernlogik besteht darin, signifikante Spitzen- und Tiefpunktpunkte zu identifizieren.
Die Logik für die Berechnung der signifikanten Trough-Pivots ist ähnlich.
Nach Erhalt der signifikanten Pivots, gehen Sie kurz, wenn der Preis einen wichtigen Spitzenpivot bricht, und gehen Sie lang, wenn er einen wichtigen Tiefpivot bricht.
Die wichtigsten Vorteile dieser Strategie sind:
Die wichtigsten Risiken sind:
Um die oben genannten Risiken zu kontrollieren, sollten folgende Aspekte optimiert werden:
Weitere Optimierungsrichtungen sind:
Kombination mit anderen Indikatoren zur Bestimmung des Marktregimes, um Handelsumkehrungen in Trendmärkten zu vermeiden.
Methoden wie genetische Algorithmen, zufälliger Wald können verwendet werden, um optimale Parametermengen zu finden.
Training-Modelle, die quantitative Daten verwenden, um den optimalen ATR-Bereich zu finden.
Überlegen Sie, ob Sie mit anderen Strategien kombinieren können, indem Sie die Stärken verschiedener Strategientypen nutzen.
Diese signifikante Pivot-Umkehrstrategie filtert bedeutungslose kleine Schwankungen durch die Berechnung von ATR und das Einstellen von Filtern aus. Nur Handelsumkehrungen bei signifikanten Pivots können die Rentabilität der Strategie effektiv verbessern. In der Zwischenzeit erhöht sie auch die Schwierigkeit der Optimierung von Parametern. Die optimalen Parameter müssen durch umfassende Berücksichtigung von ATR-Bereich, Stop-Loss-/Take-Profit-Verhältnissen usw. gefunden werden. Wenn sie gründlich optimiert wird, kann sie zu einer hoch effizienten und stabilen kurzfristigen Handelsstrategie werden.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true) // Inputs leftBars = input(4, title = 'PP Left Bars') rightBars = input(2, title = 'PP Right Bars') atr_length = input(14, title = 'ATR Length') atr_mult = input(0.1, title = 'ATR Mult') // Pivot High Significant Function pivotHighSig(left, right) => pp_ok = true atr = atr(atr_length) for i = 1 to left if (high[right] < high[right+i] + atr * atr_mult) pp_ok := false for i = 0 to right-1 if (high[right] < high[i] + atr * atr_mult) pp_ok := false pp_ok ? high[right] : na // Pivot Low Significant Function pivotLowSig(left, right) => pp_ok = true atr = atr(atr_length) for i = 1 to left if (low[right] > low[right+i] - atr * atr_mult) pp_ok := false for i = 0 to right-1 if (low[right] > low[i] - atr * atr_mult) pp_ok := false pp_ok ? low[right] : na swh = pivotHighSig(leftBars, rightBars) swl = pivotLowSig (leftBars, rightBars) swh_cond = not na(swh) hprice = 0.0 hprice := swh_cond ? swh : hprice[1] le = false le := swh_cond ? true : (le[1] and high > hprice ? false : le[1]) if (le) strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick) swl_cond = not na(swl) lprice = 0.0 lprice := swl_cond ? swl : lprice[1] se = false se := swl_cond ? true : (se[1] and low < lprice ? false : se[1]) if (se) strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)