Les ressources ont été chargées... Je charge...

Stratégie d'inversion des points pivots importants

Auteur:ChaoZhang est là., Date: 2024-01-29 14:58:15
Les étiquettes:

img

Résumé

Cette stratégie optimise la stratégie traditionnelle d'inversion des points pivots en calculant l'ATR et en définissant des filtres ATR pour éliminer les points pivots insignifiants, et ne négocie que sur ceux qui sont vraiment importants.

La logique de la stratégie

La logique de base est d'identifier les points de pivot significatifs.

  1. Calculer l'ATR et définir le facteur de filtre ATR atr_mult.
  2. Traversez un certain nombre de barres à gauche (définies par les barres gauche), si le pivot de pointe est supérieur à tout pivot élevé + ATR*atr_mult à gauche, le pivot est invalide.
  3. Traverser un certain nombre de barres à droite (défini par rightBars), si le pivot de pointe est supérieur à tout pivot élevé + ATR*atr_mult à droite, le pivot est invalide.
  4. Si le pivot de pointe reste valide après les essais ci-dessus, il doit être renvoyé comme pivot de pointe important.

La logique pour calculer les pivots significatifs est similaire.

Après avoir obtenu les pivots significatifs, allez court lorsque le prix dépasse un pivot de pic important, et allez long lorsqu'il dépasse un pivot de creux important.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. Le filtre ATR et atr_mult peut éliminer les fluctuations insignifiantes et ne négocier que des pivots vraiment importants, en évitant les transactions inutiles.
  2. Le paramètre dynamique ATR permet d'ajuster automatiquement la fourchette de négociation sur les marchés volatils, ce qui empêche une sur- négociation.
  3. L'inversion des points pivots elle-même a un taux de gain et une rentabilité relativement élevés.

Analyse des risques

Les principaux risques sont les suivants:

  1. Si l'ATR est trop élevé, les pivots valides pourraient être éliminés.
  2. Le risque d'être pris au piège existe toujours, il faut régler le stop loss pour contrôler le risque.
  3. Les stratégies d'inversion sont sensibles aux coûts de transaction, un stop loss raisonnable et des bénéfices raisonnables devraient être fixés.

Pour contrôler les risques ci-dessus, optimiser les aspects suivants:

  1. Optimiser les paramètres de l'ATR afin d'assurer un nombre suffisant d'opportunités commerciales.
  2. Définir des taux de stop loss et de profit raisonnables.
  3. Ajuster la taille des positions pour réduire l'impact des coûts de transaction.

Directions d'optimisation

D'autres orientations d'optimisation incluent:

  1. Combinaison avec d'autres indicateurs pour déterminer le régime du marché, évitant les renversements de négociation sur les marchés tendance.

  2. L'ajout d'algorithmes d'apprentissage automatique pour optimiser automatiquement les paramètres. Des méthodes comme les algorithmes génétiques, la forêt aléatoire peuvent être utilisées pour trouver des ensembles de paramètres optimaux.

  3. Des modèles d'entraînement utilisant des données quantitatives pour trouver la plage d'ATR optimale.

  4. Considérez la combinaison avec d'autres stratégies, en utilisant les points forts de différents types de stratégie.

Conclusion

Cette stratégie d'inversion de pivot important filtre les fluctuations mineures sans signification en calculant l'ATR et en définissant des filtres. Seules les inversions de trading sur des pivots importants peuvent améliorer efficacement la rentabilité de la stratégie. Pendant ce temps, cela augmente également la difficulté d'optimisation des paramètres. Les paramètres optimaux doivent être trouvés en tenant compte de la gamme ATR, des ratios stop loss / take profit, etc. Si elle est optimisée à fond, elle peut devenir une stratégie de trading à court terme très efficace et stable.


/*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"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

Plus de