
Cette stratégie est basée sur les hauts et les bas du PIVOT pour juger du revirement de tendance de la crypto-monnaie et appartient à la catégorie des stratégies de revirement de rupture. La stratégie calcule d’abord le plus haut prix et le plus bas prix PIVOT de l’objet pour la période la plus récente, puis juge si le prix a fait un revirement après la rupture de ces points clés, afin de capturer les changements de tendance majeurs.
Utilisez les fonctions ta.pivothigh () et ta.pivotlow () pour calculer le plus haut prix et le plus bas prix du dernier nombre de barres comme points PIVOT clés.
Si le prix dépasse le PIVOT LOW vers le haut ou le PIVOT HIGH vers le bas, il y a un renversement de tendance.
Le prix doit avoir une certaine marge de rupture par rapport au point PIVOT et franchir la barre de clôture de 150 bars pour éviter d’être piégé.
Il déclenche une condition d’achat et fait une entrée supplémentaire. Il déclenche une condition de vente et égalise les billets supplémentaires.
Cette stratégie est globalement robuste et adaptée pour capturer des retournements importants. Cependant, il est nécessaire de contrôler les risques et d’ajuster les paramètres pour les différentes devises. Il est convaincu que la stratégie peut avoir de meilleurs résultats sur la base de l’optimisation des paramètres et de la maîtrise du vent.
/*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)