Super-ATR-Trend nach Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-19 11:41:20
Tags:

img

Übersicht

Die Super ATR Trend Following Strategie ist eine auf dem ATR-Indikator basierende Trend Following-Strategie. Sie verwendet den ATR-Indikator zur Messung der Marktvolatilität und setzt Stop Loss auf der Grundlage mehrerer ATRs, um Trends zu verfolgen.

Strategie Logik

Die Strategie berechnet zunächst den ATR-Indikator, der der gleitende Durchschnitt der Preisvolatilität in den letzten N Tagen ist, um Marktrisiko und Volatilität darzustellen.

Anschließend werden die oberen und unteren Bands auf der Grundlage des ATR-Wertes multipliziert mit einem Faktor berechnet, d. h.:close - Multiplier * ATRfür den oberen Band;close + Multiplier * ATRDies bildet einen ATR-basierten Trendkanal.

Wir beurteilen dann, ob der aktuelle Preis durch das obere oder untere Band des Kanals bricht. Wenn der Preis durch das obere Band bricht, wird er als Eintritt in einen Abwärtstrend beurteilt; wenn der Preis durch das untere Band bricht, wird er als Eintritt in einen Aufwärtstrend beurteilt. Wenn es einen Trendbruch gibt, machen wir den entsprechenden Kauf und Verkauf.

Darüber hinaus hat die Strategie ein Handelszeitrahmen festgelegt, in dem nur im angegebenen Datumszeitrahmen gehandelt wird.

Analyse der Vorteile

Diese Indikator-Kanal-Trend-Folge-Strategie hat folgende Vorteile:

  1. Die Verwendung des ATR-Indikators zur automatischen Anpassung der Stop-Loss-Position kontrolliert die Risiken wirksam
  2. ATR berücksichtigt Preisvolatilität, vernünftiger Stop-Loss
  3. Steigerung der Eingangsgenauigkeit durch Kanalbreaking
  4. Ermöglicht Anpassung der ATR-Berechnungsmethode, flexibler
  5. Die Festlegung des Handelsfensters verhindert bei bedeutenden Ereignissen ein Strategieversagen

Im Allgemeinen handelt es sich hierbei um einen einfachen und praktischen Trend nach einer Strategie, die Risiken wirksam kontrollieren und gute Renditen erzielen kann.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Der Markt kann gewaltsame Veränderungen haben, die ATR nicht rechtzeitig reagieren kann, was zu einem zu lockeren Stop-Loss führt
  2. Der Preis kann sich im Kanal bewegen, wenn die Stimmung abweicht, was das Handelsrisiko erhöht
  3. Festplatzierung kann nicht für alle Produkte geeignet sein, muss entsprechend angepasst werden
  4. SetWindow begrenzt Handelsmöglichkeiten, kann gute Trades verpassen, wenn sie nicht richtig eingestellt sind

Um diese Risiken zu kontrollieren, können wir folgende Maßnahmen ergreifen:

  1. Kombination anderer Indikatoren zur Bestimmung der Marktlage, Vermeidung der ausschließlichen Abhängigkeit von ATR
  2. Hinzufügen von Filtern zur Vermeidung eines ungültigen Ausbruchs, der ein Handelsrisiko mit sich bringt
  3. Wählen Sie den richtigen Multiplikator nach den historischen Merkmalen der verschiedenen Produkte aus
  4. Optimieren und testen Sie die Fensterparameter, um eine ordnungsgemäße Einrichtung sicherzustellen

Optimierung

Diese Strategie kann weiter optimiert werden:

  1. Einführung von Algorithmen für maschinelles Lernen zur dynamischen Optimierung von Multiplikatoren
  2. Einbeziehung von Stimmungsindikatoren usw. zur Optimierung des Kanalbereichs
  3. Zusatz einer Volumen- oder Volatilitätsbestätigung, um einen ungültigen Ausbruch zu vermeiden
  4. Verwenden Sie einen fortschrittlichen zeitbasierten Strategie-Rahmen für Backtest

Diese Optimierungen können die Stabilität und Rentabilität der Strategie weiter verbessern.

Schlussfolgerung

Insgesamt ist dies ein sehr praktischer Trend-Folge-Strategie. Es baut einen anpassungsfähigen Kanal mit ATR-Indikator und bestimmt Einträge durch Kanal-Breakouts. Die Strategie ist einfach und effektiv, um Risiken zu kontrollieren, geeignet für die Verfolgung von mittelfristigen Trends. Wir haben auch weitere Risikokontrolle und Optimierungsvorschläge vorgeschlagen, um die Strategie robuster zu machen.


/*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



Mehr