Il s'agit d'une stratégie de suivi de tendance basée sur la rupture et l'arrêt de la volatilité. La stratégie identifie la direction de la tendance par rupture du prix de la ligne de stop-loss dynamique. Elle entre dans le commerce lorsque le prix pénètre la ligne de stop-loss et utilise la ligne de stop-loss pour suivre les tendances et verrouiller les bénéfices.
La stratégie utilise un indicateur d'arrêt de volatilité pour déterminer la direction de la tendance et suivre l'arrêt de la perte.
La ligne stop-loss fluctue avec le prix, formant un canal dynamique.
Lorsque le prix pénètre la ligne de stop loss, il signale un renversement de tendance.
Après l'ouverture de la position, la stratégie suit le stop loss avec la ligne:
Lorsque le prix atteint à nouveau la ligne de stop loss, la position sera fermée.
De cette façon, la stratégie peut suivre les tendances en temps opportun tout en contrôlant le risque avec des arrêts.
La stratégie présente les avantages suivants:
Il y a aussi quelques risques à prendre en considération:
Les solutions:
La stratégie peut être encore optimisée dans les aspects suivants:
Dans l'ensemble, cette stratégie de rupture d'élan avec arrêt de volatilité est un système de suivi de tendance très pratique. Elle peut capturer les opportunités d'inversion de tendance et suivre la tendance tout en contrôlant efficacement le risque avec des arrêts dynamiques. Avec un réglage approprié des paramètres, elle peut obtenir un bon rendement pendant les marchés tendance. Mais certains problèmes doivent être résolus comme les arrêts trop sensibles, la fréquence de trading élevée, etc. Des optimisations supplémentaires peuvent en faire une stratégie de trading quantitative efficace et robuste.
/*backtest start: 2023-11-11 00:00:00 end: 2023-11-12 00:00:00 period: 3m basePeriod: 1m 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/ //@version=4 strategy(shorttitle='Volatility Stop Strategy',title='Volatility Stop Strategy (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) // Works better on 3h, 1h, 2h, 4h // Best time frame 2H //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" length = input(20, "Length", minval = 2) src = input(close, "Source") factor = input(3.0, "vStop Multiplier", minval = 0.25, step = 0.25) volStop(src, atrlen, atrfactor) => var max = src var min = src var uptrend = true var stop = 0.0 atrM = nz(atr(atrlen) * atrfactor, tr) max := max(max, src) min := min(min, src) stop := nz(uptrend ? max(stop, max - atrM) : min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != nz(uptrend[1], true) max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] [vStop, uptrend] = volStop(src, length, factor) //Entry strategy.entry(id="long", long = true, when = crossover(close, vStop) and window()) //Exit strategy.close("long", when = crossunder(close, vStop)) plot(vStop,"Vstop", color.black, linewidth=2)