Handelsstrategie zur Rückkehr zum gleitenden Durchschnitt


Erstellungsdatum: 2023-10-25 10:58:02 zuletzt geändert: 2023-10-25 10:58:02
Kopie: 0 Klicks: 1191
1
konzentrieren Sie sich auf
1617
Anhänger

Handelsstrategie zur Rückkehr zum gleitenden Durchschnitt

Überblick

Die Strategie kombiniert die Analyse der Mittellinie und der linearen Regression und berücksichtigt sowohl die Kursentwicklung als auch die statistischen Eigenschaften, um die Umkehrpunkte der Aktienkurse effektiv zu ermitteln und einen günstigen Kauf zu erzielen.

Strategieprinzip

Die Strategie berechnet zunächst eine lineare Regressionlinie und eine m-Tagesdurchschnittslinie für den n-Tage-Aktienpreis. Die lineare Regressionlinie spiegelt die langfristige statistische Entwicklung des Aktienpreises wider, die Durchschnittslinie die kurzfristige Bewegung des Aktienpreises.

Wenn die lineare Regression auf der Durchschnittslinie durchläuft, bedeutet dies, dass der Aktienkurs ansteigt und ein Kaufsignal erzeugt. Wenn die lineare Regression unter der Durchschnittslinie durchläuft, bedeutet dies, dass der Aktienkurs schwach ist und ein Verkaufssignal erzeugt.

Insbesondere beurteilt die Strategie die Handelssignale in folgenden Schritten:

  1. Berechnung der n-Tage-Linienregression der Aktienkurse

  2. Berechnung eines m-Tage einfachen gleitenden Durchschnitts der linearen Regression LRMA

  3. m-Tages-Moving Average für die Berechnung der Aktienpreise

  4. Wenn die Ema die LRMA durchläuft, erzeugt sie ein Kaufsignal longEntry

  5. Wenn der Ema unter LRMA durchläuft, erzeugt er ein LongExit-Verkaufssignal.

  6. Die Beurteilung der Börsen, dass die Börse ein bullisher Markt ist, ist ein guter Weg, um ein Kaufsignal zu erhalten.

  7. Handel nach Signalen

Durch die Überschneidung von Durchschnitts- und Regressionslinien kann der Zeitpunkt des Kaufs und Verkaufs ermittelt werden, um False-Breaks zu filtern und Umkehrpunkte zu erfassen, um einen niedrigen Kauf und einen hohen Verkauf zu erzielen.

Strategische Vorteile

  • Die Regressionslinie spiegelt die langfristige Tendenz wider, die Mittellinie die kurzfristige Bewegung, die in Kombination mit dem Doppelindikator den Kauf- und Verkaufspunkt genau bestimmen kann
  • Regressionslinie ist einfach und einfach zu berechnen
  • Die Analyse der großen Börsen ermöglicht es, unpassende Handelssignale zu filtern.
  • Benutzerdefinierte Parameter für die Anpassung der Kauf- und Verkaufsstrategie
  • Es ist ein sehr gutes Ergebnis, wenn man sich die Kosten für den Kauf und Verkauf der Produkte ansieht.

Strategisches Risiko

  • Bei starken Aktienpreisschwankungen kann es zu falschen Signalen kommen, wenn sich die Mittel- und Rücklauflinien häufig kreuzen.
  • Wenn die Börsenmehrheit nicht korrekt ist, kann man auch die Kauf- und Verkaufszeiten falsch einschätzen.
  • Die falsche Einstellung der Parameter beeinträchtigt die Effektivität der Strategie
  • Häufige Transaktionen mit hohen Kosten

Die Parameter, die berücksichtigt werden müssen, müssen angepasst werden. Die Parameter für die Vergrößerung der Durchschnitts- und Regressionslinie müssen angemessen angepasst werden, um die Handelsfrequenz zu verringern.

Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Optimierung der Durchschnittswerte: Versuche verschiedene Arten von Durchschnittswerten, wie beispielsweise gewichtete Moving Averages, um die optimale Durchschnittswerte für die betreffende Aktie zu finden.

  2. Regressionslinie-Optimierung: Regressionslinie-Zyklus-Anpassung, um die Periodiparameter zu finden, die den langfristigen Trend der Aktie am besten widerspiegeln.

  3. Optimierung der Großhandelsentscheidung: Verschiedene Großhandelsentscheidungsindikatoren werden getestet, um die für die Strategie am besten geeigneten Großhandelssignale zu finden.

  4. Parameteroptimierung: Die optimale Parameterkonfiguration wird durch die Wiederholung verschiedener Parameterkombinationen ermittelt.

  5. Optimierung der Stop-Loss-Strategie: Versuche verschiedene Stop-Loss-Methoden und setze die optimale Stop-Loss-Logik ein, um das Risiko zu kontrollieren.

  6. Optimierung der Transaktionskosten: Anpassung der Transaktionsfrequenz an die verschiedenen Transaktionsgebührenmodelle, um die Transaktionskosten zu senken.

