Stratégie d'inversion de tendance des crypto-monnaies basée sur les hauts et les bas du PIVOT


Date de création: 2024-01-12 14:13:36 Dernière modification: 2024-01-12 14:13:36
Copier: 0 Nombre de clics: 691
1
Suivre
1617
Abonnés

Stratégie d’inversion de tendance des crypto-monnaies basée sur les hauts et les bas du PIVOT

Aperçu

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.

Principe de stratégie

  1. Calculer les hauts et les bas du PIVOT

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.

  1. Une avancée décisive

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.

  1. Configurer les conditions du filtre

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é.

  1. Entrée et sortie

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.

Analyse des avantages

  1. Les points PIVOT sont plus sensibles aux changements de tendance majeurs
  2. Filtre efficace pour rejoindre une tendance de choc et assurer l’entrée après un renversement de tendance
  3. Le PIVOT peut être utilisé pour détecter les points de rupture et saisir les opportunités de retournement.

Analyse des risques

  1. Les cycles majeurs peuvent facilement entraver la stratégie.
  2. La longueur du point PIVOT et les conditions de filtrage doivent être ajustées pour s’adapter à différents échantillons
  3. Il est nécessaire de s’assurer que les frais de transaction des bourses sont proches de zéro, sinon les pertes seront plus importantes.

Direction d’optimisation

  1. Différentes combinaisons de paramètres PIVOT peuvent être testées
  2. Il est possible d’ajouter un stop mobile pour contrôler les pertes individuelles.
  3. Les signaux de filtrage peuvent être jugés en combinaison avec d’autres indicateurs

Résumer

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.

Code source de la stratégie
/*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)