Tendance de l'ATR à suivre une stratégie basée sur le canal d'écart type

Auteur:ChaoZhang est là., Date: 2024-01-05 16h34 et 27h
Les étiquettes:

img

Résumé

Cette stratégie, appelée ATR Trend Following Strategy, est une stratégie de trading basée sur la plage moyenne vraie (ATR) pour les signaux d'arrêt de perte et de déviation standard pour les signaux d'entrée.

Logique de négociation

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.

Les avantages

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.

Risques et solutions

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.

Des possibilités d'amélioration

La stratégie peut être améliorée par les aspects suivants:

  1. Optimiser la période ATR et le multiplicateur pour obtenir un meilleur effet stop loss.

  2. Optimiser les paramètres du canal de déviation type pour de meilleurs signaux d'entrée.

  3. 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é.

  4. 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.

Résumé

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)



Plus de