Dynamische gleitende Durchschnittsstrategie


Erstellungsdatum: 2023-11-23 11:39:24 zuletzt geändert: 2023-11-23 11:39:24
Kopie: 0 Klicks: 654
1
konzentrieren Sie sich auf
1617
Anhänger

Dynamische gleitende Durchschnittsstrategie

Überblick

Diese Strategie, die als Dynamische Moving Average-Strategie bezeichnet wird, basiert auf der Idee, die Richtung der Moving Average und die Beziehung zwischen dem Preis und dem Trend zu nutzen, um den Trend zu bestimmen, in die Richtung des Trends einzutreten und in der Abwesenheit des Trends zu schließen.

Strategieprinzip

Die Strategie verwendet die Quellpreise für die Länge einer Periode, um die Moving Average zu berechnen. Die Quellpreise können OHLC4, HLC3, Schlusskurs usw. auswählen. Die berechnete Moving Average wird als sma definiert.

Die Berechnungsformel für die kurze Linie lautet: shortline = sma * ((100 + shortlevel) / 100), wobei shortlevel eine vom Benutzer festzulegende positive Zahl ist, die den Verhältnis der kurzen Linie zum beweglichen Mittelwert darstellt. Longline ähnelt der Berechnungsformel: longline = sma * ((100 + longlevel) / 100), longlevel ist eine vom Benutzer festzulegende negative Zahl, die den Verhältnis der langen Linie zum beweglichen Mittelwert darstellt.

So ist die kurze Linie immer größer als der Moving Average und die lange Linie immer kleiner als der Moving Average. Wenn der Preis die kurze Linie aufwärts durchbricht, bedeutet dies, dass er in einen Aufwärtstrend eintritt, und wenn needlong mehr erlaubt, wird er auf der langen Linie mehr bestellt.

Egal ob Über- oder Unterkurs, wenn der Preis zurück zum Moving Average geht, bedeutet dies das Ende des Trends, bei dem alle vorherigen Positionen ausgeglichen werden.

So wird die Richtung des Trends anhand der dynamischen Beziehung zwischen der langen und kurzen Linie und der beweglichen Durchschnittslinie beurteilt und entsprechend Ein- und Ausgänge vorgenommen.

Strategische Vorteile

Der größte Vorteil dieser Strategie besteht darin, dass sie die wichtigsten Trendrichtungen flexibel erfassen kann, indem sie die Kauf- und Verkaufspunkte durch die Dynamik der langen und kurzen Linien festlegt. Diese Strategie ist hoch entwickelt und intelligenter als die Strategie, die einfach die Kauf- und Verkaufspunkte auf festen Ebenen auslöst.

Zweitens wirkt die Moving Average selbst als eine Art Schallwelle und vermeidet bis zu einem gewissen Grad, dass sie von Hochfrequenzschwingungen eingeschlossen wird. Es ist auch sehr wichtig, dass die Bewegung der Moving Average-Ebene beurteilt wird, ob sie rechtzeitig zum Ende des Trends auftritt.

Strategisches Risiko

Die größte Gefahr dieser Strategie besteht darin, dass die Moving Average in verschiedenen Perioden unterschiedlich stark ist. Normalerweise ist die Moving Average ausreichend, um die Richtung der Tendenz zu repräsentieren, aber in einigen Extremsituationen kann die Moving Average in kurzer Zeit durchbrochen werden, was zu falschen Einsätzen oder Abweichungen führt. In diesem Fall ist die Verwendung von Moving Averages mit längeren Perioden erforderlich, um die Genauigkeit der Trendbeurteilung sicherzustellen.

Ein weiterer Aspekt des Risikos besteht darin, dass die Moving Average selbst sehr langsam ist. Für einige kurze und heftige Preisschwankungen, bei denen die Moving Average schwierig und zeitlich zu verfolgen ist, kann der Einstiegspunkt oder der Ausstiegspunkt verpasst werden. Die Reaktionsgeschwindigkeit der Moving Average muss reduziert werden.

Strategieoptimierung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Ein zusätzlicher Stop-Logik. Die beweglichen Mittelwerte sind rückständig, wenn sie Trends beurteilen, und sie können nicht vollständig vermieden werden, so dass die Risiken durch eine angemessene Einbeziehung von beweglichen Stopps weiter reduziert werden können.
  2. Parameter zur Optimierung der langen und kurzen Durchschnittslinie. Derzeit ist das Verhältnis zwischen der langen und kurzen Durchschnittslinie und der beweglichen Durchschnittslinie fest, so dass verschiedene Datensätze getestet werden können, um die optimalen Parameter zu finden.
  3. Trendstärke zu bestimmen. Neben der Position der langen und kurzen Durchschnittslinie kann die Stärke des Trends durch bestimmte Algorithmen beurteilt werden, um falsche Signale bei schwachen Trends zu vermeiden.
  4. Es kann versucht werden, die bewegliche Gleichung auf andere Handelsarten anzuwenden, um eine Überraschungsprüfung durchzuführen.

Zusammenfassen

Die Strategie ermittelt Trends und erstellt entsprechende Multi-Block-Tradings durch die dynamische Einstellung von Kauf- und Verkaufspunkten. Diese Methode basiert auf der dynamischen Einstellung von Handelssignalen durch die bewegliche Mittellinie und ermöglicht eine flexiblere und intelligentere Erfassung der Preisentwicklung im Vergleich zu den statischen Triggerpunkten. Gleichzeitig wird das Problem der fehlenden Aktualität der beweglichen Mittellinie selbst behoben.

Strategiequellcode
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's ShiftMA Strategy v1.1", shorttitle = "ShiftMA str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
per = input(3, title = "Length")
src = input(ohlc4, title = "Source")
shortlevel = input(10.0, title = "Short line (red)")
longlevel = input(-5.0, title = "Long line (lime)")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//SMAs
sma = sma(src, per) 
//sma = lowest(low, per)
shortline = sma * ((100 + shortlevel) / 100)
longline = sma * ((100 + longlevel) / 100)
plot(shortline, linewidth = 2, color = red, title = "Short line")
plot(sma, linewidth = 2, color = blue, title = "SMA line")
plot(longline, linewidth = 2, color = lime, title = "Long line")

//plot(round(buy * 100000000), linewidth = 2, color = lime)
//plot(round(sell * 100000000), linewidth = 2, color = red)

//Trading
size = strategy.position_size
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[per])) and size == 0 and needlong
    strategy.entry("L", strategy.long, lot, limit = longline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size == 0 and needshort
    strategy.entry("S", strategy.short, lot, limit = shortline, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size > 0 
    strategy.entry("Close", strategy.short, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if (not na(close[per])) and size < 0 
    strategy.entry("Close", strategy.long, 0, limit = sma, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()