Il s'agit d'une stratégie de suivi de tendance basée sur la volatilité des prix. Elle utilise la plage moyenne vraie (ATR) pour définir des lignes de stop loss pour les fluctuations des prix. ATR reflète la volatilité et le niveau de risque des prix. Lorsque le prix dépasse la ligne de stop loss, la stratégie juge l'inversion de tendance et prend les actions correspondantes pour ouvrir des positions ou arrêter les pertes.
La stratégie calcule d'abord la plage moyenne réelle (ATR) sur une certaine période. Ensuite, en fonction de la direction de la tendance actuelle du prix, si c'est une tendance haussière, la ligne de stop loss est réglée sur le prix le plus élevé actuel moins n fois l'ATR; si c'est une tendance baissière, la ligne de stop loss est réglée sur le prix le plus bas actuel plus n fois l'ATR. La valeur n peut être ajustée via des paramètres pour contrôler la distance entre la ligne de stop loss et le prix.
Lorsque le prix franchit la ligne de stop loss de la tendance haussière ou de la tendance baissière, la tendance est jugée avoir changé.
En résumé, la stratégie utilise la volatilité des prix pour définir des lignes de stop loss afin d'obtenir un jugement précis des changements de tendance.
Dans l'ensemble, il s'agit d'une bonne mise en œuvre d'algorithme pour définir des lignes de stop loss basées sur la volatilité des prix. Sa précision dans le jugement des tendances des prix est élevée et il peut capturer les points tournants clés des tendances. Il offre également une certaine marge de manœuvre pour l'ajustement des paramètres pour une meilleure adaptabilité. En tant que stratégie de stop loss, il peut éviter efficacement les risques d'inversions de marché et vaut la peine d'être appliqué dans le trading en direct.
/*backtest start: 2022-11-30 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h 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/ // © laptevmaxim92 //@version=4 strategy("Volatility stop strategy", overlay=true) length = input(20) mult = input(2, step = 0.1) utp = input(false, "Use take profit?") pr = input(100, "Take profit pips") usl = input(false, "Use stop loss?") sl = input(100, "Stop loss pips") fromday = input(01, defval=01, minval=01, maxval=31, title="From Day") frommonth = input(01, defval=01, minval= 01, maxval=12, title="From Month") fromyear = input(2000, minval=1900, maxval=2100, title="From Year") today = input(31, defval=01, minval=01, maxval=31, title="To Day") tomonth = input(12, defval=12, minval=01, maxval=12, title="To Month") toyear = input(2039, minval=1900, maxval=2100, title="To Year") use_date = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)) atr_ = atr(length) max_ = 0.0 min_ = 0.0 max1 = 0.0 max1 := max(nz(max_[1]), close) min1 = 0.0 min1 := min(nz(min_[1]), close) vstop = 0.0 is_uptrend = false is_uptrend_prev = false is_uptrend_prev := nz(is_uptrend[1], true) stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_ vstop_prev = nz(vstop[1]) vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop) is_uptrend := close - vstop1 >= 0 is_trend_changed = is_uptrend != is_uptrend_prev max_ := is_trend_changed ? close : max1 min_ := is_trend_changed ? close : min1 vstop := is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1 plot(vstop, color = is_uptrend ? color.green : color.red, linewidth=2) longCondition = is_uptrend if (longCondition and use_date) strategy.entry("BUY", strategy.long) shortCondition = not is_uptrend if (shortCondition and use_date) strategy.entry("SELL", strategy.short) if (utp and not usl) strategy.exit("TP", "BUY", profit = pr) strategy.exit("TP", "SELL", profit = pr) if (usl and not utp) strategy.exit("SL", "BUY", loss = sl) strategy.exit("SL", "SELL", loss = sl) if (usl and utp) strategy.exit("TP/SL", "BUY", loss = sl, profit = pr) strategy.exit("TP/SL", "SELL", loss = sl, profit = pr)