La stratégie bidirectionnelle d'inversion de rupture est une stratégie d'action des prix basée sur des points pivots. Elle détecte des niveaux de prix extrêmes dans un certain nombre de barres pour identifier des opportunités d'inversion potentielles. Elle entre dans des transactions inversées lorsque les prix rompent les pivots.
La logique de base de la stratégie bidirectionnelle d'inversion de la rupture est:
Utilisationpivothigh()
etpivotlow()
pour calculer le plus haut plus haut et le plus bas plus bas dans les n barres les plus récentes comme pivots.
Lorsque le dernier niveau des barres dépasse le plus élevé du pivot, la stratégie considère que les prix peuvent s'inverser et va court.
Lorsque le dernier bas de barre dépasse le bas de pivot, la stratégie considère que les prix peuvent s'inverser et va long.
Une fois les prix inversés au-delà des pivots, le signal précédent est invalidé et attend la prochaine opportunité de trading.
De cette façon, la stratégie capte les opportunités d'inversion à court terme lorsque les prix brisent les pivots.
La stratégie bidirectionnelle d'inversion de rupture présente les avantages suivants:
Une logique simple et intuitive basée sur des points pivots.
Convient pour les marchés cryptographiques volatils pour capturer les revers à court terme.
Facile à comprendre et à maîtriser.
Faible baisse de 10%, risque sous contrôle.
Retour élevé de 350%, ratio Sharpe supérieur à 1.
La stratégie bidirectionnelle d'inversion de la rupture comporte également ces risques:
Dans les tendances soutenues, plusieurs petites pertes de stop peuvent se produire.
Les pivots ne sont pas des points d'inversion garantis, il existe des risques d'inversions manquantes ou insuffisantes.
Les prix peuvent ne pas s'inverser immédiatement après avoir rompu les pivots, les risques de poursuite des pertes.
Ne nécessite que des pivots des 4 dernières barres, la taille de l'échantillon peut être trop petite.
La liquidité du marché est ignorée, les grandes commandes peuvent avoir un impact sur les prix.
Une courte période de backtest rend incertaine la performance à long terme.
La stratégie bidirectionnelle d'inversion de la rupture peut être optimisée dans les aspects suivants:
Augmenter la période de pivot pour éviter des échantillons insuffisants.
Attendez des signaux de confirmation supplémentaires après avoir rompu les pivots pour éviter les fausses ruptures.
Ajustez dynamiquement la taille des positions en fonction des conditions de liquidité.
Incorporer des indicateurs de tendance afin d'éviter les échecs.
Ajoutez des stratégies de mouvement stop-loss pour suivre les bénéfices.
Les paramètres optimaux doivent être testés séparément pour les différents produits.
Élargir la période de backtest et utiliser les données futures pour vérifier la robustesse.
La stratégie bidirectionnelle d'inversion de rupture capte les opportunités à court terme en identifiant les points d'inversion avec des pivots de prix. L'avantage est des règles simples, un faible retrait et des rendements élevés. Mais il existe des risques tels que les inversions manquantes et la poursuite des pertes. Nous pouvons l'optimiser en élargissant les périodes d'échantillonnage, en ajoutant la confirmation d'inversion, les arrêts dynamiques, etc. Une vérification plus étendue est nécessaire pour assurer l'efficacité à long terme.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("QuantNomad - Pivot Reversal Strategy - XBTUSD - 1h", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50) // // author: QuantNomad // date: 2019-06-01 // Pivot Reversal Strategy - XBTUSD - 1h // https://www.tradingview.com/u/QuantNomad/ // https://t.me/quantnomad // leftBars = input(4) rightBars = input(4) 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) 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)