Multi-Time-Frame-Super-Trend-Following-Strategie


Erstellungsdatum: 2024-01-15 11:35:47 zuletzt geändert: 2024-01-15 11:35:47
Kopie: 0 Klicks: 556
1
konzentrieren Sie sich auf
1617
Anhänger

Multi-Time-Frame-Super-Trend-Following-Strategie

Überblick

Die Strategie ist eine Strategie, bei der ein dynamischer Trendkanal mit dem ATR-Indikator für mehrere Zeitrahmen erstellt wird, um einen Trend zu verfolgen. Die Strategie erzeugt ein Signal, wenn der Preis den Kanal durchbricht, um einen größeren Trend zu erfassen, indem der Kanal ständig angepasst wird.

Strategieprinzip

Die Strategie verwendet die ATR-Indikatoren, um einen Aufwärts- und einen Abwärts-Kanal zu erstellen. Konkret ist die Aufwärts-Kanallinie das N-fache des Abschlusspreises minus der ATR-Indikatoren; die Abwärts-Kanallinie ist das N-fache des Abschlusspreises plus der ATR-Indikatoren. Die Werte von N können durch Parameter angepasst werden.

Wenn der Preis den Aufwärtskanal durchbricht, erzeugt er ein Kaufsignal; wenn der Preis den Abwärtskanal durchbricht, erzeugt er ein Verkaufsignal. Der Kanal wird an die neueste Preisdynamik angepasst, um Trendverfolgung zu ermöglichen.

Außerdem definiert die Strategie eine Trendvariable, um zu beurteilen, ob ein Trend in einem Aufwärtstrend oder in einem Abwärtstrend ist. Die Trendvariablen werden in Kombination mit der Kanallinie verwendet, um falsche Signale zu vermeiden.

Strategische Vorteile

  • Die Entwicklung der Internetpräsenz wird durch die Nutzung dynamischer Kanäle verfolgt.
  • Es ist wichtig, dass wir die Risiken der Rückschläge vermeiden und die Risiken der Rückschläge verringern.
  • Anpassungsfähig und flexibel
  • Flexibilität bei der Einrichtung mehrerer Zeitrahmen

Strategisches Risiko

  • Zu radikale Nachverfolgung kann das Risiko von Verlusten erhöhen
  • Fehl eingestellte Kanalparameter, weniger oder mehr falsche Signale
  • Die Parameter sind mit hoher Programmierkapazität angepasst

Optimierungsmethoden:

  • Reduzierung der ATR-Modalitäten zur Verringerung der Verfolgung
  • Optimierung von Parametern, um die optimale Kombination von Parametern zu finden
  • Erhöhung der Stop-Loss-Strategie und Verringerung der Einzelschäden

Richtung der Strategieoptimierung

  • Zusätzliche Filter für andere Indikatoren, um ein zuverlässiges Signal zu gewährleisten
  • Erhöhung der Stop-Loss-Strategie und Verringerung des Risikos
  • Optimierung der Parameter, um die besten Parameter zu finden
  • Optimierung der Ein- und Ausstiegszeiten, Steigerung der Gewinnquote

Zusammenfassen

Die Strategie ist insgesamt eine gute Trend-Tracking-Strategie. Sie ist in der Lage, sich dynamisch anzupassen, um zu vermeiden, dass sie nach den Höhen und Tiefen folgt. Durch Optimierung der Parameter und entsprechende Verbesserungen können die Vorteile der Strategie weiter erhöht und das Risiko verringert werden, um bessere Ergebnisse zu erzielen.

Strategiequellcode
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('超级趋势精简优化版', 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.close('BUY',comment = '卖出')
buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na