Trendumkehrstrategie für Kryptowährungen basierend auf PIVOT-Hochs und -Tiefs


Erstellungsdatum: 2024-01-12 14:13:36 zuletzt geändert: 2024-01-12 14:13:36
Kopie: 0 Klicks: 404
1
konzentrieren Sie sich auf
1166
Anhänger

Trendumkehrstrategie für Kryptowährungen basierend auf PIVOT-Hochs und -Tiefs

Überblick

Die Strategie basiert auf PIVOT-Hochs und Tiefs, um eine Trendwende bei Kryptowährungen zu beurteilen, und gehört zu den Strategien der Breakout-Return-Klasse. Die Strategie berechnet zunächst die höchsten und niedrigsten PIVOT-Punkte des Kurses in der jüngsten Zeit und beurteilt dann, ob der Preis nach den Durchbrüchen dieser wichtigen Punkte eine Umkehr erfolgt, um große Trendänderungen zu erfassen.

Strategieprinzip

  1. Berechnung der PIVOT-Hoch- und Tiefpunkte

Mit den Funktionen ta.pivothigh () und ta.pivotlow () werden die höchsten und niedrigsten Preise der letzten bestimmten Barzahl als PIVOT-Keypoints berechnet.

  1. Durchbruch beurteilt

Wenn der Preis den PIVOT-Tiefpunkt nach oben oder den PIVOT-Hochpunkt nach unten durchbricht, wird eine Trendwende vermutet.

  1. Filterbedingungen einstellen

Der Preis muss einen gewissen Durchbruch über den PIVOT-Punkt haben und den Schlusskurs von 150 bar überschreiten, um zu vermeiden, dass er eingeschlossen wird.

  1. Ein- und Ausreise

Trigger der Kaufbedingungen, um mehrere Eintritte zu machen, Trigger der Verkaufbedingungen, um mehrere Eintritte zu ersetzen. Ähnlich wie bei der Beurteilung von Eintritt und Ausstieg von leeren Eintritten.

Analyse der Stärken

  1. Die PIVOT-Punkte sind empfindlicher auf große Trendänderungen
  2. Effektive Filter, die in einen erregenden Trend eingegliedert werden, um die Eintritt nach einer Trendwende sicherzustellen
  3. Durch die Ermittlung von PIVOT-Punkten kann der Umkehrschlag rechtzeitig erfasst werden.

Risikoanalyse

  1. Große Schwankungen können die Strategie beeinträchtigen
  2. PIVOT-Länge und Filterbedingungen müssen an unterschiedliche Spezifikationen angepasst werden
  3. Es muss sichergestellt werden, dass die Gebühren der Börse nahe an Null liegen, sonst werden die Gewinne und Verluste stark beeinträchtigt.

Optimierungsrichtung

  1. Verschiedene Kombinationen von PIVOT-Parametern können getestet werden
  2. Ein solcher Verlust kann mit einer mobilen Stop-Loss-Version kontrolliert werden.
  3. Filtersignale können in Kombination mit anderen Indikatoren beurteilt werden

Zusammenfassen

Die Strategie ist insgesamt robust und geeignet, um starke Umkehrungen zu erfassen. Es ist jedoch wichtig, die Risiken zu kontrollieren und die Parameter an die verschiedenen Währungen anzupassen. Es wird angenommen, dass die Strategie auf der Grundlage von Parameteroptimierung und Windkontrolle bessere Ergebnisse erzielen kann.

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