
La stratégie de rupture extensible est une stratégie de rupture très flexible et extensible, qui permet d’adapter les paramètres à différentes périodes de temps, d’intégrer facilement une variété de conditions de filtrage supplémentaires et de mécanismes de gestion des risques, afin d’optimiser pour des actifs spécifiques.
La stratégie a commencé par utiliserswings()La fonction calcule les hauts et les bas des fluctuations des prix actuels en fonction de la période de révision.swingLookbackParamétrage, 20 lignes K par défaut. Ensuite, lorsque le prix atteint un sommet de fluctuation, faites plus; lorsque le prix atteint un bas de fluctuation, faites moins.
La logique spécifique d’un signal plus est de faire plus lorsque le prix de clôture est supérieur ou égal à la hausse de la fluctuation. La logique spécifique d’un signal plus est de faire plus lorsque le prix de clôture est inférieur ou égal à la baisse de la fluctuation.
La stratégie prévoit également un stop-loss pour les actions de la banque.stopTargetPercentParamètres pour définir l’amplitude de stop-loss. Par exemple, le stop-loss plus est défini comme étant inférieur à 5% du prix le plus élevé et le stop-loss plus est défini comme étant supérieur à 5% du prix le plus bas.
L’avantage de cette stratégie est qu’elle permet de contrôler la fréquence des transactions en ajustant la période de reprise. Plus la période de reprise est courte, plus la fréquence des transactions est élevée.
La réponse:
Cette stratégie peut être optimisée dans les domaines suivants:
Test de différents paramètres de périodes de révision pour trouver la combinaison optimale de paramètres;
tester différents cycles de négociation, tels que 5 minutes, 15 minutes, 1 heure, etc., pour choisir le meilleur cycle;
Optimiser le stop loss et équilibrer la marge bénéficiaire et le contrôle des risques;
l’ajout de conditions de filtrage, telles que le filtrage du volume des transactions, le filtrage des baisses et des hausses, afin de réduire les signaux de mauvaise qualité;
L’intégration de mécanismes de gestion des risques tels que le stop-loss mobile et le blocage des bénéfices;
L’optimisation par paramètres, l’optimisation par étapes, la recherche aléatoire, etc. pour trouver les paramètres optimaux;
Intégrer l’apprentissage automatique pour optimiser automatiquement les paramètres à l’aide de l’IA.
La stratégie de rupture extensible est un système de rupture très pratique. Elle est simple, facile à utiliser, personnalisable et peut être optimisée pour différents actifs en ajustant la période de rétroaction et en intégrant diverses conditions de filtrage. En même temps, elle peut être facilement intégrée dans divers mécanismes de gestion des risques pour contrôler le risque de négociation.
/*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")