
Cette stratégie est une stratégie de suivi de tendance de la ligne médiane basée sur la rupture et l’indicateur de stop-loss dynamique. La stratégie utilise la rupture de la ligne de stop-loss dynamique du prix pour déterminer la direction de la tendance, entre dans le jeu lorsque le prix franchit la ligne de stop-loss, puis utilise la ligne de stop-loss pour suivre la tendance et verrouiller les bénéfices. La stratégie vise à capturer la tendance de la ligne médiane tout en utilisant la rupture de la ligne de stop-loss dynamique pour contrôler les risques.
La stratégie utilise l’indicateur de stop dynamique Volatility Stop pour déterminer la direction de la tendance et suivre le stop. Le Stop de Volatilité calcule une ligne de stop dynamique en fonction de la gamme de fluctuations du prix.
Ainsi, la ligne de stop-loss fluctue à la hausse et à la baisse avec les fluctuations des prix, formant un canal dynamique.
Lorsque le prix atteint la limite de rupture, c’est un retour de tendance, et la stratégie ouvre une position:
Après l’ouverture de la position, la stratégie utilise la ligne de stop-loss pour suivre le stop-loss:
Lorsque le prix revient à la ligne de stop-loss, la stratégie se termine par un stop-loss.
Ainsi, la stratégie peut se dérouler au hasard, suivre en temps opportun la tendance à la reprise, tout en utilisant les arrêts de perte pour contrôler le risque.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte aussi des risques:
La réponse:
La stratégie peut être optimisée de la manière suivante:
La stratégie de rupture de tendance - arrêt dynamique est une stratégie de suivi de tendance très pratique dans l’ensemble. Elle permet de saisir les opportunités de renversement de tendance, en fonction de la tendance, tout en utilisant le risque de contrôle efficace de l’arrêt dynamique. Si les paramètres sont optimisés correctement, un meilleur rendement peut être obtenu dans des conditions de tendance.
/*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)