La stratégie de trading de rupture contrariaire est une stratégie qui prend des signaux contraires basés sur des hausses ou des baisses de prix consécutives pour aller long lorsque la condition courte est remplie ou aller court lorsque la condition longue est remplie.
La stratégie est principalement mise en œuvre à travers les éléments suivants:
Définir les périodes consécutives de hausse et de baisse des prix, c'est-à-dire les périodes consécutives de hausse et de baisse des prix.
Calculer la hausse et la baisse du prix actuel par rapport au prix de la période précédente. Calculer la durée des périodes de hausse ou de baisse consécutives actuelles basées sur la hausse et la baisse.
Définir la plage de temps de backtesting pour limiter la stratégie à fonctionner uniquement dans le temps de backtesting à travers time_cond.
Configurez l'heure de négociation quotidienne pour limiter les signaux de négociation à être émis uniquement dans le délai imparti via timetobuy.
Lorsque le cycle ascendant consécutif atteint la longueur définie, émettre un signal long via strategy.long. Lorsque le cycle descendant consécutif atteint la longueur définie, émettre un signal court via strategy.short.
Les prix de stop loss et de take profit peuvent être définis. Fixer des stops à court terme pour les positions longues et des stops à long terme pour les positions courtes. Fixer des profits à long terme pour les positions longues et des profits à court terme pour les positions courtes.
Les messages de signaux commerciaux peuvent être réglés pendant l'envoi.
Émettre des signaux longs ou courts lorsque les conditions sont remplies en fonction des paramètres et des niveaux de prix ci-dessus.
Cette stratégie de rupture contraire présente les avantages suivants:
Capture les points d'inversion des prix. L'opération contraire peut obtenir de bons profits. Les opérations dans la direction opposée lorsque le prix forme une tendance peuvent profiter des inversions de prix.
Paramètres configurables flexibles. Les paramètres tels que les périodes consécutives peuvent être ajustés, les niveaux de stop loss et de take profit peuvent être définis, le délai de négociation peut être limité. Les paramètres peuvent être optimisés en fonction des conditions du marché.
Le fait d'établir un stop loss et un take profit à l'avance aide à contrôler les risques de trading après un long ou un short.
Les messages commerciaux facilitent le trading automatisé.
L'ajout de paramètres d'intervalle de temps de backtesting permet d'observer facilement la performance de la stratégie dans différentes conditions de marché.
La stratégie comporte également des risques à prendre en compte:
Évitez les événements d'actualité importants. Les tendances des prix sont imprévisibles lors des annonces majeures, provoquant des signaux et des pertes longs et courts simultanés. Les principales versions économiques doivent être évitées.
Moins efficace lorsque les retours ne sont pas clairs, moins efficace lorsque les tendances sont ambiguës, le trading inverse doit être utilisé avec prudence.
L'optimisation doit éviter une dépendance excessive aux données de backtesting, qui ne représentent pas les tendances futures. Les paramètres doivent être ajustés de manière appropriée lors de la négociation en direct.
Une fréquence de négociation élevée présente des risques de surtrading.
Les stratégies de stop loss et de take profit peuvent être optimisées pour réduire les risques.
La stratégie peut être encore optimisée dans les aspects suivants:
Ajouter la détection des tendances pour éviter les renversements aléatoires sur les marchés non en tendance, en utilisant la volatilité, les canaux, etc. pour évaluer les tendances et capturer les renversements.
Optimiser les arrêts et les prises pour les ajuster en fonction de la volatilité du marché, en utilisant des méthodes basées sur le pourcentage, ATR ou autres méthodes adaptatives.
Ajoutez une analyse du volume pour éviter les faux signaux provenant uniquement des tendances des prix.
Diversification du portefeuille sur plusieurs produits pour réduire le risque d'un seul actif.
Optimisation des paramètres et apprentissage automatique: collectez plus de données historiques et utilisez l'apprentissage automatique pour optimiser automatiquement les paramètres pour des stratégies plus robustes.
La stratégie de rupture contrariaire fournit un bon signal de trading en capturant les renversements de prix par le biais d'opérations contrariaires. Les avantages incluent une configuration flexible, un contrôle des risques et une aptitude au trading automatisé.
/*backtest start: 2023-10-17 00:00:00 end: 2023-10-24 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Strategy strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash) consecutiveBarsUp = input(1, title='Consecutive Bars Up') consecutiveBarsDown = input(1, title='Consecutive Bars Down') price = close ups = 0.0 ups := price > price[1] ? nz(ups[1]) + 1 : 0 dns = 0.0 dns := price < price[1] ? nz(dns[1]) + 1 : 0 // Strategy Backtesting startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date') finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date') time_cond = true //Time Restriction Settings startendtime = input("", title='Time Frame To Enter Trades') enableclose = input(false, title='Enable Close Trade At End Of Time Frame') timetobuy = true timetoclose = true // Stop Loss & Take Profit Tick Based enablesltp = input(false, title='Enable Take Profit & Stop Loss') stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100 takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100 longStop = strategy.position_avg_price - stopTick shortStop = strategy.position_avg_price + stopTick shortTake = strategy.position_avg_price - takeTick longTake = strategy.position_avg_price + takeTick plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL") plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL") plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit") plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit") // Alert messages message_enterlong = input("", title="Long Entry message") message_entershort = input("", title="Short Entry message") message_closelong = input("", title="Close Long message") message_closeshort = input("", title="Close Short message") // Strategy Execution if (dns >= consecutiveBarsDown) and time_cond and timetobuy strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong) if (ups >= consecutiveBarsUp) and time_cond and timetobuy strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort) if strategy.position_size < 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closelong) if strategy.position_size > 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closeshort) if strategy.position_size < 0 and enablesltp and time_cond strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong) if strategy.position_size > 0 and enablesltp and time_cond strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)