La stratégie de trading de rupture évolutive génère des signaux de trading lorsque le prix franchit les niveaux de support et de résistance clés identifiés par les fluctuations de prix.
La stratégie utilise tout d'abordswings()
La fonction pour calculer les hauts et les bas bas bas bas basés sur la période de rétrospective.swingLookback
Les signaux longs sont déclenchés lorsque le prix dépasse le sommet de l'oscillation, et les signaux courts sont déclenchés lorsque le prix dépasse le bas de l'oscillation.
Plus précisément, un signal long est déclenché lorsque le prix de clôture est supérieur ou égal au prix élevé de l'oscillation.
La stratégie fixe également un objectif d'arrêt basé sur lesstopTargetPercent
Par exemple, le stop loss long peut être réglé à 5% sous le swing high, et le stop loss short à 5% au-dessus du swing low.
L'avantage de cette stratégie est la flexibilité d'ajuster la période de réflexion pour contrôler la fréquence des transactions. Une période de réflexion plus courte la rend plus sensible aux ruptures et augmente la fréquence des transactions. Une période de réflexion plus longue diminue la sensibilité et la fréquence des transactions, mais peut manquer des opportunités.
Les mesures d'atténuation
La stratégie peut être améliorée de plusieurs façons:
Testez différentes valeurs de période de rétrospective pour trouver les paramètres optimaux.
Testez différents délais tels que 5m, 15m, 1h pour déterminer le meilleur délai.
Optimiser le pourcentage de stop loss pour équilibrer le potentiel de profit par rapport à la gestion des risques.
Ajoutez des filtres comme le volume, la volatilité pour réduire les configurations inférieures.
Intégrer plus de mécanismes de gestion des risques comme le trailing stop, la prise de profit.
Optimisation des paramètres par l'analyse de marche avant et l'apprentissage automatique.
Introduire l'IA/apprentissage automatique pour l'optimisation automatique des paramètres.
La stratégie de trading de rupture évolutive est un système de rupture robuste et personnalisable. Il est simple à utiliser et très adaptable en ajustant le lookback et en ajoutant des filtres. Il peut facilement intégrer la gestion des risques pour le contrôle des risques.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © deperp //@version=5 // strategy("Range Breaker", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.07, pyramiding=0) // Backtest Time Period useDateFilter = input.bool(true, title="Begin Backtest at Start Date", group="Backtest Time Period") backtestStartDate = input(timestamp("1 Jan 2020"), title="Start Date", group="Backtest Time Period", tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " + "zone of the chart or of your computer.") inTradeWindow = true swingLookback = input.int(20, title="Swing Lookback", minval=3) stopTargetPercent = input.float(5, title="Stop Target Percentage", step=0.1) // Calculate lockback swings swings(len) => var highIndex = bar_index var lowIndex = bar_index var swingHigh = float(na) var swingLow = float(na) upper = ta.highest(len) lower = ta.lowest(len) if high[len] > upper highIndex := bar_index[len] swingHigh := high[len] if low[len] < lower lowIndex := bar_index[len] swingLow := low[len] [swingHigh, swingLow, highIndex, lowIndex] // Strategy logic [swingHigh, swingLow, highIndex, lowIndex] = swings(swingLookback) longCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortCondition = inTradeWindow and (ta.crossunder(close, swingLow)) if longCondition strategy.entry("Long", strategy.long) if shortCondition strategy.entry("Short", strategy.short) longStopTarget = close * (1 + stopTargetPercent / 100) shortStopTarget = close * (1 - stopTargetPercent / 100) strategy.exit("Long Stop Target", "Long", limit=longStopTarget) strategy.exit("Short Stop Target", "Short", limit=shortStopTarget) // Plot break lines // line.new(x1=highIndex, y1=swingHigh, x2=bar_index, y2=swingHigh, color=color.rgb(255, 82, 82, 48), width=3, xloc=xloc.bar_index, extend=extend.right) // line.new(x1=lowIndex, y1=swingLow, x2=bar_index, y2=swingLow, color=color.rgb(76, 175, 79, 47), width=3, xloc=xloc.bar_index, extend=extend.right) // Alert conditions for entry and exit longEntryCondition = inTradeWindow and (ta.crossover(close, swingHigh)) shortEntryCondition = inTradeWindow and (ta.crossunder(close, swingLow)) longExitCondition = close >= longStopTarget shortExitCondition = close <= shortStopTarget alertcondition(longEntryCondition, title="Long Entry Alert", message="Enter Long Position") alertcondition(shortEntryCondition, title="Short Entry Alert", message="Enter Short Position") alertcondition(longExitCondition, title="Long Exit Alert", message="Exit Long Position") alertcondition(shortExitCondition, title="Short Exit Alert", message="Exit Short Position")