Diese Strategie identifiziert Trendumkehrungen in Krypto-Assets basierend auf PIVOT-Swing-Hoch-/Tiefpunkten und Breakout-Signalen. Sie gehört zur Kategorie der Breakout-Umkehrstrategie. Die Strategie berechnet zuerst die jüngsten Höchst- und Tiefpunktpreise als PIVOT-Level, erkennt dann, ob der Preis diese Schlüsselniveaus durchbricht, was zu großen Trendänderungen führt.
Berechnung der PIVOT-Hoch-/Tiefpunkte
Verwendet ta.pivothigh (() und ta.pivotlow (()) um höchste Höchst- und niedrigste niedrige Preise über einen benutzerdefinierten Lookback-Zeitraum zu finden, um PIVOT-Punkte zu erstellen.
Identifizieren Sie Ausbruchssignale
Wenn der Preis über den PIVOT-Tiefpunkt oder unter den PIVOT-Hochpunkt bricht, wird dies in der Strategie als Trendumkehrsignal betrachtet.
Filterbedingungen festlegen
Erfordert, dass der Preis die PIVOT-Levels um eine bedeutende Entfernung durchbricht, und der Schlusskurs überschreitet die Schlusskurs 150 Bar, um Whipsaws zu vermeiden.
Ein- und Ausgänge
Trigger Kaufsignal bei Long-Bedingung, Schließung Long-Position bei Exit-Bedingung.
Die Strategie ist insgesamt robust, um große Umkehrungen zu erfassen, benötigt aber maßgeschneiderte Parameter pro Vermögenswert und Risikokontrollen.
/*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"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © nkrastins95 //@version=5 strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100) //-----------------------------------------------------------------------------------------------------------------------// tf = input.timeframe(title="Timeframe", defval="") gr="LENGTH LEFT / RIGHT" leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr) rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr) colorH = input(title="", defval=color.red, inline="Pivot High",group=gr) leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr) rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr) colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr) //-----------------------------------------------------------------------------------------------------------------------// pivotHigh(ll, rl) => maxLen = 1000 float ph = ta.pivothigh(ll, rl) int offset = 0 while offset < maxLen if not na(ph[offset]) break offset := offset + 1 ph[offset] pivotLow(ll, rl) => maxLen = 1000 float pl = ta.pivotlow(ll, rl) int offset = 0 while offset < maxLen if not na(pl[offset]) break offset := offset + 1 pl[offset] //-----------------------------------------------------------------------------------------------------------------------// ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on) pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on) drawLabel(_offset, _pivot, _style, _color) => if not na(_pivot) label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722) //-----------------------------------------------------------------------------------------------------------------------// VWAP = ta.vwap(ohlc4) longcondition = ta.crossunder(close,pl) and close > close[150] exitcondition = close > ph shortcondition = ta.crossover(close,ph) and close < close[150] covercondition = close < pl strategy.entry("long", strategy.long, when = longcondition) strategy.close("long", when = exitcondition) strategy.entry("Short", strategy.short, when = shortcondition) strategy.close("Short", when = covercondition)