Durch die Optimierung der oben genannten Punkte können die Stabilität und die Rendite der Strategie weiter verbessert werden.

Zusammenfassen

Die Strategie integriert die Vorteile der Linien- und Linear-Return-Analyse, um die Aktienkurse zu identifizieren und die Börsenkurse zu orientieren. Die Strategie ist einfach und zuverlässig und eignet sich für den Handel mit mittel- und langfristigen Optionen. Die Strategie kann durch Parameteroptimierung und Risikokontrolle die Strategie-Stabilität weiter verbessern.

Strategiequellcode
/*backtest
start: 2022-10-18 00:00:00
end: 2023-10-24 00:00:00
period: 1d
basePeriod: 1h
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/
// © lazy_capitalist

//@version=5
strategy('Linear Regression MA', overlay=true, initial_capital=10000)
datesGroup = "Date Info"
startMonth = input.int(defval = 1,    title = "Start Month",  minval = 1, maxval = 12,  group=datesGroup)
startDay   = input.int(defval = 1,    title = "Start Day",    minval = 1, maxval = 31,  group=datesGroup)
startYear  = input.int(defval = 2022, title = "Start Year",   minval = 1970,            group=datesGroup)

averagesGroup = "Averages"
lrLineInput     = input.int(title="Linear Regression Line",   defval=55, minval = 1, group=averagesGroup)
lrMAInput       = input.int(title="Linear Regression MA",     defval=55, minval = 1, group=averagesGroup)
emaInput        = input.int(title="EMA Length",               defval=55, minval = 1, group=averagesGroup)


tradesGroup = "Execute Trades"
executeLongInput    = input.bool(title="Execute Long Trades",       defval=true)
executeShortInput   = input.bool(title="Execute Short Trades",      defval=true)
executeStopLoss     = input.bool(title="Execute Stop Loss",         defval=true)

fourHrSMAExpr       = ta.sma(close, 200)
fourHrMA            = request.security(symbol=syminfo.tickerid, timeframe="240", expression=fourHrSMAExpr)

bullish             = close > fourHrMA ? true : false


maxProfitInput              = input.float(  title="Max Profit (%)",         defval=10.0,    minval=0.0)   * 0.01
stopLossPercentageInput     = input.float(  title="Stop Loss (%)",          defval=1.75,    minval=0.0)   * 0.01

start       = timestamp(startYear, startMonth, startDay, 00, 00)            // backtest start  window
window()    => time >= start ? true : false                              // create function "within window of time"
showDate    = input(defval = true, title = "Show Date Range")

lrLine = ta.linreg(close, lrLineInput, 0)
lrMA   = ta.sma(lrLine, lrMAInput)
ema     = ta.ema(close, emaInput)

longEntry   = ema   < lrMA
longExit    = lrMA  < ema

shortEntry  = lrMA  < ema
shortExit   = ema   < lrMA


maxProfitLong   = strategy.opentrades.entry_price(0) * (1 + maxProfitInput)
maxProfitShort  = strategy.opentrades.entry_price(0) * (1 - maxProfitInput)

stopLossPriceShort  = strategy.position_avg_price * (1 + stopLossPercentageInput)
stopLossPriceLong   = strategy.position_avg_price * (1 - stopLossPercentageInput)

if(executeLongInput and bullish)
    strategy.entry( id="long_entry", direction=strategy.long,   when=longEntry and window(),    qty=10,  comment="long_entry")
    strategy.close( id="long_entry", when=longExit,     comment="long_exit")
    // strategy.close( id="long_entry", when=maxProfitLong <= close, comment="long_exit_mp")
    
if(executeShortInput and not bullish)
    strategy.entry( id="short_entry", direction=strategy.short,   when=shortEntry and window(),    qty=10,  comment="short_entry")
    strategy.close( id="short_entry", when=shortExit,     comment="short_exit")
    // strategy.close( id="short_entry", when=maxProfitShort <= close, comment="short_exit_mp")

if(strategy.position_size > 0 and executeStopLoss)
    strategy.exit(  id="long_entry",        stop=stopLossPriceLong,             comment="exit_long_SL")
    strategy.exit(  id="short_entry",       stop=stopLossPriceShort,            comment="exit_short_SL")
    
// plot(series=lrLine,     color=color.green)
plot(series=lrMA,       color=color.red)
plot(series=ema,        color=color.blue)