
La stratégie de suivi de la tendance du super ATR est une stratégie de suivi de la tendance basée sur l’indicateur ATR. Elle utilise l’indicateur ATR pour mesurer la volatilité du marché et permet le suivi de la tendance avec plusieurs fois l’ATR comme ligne de stop-loss.
La stratégie commence par calculer l’indicateur ATR, qui est une moyenne mobile de la volatilité des cours des actions au cours des derniers N jours, pour représenter le risque et la volatilité du marché. La stratégie nous permet de modifier la méthode de calcul de l’ATR, en choisissant le calcul de l’ATR ordinaire ou de la méthode SMA.
On multiplie ensuite par un multiple la valeur ATR de la voie d’accès et de descente pour calculer l’accès:close - Multiplier * ATRLe calcul de la descente:close + Multiplier * ATR❚ Ce qui constitue un canal de tendance basé sur l’indicateur ATR ❚
Nous jugeons ensuite si le prix actuel a franchi la voie de la hausse ou de la baisse. Si le prix a franchi la voie de la hausse, il est considéré comme entrant dans une tendance à la baisse; si le prix a franchi la voie de la baisse, il est considéré comme entrant dans une tendance à la hausse.
En outre, la stratégie définit des fenêtres de temps de négociation, qui permettent de négocier uniquement pendant une période donnée.
Cette stratégie de suivi des tendances basée sur des canaux d’indicateurs présente les avantages suivants:
Dans l’ensemble, il s’agit d’une stratégie de suivi de tendance simple et pratique qui permet de contrôler efficacement les risques tout en obtenant de meilleurs rendements.
Cette stratégie comporte également des risques, principalement:
Pour maîtriser ces risques, nous pouvons prendre les mesures suivantes:
Il y a encore de la place pour optimiser cette stratégie:
Grâce à ces optimisations, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées.
Cette stratégie est une stratégie de suivi de tendance très pratique. Elle utilise l’indicateur ATR pour construire un canal d’adaptation et pour juger du moment de l’achat et de la vente en cas de rupture de canal. La stratégie est simple à utiliser, elle permet de contrôler efficacement le risque et convient au suivi des tendances à long terme.
/*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