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.
Mit den Funktionen ta.pivothigh () und ta.pivotlow () werden die höchsten und niedrigsten Preise der letzten bestimmten Barzahl als PIVOT-Keypoints berechnet.
Wenn der Preis den PIVOT-Tiefpunkt nach oben oder den PIVOT-Hochpunkt nach unten durchbricht, wird eine Trendwende vermutet.
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.
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.
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.
/*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)