Super ATR tendance à la suite de la stratégie

Auteur:ChaoZhang est là., Date: le 19 février 2024 à 11h41
Les étiquettes:

img

Résumé

La stratégie de suivi de tendance Super ATR est une stratégie de suivi de tendance basée sur l'indicateur ATR. Elle utilise l'indicateur ATR pour mesurer la volatilité du marché et définit un stop loss basé sur plusieurs ATR pour suivre les tendances.

La logique de la stratégie

La stratégie calcule d'abord l'indicateur ATR, qui est la moyenne mobile de la volatilité des prix au cours des N derniers jours, pour représenter le risque et la volatilité du marché.

Ensuite, les bandes supérieure et inférieure sont calculées sur la base de la valeur ATR multipliée par un facteur, à savoir:close - Multiplier * ATRpour la bande supérieure;close + Multiplier * ATRIl forme un canal de tendance basé sur ATR.

Nous jugons ensuite si le prix actuel franchit la bande supérieure ou inférieure du canal. Si le prix franchit la bande supérieure, il est jugé comme entrant dans une tendance à la baisse; si le prix franchit la bande inférieure, il est jugé comme entrant dans une tendance à la hausse. Lorsqu'il y a une rupture de tendance, nous faisons l'achat et la vente correspondants.

En outre, la stratégie a fixé une fenêtre de temps de négociation pour ne négocier que dans la fourchette de dates spécifiée.

Analyse des avantages

Cette stratégie de suivi des tendances basée sur les canaux d'indicateurs présente les avantages suivants:

  1. L'utilisation de l'indicateur ATR pour ajuster automatiquement la position stop loss permet de contrôler efficacement les risques
  2. ATR prend en compte la volatilité des prix, un stop loss plus raisonnable
  3. Augmenter la précision d'entrée par rupture de canal
  4. Permet d'ajuster la méthode de calcul de l'ATR, plus souple
  5. La mise en place d'une fenêtre de négociation évite l'échec de la stratégie lors d'événements importants

En général, il s'agit d'une tendance simple et pratique qui suit une stratégie qui permet de contrôler efficacement les risques et d'obtenir de bons rendements.

Analyse des risques

Cette stratégie comporte également certains risques:

  1. Le marché peut connaître des changements violents auxquels ATR ne réagit pas en temps opportun, ce qui entraîne un stop loss trop lâche.
  2. Le prix peut varier dans le canal lorsque le sentiment diverge, augmentant le risque de négociation
  3. Le multiple fixe peut ne pas convenir à tous les produits et doit être ajusté en conséquence.
  4. la fenêtre limite les opportunités de négociation, peut manquer de bonnes transactions si elle n'est pas réglée correctement

Pour contrôler ces risques, nous pouvons prendre les mesures suivantes:

  1. Combiner d'autres indicateurs pour déterminer la situation du marché, éviter de se fier uniquement au RTA
  2. Ajouter des filtres pour éviter une rupture non valide introduisant un risque commercial
  3. Sélectionnez le multiplicateur approprié en fonction des caractéristiques historiques des différents produits
  4. Optimiser et tester les paramètres de fenêtre pour assurer une configuration correcte

Optimisation

Cette stratégie peut être encore optimisée:

  1. Introduire des algorithmes d'apprentissage automatique pour optimiser dynamiquement le multiplicateur
  2. Incorporer des indicateurs de sentiment, etc. pour optimiser la portée des canaux
  3. Ajouter une confirmation de volume ou de volatilité pour éviter une rupture invalide
  4. Utiliser un cadre de stratégie avancé basé sur le temps pour le backtest

Ces optimisations peuvent encore améliorer la stabilité et la rentabilité de la stratégie.

Conclusion

Dans l'ensemble, il s'agit d'une stratégie de suivi des tendances très pratique. Elle construit un canal adaptatif à l'aide de l'indicateur ATR et détermine les entrées par rupture de canal. La stratégie est simple et efficace pour contrôler les risques, adaptée au suivi des tendances à moyen et long terme. Nous avons également proposé d'autres suggestions de contrôle des risques et d'optimisation pour rendre la stratégie plus robuste.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('B厂长 @超级趋势精简优化版', overlay=true)
Periods = input(title='ATR周期', defval=10)
src = input(hl2, title='价格数据源')
Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0)
changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)')
showsignals = input(title='显示买入/卖出信号', defval=false)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false
longCondition = buySignal
if longCondition and window()
    strategy.entry('BUY', strategy.long, comment = '做多')
shortCondition = sellSignal
if shortCondition and window()
    strategy.entry('SAL', strategy.short, comment = '做空')

buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na



Plus de