Cette stratégie, appelée
La stratégie utilise l'indicateur ATR pour définir le prix de stop loss. ATR reflète la volatilité du marché et peut être utilisé pour définir dynamiquement la distance de stop loss. La stratégie calcule la valeur ATR en fonction de la période et du multiplicateur d'entrée de l'utilisateur ATR, et utilise la valeur ATR multipliée par le multiplicateur comme distance de stop loss.
ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)
If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss
La ligne ATR peut ainsi s'ajuster dynamiquement en fonction des fluctuations de prix pour atteindre la tendance après un stop loss.
En plus de l'ATR trailing stop, la stratégie utilise également le canal d'écart type pour déterminer les signaux d'entrée.
Middle Line = ATR Trailing Stop Line
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation
Allez long quand le prix dépasse la ligne moyenne vers le haut. Allez court quand le prix dépasse la ligne moyenne vers le bas.
L'avantage majeur de cette stratégie est qu'elle utilise l'indicateur ATR pour régler dynamiquement le stop loss en fonction de la volatilité du marché, ce qui permet une tendance après le stop loss et un contrôle efficace des risques.
En outre, l'utilisation d'un canal d'écart type pour les signaux d'entrée évite d'ouvrir fréquemment des positions en raison de petites fluctuations de prix.
Le principal risque est que si la distance d'arrêt de perte est trop grande, elle ne peut pas contrôler le risque efficacement, mais si elle est trop petite, elle peut facilement être arrêtée par le bruit du marché.
Un autre risque est l'inadéquation des paramètres du canal de déviation type, ce qui conduit à une fréquence d'entrée trop élevée/faible.
La stratégie peut être améliorée par les aspects suivants:
Optimiser la période ATR et le multiplicateur pour obtenir un meilleur effet stop loss.
Optimiser les paramètres du canal de déviation type pour de meilleurs signaux d'entrée.
Ajouter d'autres indicateurs pour le filtrage, par exemple la moyenne mobile, les modèles de chandeliers, etc., pour aider à juger de l'orientation de la tendance et à améliorer la rentabilité.
Optimiser la logique d'entrée et de sortie, par exemple, ouvrir des positions uniquement après avoir confirmé le schéma de chandelier lorsque le prix atteint les bandes de canaux.
La stratégie atteint la tendance après le stop loss basé sur l'indicateur ATR et utilise le canal d'écart standard pour les signaux d'entrée. Ses avantages résident dans une bonne capacité de contrôle des risques pour le trading de tendance. Les risques et les améliorations sont également clairement analysés. La stratégie vaut la peine d'être testée et optimisée et a une valeur commerciale pratique.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 strategy(title="Average True Range Strategy", overlay = true) nATRPeriod = input(11) //Hur många perioder ATR är på nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med xATR = atr(nATRPeriod) nLoss = nATRMultip * xATR xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss), iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss))) pos = iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), -1, iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), 1, nz(pos[1], 0))) stdev3 = 14*stdev(xATR, nATRPeriod) band1 = xATRTrailingStop+stdev3 //Översta stdev bandet band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet // Datum och tid FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2013, title = "From Year", minval = 2013) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2020, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest slut startTimeOk() => true initial_capital = 100000 take = close > xATRTrailingStop if( startTimeOk() ) and (pos == 1) //if (pos == 1) strategy.entry("Long", strategy.long, comment = "KOP") strategy.exit("Long", when = take) if( startTimeOk() ) and (pos == -1) //if (pos == -1) strategy.entry("Short", strategy.short, comment = "SALJ") barcolor(pos == -1 ? red: pos == 1 ? green : blue ) plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj plot(band1, color=red) plot(band2, color=blue)