Auf relativer Dynamik basierende Strategie


Erstellungsdatum: 2024-01-29 08:38:04 zuletzt geändert: 2024-01-29 08:38:04
Kopie: 0 Klicks: 722
1
konzentrieren Sie sich auf
1617
Anhänger

Auf relativer Dynamik basierende Strategie

Überblick

Relative-Dynamik-Strategie, die die Dynamik von Aktien und Indizes vergleicht, um die Stärke von Aktien im Vergleich zu den großen Märkten zu beurteilen. Kaufen Sie, wenn die Dynamik von Aktien höher ist als die der großen Märkte, und verkaufen Sie, wenn die Dynamik von Aktien niedriger ist als die der großen Märkte, um die Wachstumsspitzen von Aktien zu erfassen.

Strategieprinzip

Die Strategie richtet sich vor allem an die Stärke und Schwäche der einzelnen Aktien im Vergleich zum Großmarkt.

  1. Berechnung der Rendite einer Aktie über einen bestimmten Zeitraum als Aktiendynamik
  2. Der Index berechnet die Rendite in derselben Zeit als Indexdynamik
  3. Berechnen von Aktienbewegungen und Indexbewegungen
  4. Beim Durchschnitt der Indexbewegungen auf einem beweglichen Durchschnitt der einzelnen Aktienbewegungen wird der Ansicht, dass die Bewegungen der einzelnen Aktien stärker sind als der Index als Ganzes, ein Kaufsignal.
  5. Beim Durchschnittsverlust der Indexbewegungen unterhalb des Moving Averages der einzelnen Aktienbewegungen wird die Annahme, dass die einzelnen Aktien schwächer als der Index als Ganzes sind, als Verkaufssignal angesehen.

Mit dieser Logik können wir eine Aktie kaufen, die in einer Zeit voller Wachstum ist, und sie rechtzeitig verkaufen, wenn ihre Wachstumsdynamik nachlässt, um die überschüssigen Gewinne während ihrer Wachstumspitzen zu sichern.

Analyse der Stärken

Die relative Dynamik hat folgende Vorteile:

  1. Die Aktien können dynamisch die Höhepunkte des Aktienwachstums erfassen, ohne sich um die konkrete Entwicklung zu kümmern, sofern die Aktien schneller als der Großhandel wachsen.
  2. Durch die Bearbeitung von Moving Averages kann die Störung durch kurzfristige Schwankungen gefiltert und die Signalzuverlässigkeit erhöht werden
  3. Einfache, direkte Kauf- und Verkaufsbedingungen, leicht verständlich
  4. Frei einstellbare Zeitparameter zur Berechnung der Relativdynamik, Optimierungsstrategien

Risikoanalyse

Die relative Dynamik ist mit Risiken verbunden:

  1. Nach einem Höchststand bei den Aktienwachstumsraten könnte es zu einer rückläufigen Anpassung kommen und die Gefahr bestehen, dass die Haltbarkeit nicht ausreicht.
  2. Relative Dynamik kann falsche Signale erzeugen und identifizierte Wachstumsspitzen sind keine echten Spitzen
  3. Setzen Sie einen Stop-Loss, um maximale Verluste zu kontrollieren

Diese Risiken können durch vernünftige Stop-Loss-Methoden und geeignete Anpassungen der Parameter kontrolliert werden.

Optimierungsrichtung

Die relative Dynamik-Strategie kann in folgenden Bereichen optimiert werden:

  1. Verschiedene dynamische Berechnungszeitparameter testen, um die optimalen Parameter zu finden
  2. Testen von Moving Averages verschiedener Typen und Längen, um optimale Parameter zu finden
  3. Zusätzliche Filterung der Transaktionszahlen zur Vermeidung falscher Durchbrüche mit unzureichender Kapazität
  4. Bestätigung der Kaufzeit in Verbindung mit anderen technischen Indikatoren

Zusammenfassen

Die relative Dynamik-Strategie kann überschüssige Gewinne erzielen, indem sie die Wachstumsspitzen der relativ großen Menge der einzelnen Aktien erfasst. Die Strategie hat die Vorteile einer einfachen, klaren Kauf- und Verkaufslogik und einer einfachen Bedienbarkeit, die durch Parameteroptimierung und Risikokontrolle verbessert wird.

Strategiequellcode
/*backtest
start: 2024-01-21 00:00:00
end: 2024-01-28 00:00:00
period: 15m
basePeriod: 5m
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/
// © HeWhoMustNotBeNamed

//@version=4
strategy("Relative Returns Strategy", overlay=false, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type = strategy.commission.percent, pyramiding = 1, commission_value = 0.01, calc_on_order_fills = true)

index_ticker=input("BTC_USDT:swap")
Loopback = input(40, step=20)
useStopAndIndexReturns = input(true)
useStopAndIndexReturnsMa = input(true)

useDifference = not useStopAndIndexReturns

MAType = input(title="Moving Average Type", defval="sma", options=["ema", "sma", "hma", "rma", "vwma", "wma"])
MALength = input(10, minval=10,step=10)

i_startTime = input(defval = timestamp("01 Jan 2010 00:00 +0000"), title = "Backtest Start Time", type = input.time)
i_endTime = input(defval = timestamp("01 Jan 2099 00:00 +0000"), title = "Backtest End Time", type = input.time)
inDateRange = true

f_secureSecurity(_symbol, _res, _src, _offset) => security(_symbol, _res, _src[_offset], lookahead = barmerge.lookahead_on)
f_getMovingAverage(source, MAType, length)=>
    ma = sma(source, length)
    if(MAType == "ema")
        ma := ema(source,length)
    if(MAType == "hma")
        ma := hma(source,length)
    if(MAType == "rma")
        ma := rma(source,length)
    if(MAType == "vwma")
        ma := vwma(source,length)
    if(MAType == "wma")
        ma := wma(source,length)
    ma

index = f_secureSecurity(index_ticker, '1D', close, 0)
stock_return = (close - close[Loopback])*100/close
index_return = (index - index[Loopback])*100/index

stock_return_ma = f_getMovingAverage(stock_return, MAType, MALength)
index_return_ma = f_getMovingAverage(index_return, MAType, MALength)
relativeReturns = stock_return - index_return
relativeReturns_ma = f_getMovingAverage(relativeReturns, MAType, MALength)

plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma : stock_return : na, title="StockReturn", color=color.green, linewidth=1)
plot(useStopAndIndexReturns ? useStopAndIndexReturnsMa ? index_return_ma : index_return : na, title="IndexReturn", color=color.red, linewidth=1)

plot(useDifference?relativeReturns:na, title="Relative-Returns", color=color.blue, linewidth=1)
plot(useDifference?relativeReturns_ma:na, title="MA", color=color.red, linewidth=1)

buyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma > index_return_ma : stock_return > index_return : relativeReturns > relativeReturns_ma)
closeBuyCondition = (useStopAndIndexReturns ? useStopAndIndexReturnsMa ? stock_return_ma < index_return_ma : stock_return < index_return : relativeReturns < relativeReturns_ma)
strategy.entry("Buy", strategy.long, when=buyCondition and inDateRange, oca_name="oca")
strategy.close("Buy", when=closeBuyCondition)