Stratégie de trading de suivi de tendance basée sur les canaux ATR et d'écart type


Date de création: 2024-01-05 16:34:27 Dernière modification: 2024-01-05 16:34:27
Copier: 0 Nombre de clics: 931
1
Suivre
1617
Abonnés

Stratégie de trading de suivi de tendance basée sur les canaux ATR et d’écart type

Aperçu

Cette stratégie, nommée stratégie de suivi de la tendance ATR, est une stratégie de négociation de suivi de la tendance basée sur un arrêt et une perte basés sur l’amplitude de fluctuation réelle moyenne (ATR) et utilisant le canal d’écart standard pour déterminer le moment d’entrée sur le marché. Cette stratégie s’applique aux produits financiers avec une tendance évidente, tels que les indices boursiers, les devises et les marchandises.

Principe de stratégie

La stratégie utilise l’indicateur ATR pour définir le prix d’arrêt. L’indicateur ATR reflète les fluctuations du marché et permet de définir dynamiquement la distance d’arrêt. La stratégie calcule la valeur ATR en entrant le cycle et le multiplicateur ATR, puis en multipliant le multiplicateur comme distance d’arrêt.

ATR线 = 前一日ATR线 ± nLoss(nLoss = nATRMultip * ATR值)

若收盘价 > ATR线,ATR线上调至收盘价 - nLoss 
若收盘价 < ATR线,ATR线下调至收盘价 + nLoss

Les lignes ATR peuvent ainsi être ajustées dynamiquement en fonction des fluctuations des prix, permettant ainsi un stop loss suivi de la tendance.

Outre les arrêts ATR, la stratégie utilise également le canal d’écart standard pour déterminer le moment de la mise en bourse. La formule de calcul du canal d’écart standard est:

中线 = ATR止损线
上轨 = 中线 + n倍标准差
下轨 = 中线 - n倍标准差  

Faire plus lorsque le prix dépasse la ligne médiane de bas en haut; faire moins lorsque le prix dépasse la ligne médiane de haut en bas.

Avantages stratégiques

Le plus grand avantage de cette stratégie réside dans le fait que l’utilisation de l’indicateur ATR comme outil de stop loss permet d’ajuster dynamiquement la distance de stop loss en fonction de la volatilité du marché, de suivre la tendance des stops loss et de contrôler efficacement les risques.

En outre, en combinant la courbe de décalage standard avec le timing d’entrée sur le marché, on peut éviter de fréquenter les ouvertures de positions en raison de fluctuations mineures des prix.

Risques et solutions

Le principal risque de cette stratégie est que la distance de stop est trop longue pour contrôler efficacement le risque; la distance de stop est trop longue pour être gênée par le bruit du marché. Pour ce risque, on peut ajuster le cycle ATR et le multiplicateur ATR pour trouver la meilleure combinaison de paramètres.

Un autre risque est que les paramètres de la voie de déviation standard soient mal configurés, ce qui peut entraîner une fréquence d’ouverture trop élevée ou trop faible. Les paramètres optimaux peuvent être trouvés en optimisant les paramètres.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Optimisation des cycles ATR et des multiples. En ajustant ces deux paramètres, vous obtiendrez un meilleur effet de stop-loss.

  2. Optimisation des paramètres de la voie de décalage standard. Optimisation des paramètres de la voie de décalage pour obtenir de meilleurs résultats d’entrée sur le marché.

  3. Ajouter des filtres sur d’autres indicateurs. Vous pouvez ajouter des indicateurs tels que les moyennes mobiles, la forme de la ligne K, qui aident à déterminer la direction de la tendance et à améliorer le taux de profit.

  4. Optimisation de la logique d’ouverture et de paix des positions. Il est possible de définir que lorsque le prix atteint le canal de la différence standard, il n’ouvre la position qu’après avoir confirmé à nouveau la forme de la ligne K.

Résumer

Cette stratégie est basée sur l’indicateur ATR pour réaliser le suivi de la tendance des arrêts de perte et pour déterminer le moment de la mise sur le marché avec l’aide du canal standard d’écart. L’avantage de la stratégie réside dans l’efficacité du contrôle du risque de perte, adapté à la négociation de tendance.

Code source de la stratégie
/*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)