Echtzeit-Trendlinie-Handel auf Basis von Pivot-Punkten und Neigung

Schriftsteller:ChaoZhang, Datum: 2024-04-26 15:34:28
Tags:ATRADX- Nein.

img

Übersicht

Diese Strategie verwendet Pivotpunkte (PivotHigh und PivotLow), um Swing-Hoch- und Tiefpunkte im Preis zu identifizieren und zieht auf der Grundlage dieser Punkte Aufwärts- und Abwärtstrendlinien. Die Neigung der Trendlinien wird mit Methoden wie ATR (Average True Range), Standardabweichung oder lineare Regression berechnet und dann durch einen Neigungsfaktor angepasst.

Strategieprinzip

  1. Verwenden Sie die Funktionen ta.pivothigh (() und ta.pivotlow (()) zur Erkennung von Swing-Highs (ph) und Swing-Lows (pl) über einen bestimmten Rückblickzeitraum.
  2. Die Steigung der Trendlinien wird anhand der gewählten Berechnungsmethode (ATR, Standardabweichung oder lineare Regression) berechnet und durch Multiplikation mit einem Steigungsfaktor (Mult) angepasst.
  3. Anhand der Preise der Steigung und des Drehpunkts berechnen Sie die aktuellen Werte der Aufwärts- (oberen) und der Abwärts-Trendlinie (unten).
  4. Bestimmung, ob der aktuelle Schlusskurs eine Trendlinie durchbrochen hat: Wenn der Schlusskurs über der Aufwärtstrendlinie liegt, wird ein Aufwärtstrendsignal erzeugt; wenn der Schlusskurs unter der Abwärtstrendlinie liegt, wird ein Abwärtstrendsignal erzeugt.
  5. Zeichnen Sie die Trendlinien auf dem Diagramm mit der Möglichkeit, die Linien zu verlängern.
  6. Handel auf Basis der Breakout-Signale: Long bei einem Aufbruch und Short bei einem Abbruch.

Strategische Vorteile

  1. Die Strategie erzeugt Handelssignale, die auf objektiven Fakten des Preisverhaltens (Pivotpunkte und Trendlinien) basieren und ein gewisses Maß an Zuverlässigkeit und Stabilität bieten.
  2. Die Neigung der Trendlinien kann dynamisch anhand der Marktvolatilität angepasst werden, um sich an unterschiedliche Marktbedingungen anzupassen.
  3. Die Benutzer können flexibel die Methode zur Berechnung der Steigung und die Parameter-Einstellungen wählen, um die Strategieleistung zu optimieren.
  4. Die Strategie bietet sowohl Echtzeit- als auch Verzögerungssignalmodi, um den Bedürfnissen verschiedener Nutzer gerecht zu werden.
  5. Die eingebaute Warnfunktion kann den Nutzern helfen, Handelschancen rechtzeitig zu erfassen.

Strategische Risiken

  1. In unruhigen Märkten oder wenn die Trends unklar sind, kann die Strategie häufig falsche Signale erzeugen, was zu einer geringeren Rentabilität führt.
  2. Die Performance der Strategie hängt von den Parameter-Einstellungen ab; unangemessene Parameter können dazu führen, dass die Strategie fehlschlägt oder zu übermäßigen Trades führt.
  3. Im verzögerten Signalmodus können sich die tatsächlichen Handelsergebnisse aufgrund des Vorhandenseins von Backtesting von den historischen Testergebnissen unterscheiden.

Strategieoptimierungsrichtlinien

  1. Einführung von mehr technischen Indikatoren oder Merkmalen des Preisverhaltens, wie Handelsvolumen und Volatilität, um Trendlinie-Breakout-Signale zu bestätigen und die Signalqualität zu verbessern.
  2. Filtern Sie Handelssignale, indem Sie Faktoren wie Dauer und Ausmaß von Trendlinie-Ausbrüchen berücksichtigen, um falsche Signale zu reduzieren.
  3. Optimierung des Positionsmanagements und der Risikokontrolle, z. B. dynamische Anpassung der Positionsgröße anhand der Trendstärke oder Volatilität und Festlegung angemessener Stop-Loss- und Take-Profit-Niveaus.
  4. Optimieren von Parametern mit Hilfe von Machine Learning oder Optimierungsalgorithmen, um die besten Parameterkombinationen zu finden.

Zusammenfassung

Diese Strategie nutzt Drehpunkte und Trendlinie Neigungen, um ein Echtzeit-Trendlinie-Trading-System zu konstruieren. Durch die Erfassung von Trendline-Breakout-Ereignissen kann die Strategie in den frühen Stadien der Trendbildung handeln. Obwohl die Strategie bestimmte Vorteile hat, ist es immer noch notwendig, sich ihrer Risiken in unruhigen Märkten bewusst zu sein und die Robustheit und Rentabilität der Strategie weiter zu verbessern, indem mehr Informationen eingeführt werden, die Signalfilterung, das Positionsmanagement und andere Methoden optimiert werden.


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

//@version=5
strategy(" only Ajay ", overlay=true)

//------------------------------------------------------------------------------
//Settings
//------------------------------------------------------------------------------{
length = input.int(14, 'Swing Detection Lookback')
mult = input.float(1., 'Slope', minval = 0, step = .1)
calcMethod = input.string('Atr', 'Slope Calculation Method', options = ['Atr','Stdev','Linreg'])
backpaint = input(true, tooltip = 'Backpainting offset displayed elements in the past. Disable backpainting to see real time information returned by the indicator.')

//Style
upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style')
dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style')
showExt = input(true, 'Show Extended Lines')

//------------------------------------------------------------------------------}
//Calculations
//------------------------------------------------------------------------------{
var upper = 0.
var lower = 0.
var slope_ph = 0.
var slope_pl = 0.

var offset = backpaint ? length : 0

n = bar_index
src = close

ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)

