Stratégie d'inversion du pivot

Auteur:ChaoZhang est là., Date: 2023-12-18 16h59 et 59 min
Les étiquettes:

img

Résumé

Cet article analysera en détail une stratégie de trading d'inversion basée sur des points pivots.

La logique de la stratégie

La stratégie repose principalement sur deux indicateurs: Pivot High et Pivot Low.pivothigh()etpivotlow()Lorsque l'on calcule les points de pivot, les périodes à gauche et à droite doivent être réglées; cette stratégie utilise 4 périodes à gauche et 2 périodes à droite.

Lorsque le prix le plus élevé de la dernière période est inférieur au pivot le plus élevé de la période précédente, cela indique une opportunité d'inversion. Si les positions précédentes étaient courtes, les positions longues doivent maintenant être considérées pour capitaliser sur l'inversion. De même, lorsque le prix le plus bas de la dernière période est supérieur au pivot le plus bas précédent, les positions longues existantes doivent envisager d'inverser en court.

Plus précisément, la logique principale est la suivante:

  1. Calcul des niveaux de pivot haut/bas
  2. Identifier les percées
    1. Long lorsque le prix dépasse le bas de pivot
    2. Short lorsque le prix tombe en dessous du pivot high
  3. Définir les niveaux de stop-loss

Analyse des avantages

Le principal avantage de cette stratégie est l'identification de points de renversement de tendance potentiels, ce qui est crucial pour les traders de renversement.

En outre, la stratégie comporte des conditions pour les entrées longues et courtes, couvrant différentes situations de marché afin d'éviter de manquer des opportunités.

En résumé, c'est une stratégie d'inversion très pratique.

Analyse des risques

Malgré les efforts déployés pour réduire les faux signaux, toute stratégie basée sur la rupture est inévitablement confrontée à des problèmes tels que des signaux prématurés ou en retard.

En outre, les points pivots ne peuvent pas non plus garantir des niveaux de support / résistance parfaits. La malchance pourrait entraîner un stop loss juste avant le niveau de support réel. Une telle incertitude autour des zones clés ne peut pas être complètement évitée.

Des possibilités d'amélioration

  1. Optimisation de la période. Les périodes actuelles gauche/droite sont définies à 4 et 2.

  2. Ajoutez des filtres avec d'autres indicateurs. Par exemple, combinez avec le volume pour ne considérer que les ruptures comme valables lorsqu'elles sont accompagnées d'un volume croissant. Cela aide à éviter les fausses ruptures.

  3. La zone de tampon peut être ajustée dynamiquement en fonction de la volatilité du marché.

  4. Opérer uniquement dans la direction de la tendance. Actuellement, les conditions longues / courtes sont en parallèle. Une optimisation est de long dans les tendances haussières et de court dans les tendances baissières basées sur un filtre de tendance.

Conclusion

En résumé, il s'agit d'une stratégie d'inversion simple mais pratique. Identifier les points pivots sur une période et surveiller les percées des prix constitue l'idée de base pour détecter les inversions de tendance potentielles.

La logique de la stratégie est simple et facile à mettre en œuvre. Les paramètres sont également intuitifs pour les débutants. Des optimisations supplémentaires peuvent améliorer les performances pour l'adoption.


/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Pivot Reversal Strategy", overlay=true)

leftBars  = input(4)
rightBars = input(2)

// backtesting date range
from_day   = input(defval = 1,    title = "From Day",   minval = 1)
from_month = input(defval = 3,    title = "From Month", minval = 1)
from_year  = input(defval = 2018, title = "From Year",  minval = 1970)

to_day     = input(defval = 1,    title = "To Day",     minval = 1)
to_month   = input(defval = 1,    title = "To Month",   minval = 1)
to_year    = input(defval = 2100, title = "To Year",    minval = 1970)

time_cond = (time > timestamp(from_year, from_month, from_day, 00, 00)) and (time < timestamp(to_year, to_month, to_day, 23, 59))

swh = pivothigh(leftBars, rightBars)
swl = pivotlow(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 and time_cond)
    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 and time_cond)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Plus de