Trendlinienhandel in Echtzeit basierend auf Pivotpunkten und Steigung

ATR ADX MA
Erstellungsdatum: 2024-04-26 15:34:28 zuletzt geändert: 2024-04-26 15:34:28
Kopie: 2 Klicks: 859
1
konzentrieren Sie sich auf
1617
Anhänger

Trendlinienhandel in Echtzeit basierend auf Pivotpunkten und Steigung

Überblick

Die Strategie verwendet die Stützpunkte PivotHigh und PivotLow, um die schwankenden Höhen und Tiefen der Preise zu identifizieren und auf dieser Grundlage eine Trendlinie nach oben und unten zu zeichnen. Die Steigung der Trendlinie wird durch Methoden wie ATR, Standard Differenz oder Lineare Regression berechnet und mit einem Steigungsfaktor multipliziert. Die Strategie erzeugt ein Kauf- oder Verkaufssignal, wenn der Preis die Trendlinie durchbricht.

Strategieprinzip

  1. Mit den Funktionen ta.pivothigh () und ta.pivotlow () werden die Höchstpunkte der Fluktuation () und die Tiefpunkte der Fluktuation () in den letzten Perioden ermittelt.
  2. Berechnen Sie die Steigung der Trendlinie nach der gewählten Berechnungsmethode (ATR, Standarddifferenz oder Lineare Regression) und multiplizieren Sie diese mit dem Steigungsfaktor (mult).
  3. Berechnen Sie die aktuellen Werte der Aufwärts- (upper) und Abwärts- (lower) Trendlinien anhand der Schräglage und der Basispreise.
  4. Beurteilen Sie, ob der aktuelle Schlusskurs die Trendlinie überschritten hat: Wenn der Schlusskurs über der Aufwärtstrendlinie liegt, wird ein Aufwärtsbruchsignal erzeugt; wenn der Schlusskurs unter der Abwärtstrendlinie liegt, wird ein Abwärtsbruchsignal erzeugt.
  5. Trendlinien werden auf den Diagramm gezeichnet und können ausgewählt werden, ob sie verlängert werden sollen.
  6. Handel nach dem Durchbruchsignal: Aufwärts durchbrechen, um mehrere Optionen zu eröffnen, nach unten durchbrechen, um leere Optionen zu eröffnen.

Strategische Vorteile

  1. Die Strategie erzeugt Handelssignale, die auf objektiven Fakten des Preisverhaltens (Basispunkte und Trendlinien) basieren und eine gewisse Zuverlässigkeit und Stabilität aufweisen.
  2. Die Schräglage der Trendlinie kann sich dynamisch an die Volatilität des Marktes anpassen, um sich an unterschiedliche Marktbedingungen anzupassen.
  3. Der Benutzer hat die Möglichkeit, die Methode zur Berechnung der Schräglage und die Einstellung der Parameter flexibel zu wählen, um die Leistung der Strategie zu optimieren.
  4. Die Strategie bietet sowohl Echtzeit- als auch Verzögerungssignalmodus, um die Bedürfnisse verschiedener Benutzer zu erfüllen.
  5. Die integrierte Warnfunktion hilft dem Benutzer, rechtzeitig Zugang zu Handelsmöglichkeiten zu erhalten.

Strategisches Risiko

  1. In unsicheren Märkten oder bei unklaren Trends kann diese Strategie häufig falsche Signale erzeugen, was zu einer Verringerung der Profitabilität führt.
  2. Die Performance einer Strategie hängt von der Parameter-Einstellung ab, bei der unangemessene Parameter dazu führen können, dass die Strategie fehlschlägt oder zu viele Trades erzeugt werden.
  3. In der Verspätungssignalmodus kann es zu Unterschieden zwischen den tatsächlichen Transaktionsergebnissen und den historischen Testergebnissen kommen, da es eine Rückmessung gibt.

Richtung der Strategieoptimierung

  1. Die Einführung von mehr technischen Indikatoren oder Merkmalen des Preisverhaltens, wie Handelsvolumen, Volatilität usw., um die Bestätigung von Signalen zu unterstützen und die Signalqualität zu verbessern.
  2. Filterung von Handelssignalen durch Berücksichtigung von Faktoren wie der Dauer des Trendliniebruchs, der Brechbreite und derartigen, um falsche Signale zu reduzieren.
  3. Optimierung des Positionsmanagements und der Risikokontrolle, z. B. Positionsgröße an die Stärke von Markttrends oder die Dynamik der Volatilität anpassen und angemessene Stop-Loss- und Stop-Stop-Positionen einrichten.
  4. Optimierung der Parameter, z. B. durch die Verwendung von maschinellen Lern- oder Optimierungsalgorithmen, um die optimale Kombination von Parametern zu finden.

Zusammenfassen

Die Strategie nutzt die Stützpunkte und die Trendlinie und baut ein echtes Trendlinie-Handelssystem auf. Durch die Erfassung von Trendlinie-Break-Ereignissen kann die Strategie in den frühen Phasen der Trendentstehung handeln. Obwohl die Strategie einige Vorteile hat, ist auf ihre Risiken in turbulenten Märkten zu achten und die Stabilität und Profitabilität der Strategie durch die Einführung von mehr Informationen, optimierter Signalfilterung und Positionsverwaltung weiter zu verbessern.

Strategiequellcode
/*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')

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