//Slope Calculation Method
slope = switch calcMethod
    'Atr'    => ta.atr(length) / length * mult
    'Stdev'  => ta.stdev(src,length) / length * mult
    'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult

//Get slopes and calculate trendlines
slope_ph := ph ? slope : slope_ph
slope_pl := pl ? slope : slope_pl

upper := ph ? ph : upper - slope_ph
lower := pl ? pl : lower + slope_pl

var upos = 0
var dnos = 0
upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos
dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos

//------------------------------------------------------------------------------}
//Extended Lines
//------------------------------------------------------------------------------{
// var uptl  = line.new(na,na,na,na, color = upCss, style = line.style_dashed, extend = extend.right)
// var dntl  = line.new(na,na,na,na, color = dnCss, style = line.style_dashed, extend = extend.right)

// if ph and showExt
//     uptl.set_xy1(n-offset, backpaint ? ph : upper - slope_ph * length)
//     uptl.set_xy2(n-offset+1, backpaint ? ph - slope : upper - slope_ph * (length+1))

// if pl and showExt
//     dntl.set_xy1(n-offset, backpaint ? pl : lower + slope_pl * length)
//     dntl.set_xy2(n-offset+1, backpaint ? pl + slope : lower + slope_pl * (length+1))

//------------------------------------------------------------------------------}
//Plots
//------------------------------------------------------------------------------{
plot(backpaint ? upper : upper - slope_ph * length, 'Upper', color = ph ? na : upCss, offset = -offset)
plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset)

//Breakouts
upBreakout = upos > upos[1]
dnBreakout = dnos > dnos[1]

if (upBreakout)
    strategy.entry("Up Breakout", strategy.long)

if (dnBreakout)
    strategy.entry("Down Breakout", strategy.short)

//------------------------------------------------------------------------------}
//Alerts
//------------------------------------------------------------------------------{
alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward')

//------------------------------------------------------------------------------}


Verwandt

Mehr