Long-Short Linear Crossover-Strategie


Erstellungsdatum: 2024-03-27 17:52:02 zuletzt geändert: 2024-03-27 17:52:02
Kopie: 0 Klicks: 576
1
konzentrieren Sie sich auf
1617
Anhänger

Long-Short Linear Crossover-Strategie

Überblick

Die Multi-Horizontal-Linear-Cross-Strategie ist eine technische Analyse-Strategie, die auf einem linearen Regressionsmodell basiert, um die zukünftige Kursentwicklung einer Aktie vorherzusagen. Die Grundprinzipien der Strategie sind: Die Kursentwicklung folgt oft einem bestimmten linearen Trend. Durch die Berechnung der linearen Regression des Preises kann der zukünftige Preis vorhergesagt werden.

Strategieprinzip

Die Strategie berechnet zunächst die lineare Regression des Aktienpreises über einen Zeitraum. Die lineare Regression wird mit dem Minimum-Doppel-Verhältnis zusammengestellt, um eine gerade Linie zu erstellen, die die Tendenz der Preisänderungen im Laufe der Zeit darstellt. Die Strategie zeichnet dann die prognostizierte Preislinie und den aktuellen Preis auf der Grafik.

Die Strategie definiert zwei Signale:

  1. Multi-Signal: Wird ausgelöst, wenn der vorhergesagte Preis über dem aktuellen Preis liegt
  2. Hohlsignal: wird ausgelöst, wenn der vorhergesagte Preis unter dem aktuellen Preis liegt

Wenn ein Über-Signal auftritt, wird die Strategie aufgenommen. Wenn ein Über-Signal auftritt, wird die Strategie aufgelöst.

Die wichtigsten Schritte der Strategie sind:

  1. Berechnung der linearen Regression des Preises über einen Zeitraum
  2. Zeichnen Sie die prognostizierte Preislinie und den aktuellen Preis auf einer Grafik
  3. Definition von Mehr- und Leerzeichen
  4. Wenn mehr Signale ausgelöst werden, ist mehr zu tun.
  5. Ausfallsignal ausgelöst

Analyse der Stärken

Eine lineare Kreuzung mit mehreren Bereichen hat folgende Vorteile:

  1. Einfach und effektiv: Die Strategie ist logisch klar, einfach umzusetzen und kann lineare Preistrends erfassen.
  2. Die Strategie kann sowohl bei Trends als auch bei Schwankungen Handelssignale erzeugen.
  3. Optimierbarkeit: Die Strategie enthält einige wichtige Parameter, wie z. B. die lineare Regressionszyklus, die Moving Average, etc., die durch die Optimierung dieser Parameter verbessert werden kann.

Risikoanalyse

Obwohl die Strategie der linearen Kreuzung mit mehreren Freiflächen viele Vorteile hat, birgt sie auch einige Risiken:

  1. Trenderkennungsrisiken: Die Strategie kann falsche Signale erzeugen, wenn die Preisentwicklung nicht einem linearen Trend folgt, z. B. bei einem Schaukel. Das Risiko kann durch die Kombination mit anderen Indikatoren wie dem MACD verringert werden.
  2. Risiken bei Parameter-Einstellungen: Strategie-Performance ist sehr sensibel für Parameter-Einstellungen. Fehlende Parameter können zu Verlusten führen. Daher müssen die Parameter vor der Realisierung ausreichend überprüft und optimiert werden.
  3. Risiko einer Überpassung: Eine übermäßige Optimierung der Parameter kann dazu führen, dass die Strategie die historischen Daten überpasst und in der Zukunft schlechter abschneidet. Methoden, um eine Überpassung zu vermeiden, umfassen die Einfachheit, das Testen außerhalb des Datensatzes usw.

Optimierungsrichtung

  1. Kombination mit anderen Indikatoren: Die lineare Regression kann mit anderen technischen Indikatoren wie MACD, Brinband usw. kombiniert werden, um die Signalgenauigkeit zu verbessern.
  2. Dynamische Parameteroptimierung: Es kann ein Anpassungsmechanismus für die Parameter entwickelt werden, der die Parameter dynamisch an die Marktbedingungen anpasst, um die Anpassungsfähigkeit zu verbessern.
  3. Risikokontrollmodul: Risikokontrollmaßnahmen wie Stop-Loss, Geldmanagement und andere Maßnahmen werden in die Strategie aufgenommen, um das Risiko für einzelne Geschäfte zu verringern und die kumulierten Gewinne zu erhöhen.
  4. Optimierung durch maschinelles Lernen: Die linearen Regressionsmodelle können mit maschinellen Lernalgorithmen kontinuierlich optimiert werden, um ihre Vorhersagen genauer zu machen.

Zusammenfassen

Die Strategie ist einfach zu implementieren und zu optimieren, die Parameter können flexibel angepasst werden, in Kombination mit anderen Indikatoren, die Risiko-Kontrolle-Modul, etc., die Strategie-Performance zu verbessern. Aber die Strategie gibt es auch Trend-Unrichtigkeit zu identifizieren, Parameter falsch eingestellt, Überanpassung der historischen Daten-Risiken, etc. Vorsicht bei der tatsächlichen Verwendung.

Strategiequellcode
/*backtest
start: 2024-02-25 00:00:00
end: 2024-03-26 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
strategy("Linear Cross", overlay=true, margin_long=100, margin_short=0)

//Linear Regression

vol = volume

// Function to calculate linear regression
linregs(y, x, len) =>
    ybar = math.sum(y, len)/len
    xbar = math.sum(x, len)/len
    b = math.sum((x - xbar)*(y - ybar),len)/math.sum((x - xbar)*(x - xbar),len)
    a = ybar - b*xbar
    [a, b]

// Historical stock price data
price = close

// Length of linear regression
len = input(defval = 21, title = 'Strategy Length')
linearlen=input(defval = 9, title = 'Linear Lookback')
[a, b] = linregs(price, vol, len)

// Calculate linear regression for stock price based on volume
//eps = request.earnings(syminfo.ticker, earnings.actual)
//MA For double confirmation

out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)

// Predicted stock price based on volume
predicted_price = a + b*vol

// Check if predicted price is between open and close
is_between = open < predicted_price and predicted_price < close

//MACD
//[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)

// Plot predicted stock price
plot(predicted_price, color=color.rgb(65, 59, 150), linewidth=2, title="Predicted Price")
plot(ta.sma(predicted_price,linearlen), color=color.rgb(199, 43, 64), linewidth=2, title="MA Predicted Price")
//offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200")
[macdLine, signalLine, histLine] = ta.macd(predicted_price, 12, 26, 9)

//BUY Signal

longCondition=false
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macdLine,2)
macdlong = ta.crossover(predicted_price, ta.wma(predicted_price,linearlen))  and (signalLine < macdLine)
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
lastEntryPrice = strategy.opentrades.entry_price(strategy.opentrades - 1)
daysSinceEntry = len
daysSinceEntry := int((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) / (24 * 60 * 60 * 1000))
percentageChange = (close - lastEntryPrice) / lastEntryPrice * 100
//trailChange = (ta.highest(close,daysSinceEntry) - close) / close * 100

//label.new(bar_index, high, color=color.black, textcolor=color.white,text=str.tostring(int(trailChange)))
shortCondition=false
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macdLine,1)
macdsell = macdLine < signalLine
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true

if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)