Doppelte gleitende Durchschnittsmomentum-Martingale-Strategie


Erstellungsdatum: 2023-12-25 17:01:28 zuletzt geändert: 2023-12-25 17:01:28
Kopie: 0 Klicks: 360
1
konzentrieren Sie sich auf
1218
Anhänger

Doppelte gleitende Durchschnittsmomentum-Martingale-Strategie

Überblick

Die Strategie kombiniert drei verschiedene technische Indikatoren, generiert Handelssignale mit einem doppelten Gleichlinien-System und verwendet die Farbe und die Einheit der K-Linie als zusätzliche Filterbedingungen, um eine relativ stabile und effektive Kurzlinien-Handelsstrategie zu erstellen.

Strategieprinzip

Die gesamte Strategie verwendet eine Kombination aus Bollinger Bands und KC-Kanälen, um die Komprimierungs- und Expansionsphasen eines Marktes zu identifizieren. Konkret wird als Komprimierung betrachtet, wenn die Bollinger Band innerhalb des KC-Kanals ist, und als Expansion, wenn die Bollinger Band den KC-Kanal durchbricht. Komprimierung repräsentiert die Möglichkeit einer Verschärfung der Schwankungen und einer Trendwende, bei der die lineare Regression als primärer Handelssignal verwendet wird.

Wenn das lineare Regressions-Histogramm positiv ist und die Bar eine rote K-Linie ist und die K-Linie negativ ist und die K-Linie 13 größer ist als die durchschnittliche K-Linie der letzten 30 K-Linien, wird ein solches Kombinationssignal ausgeführt. Umgekehrt, wenn das lineare Regressions-Histogramm negativ ist und die Bar eine grüne K-Linie ist, ist die Entität ebenfalls größer.

Die Strategie bietet einen visuellen Hintergrund für die Kompression und Expansion, um zu helfen, die Phasen des Marktes zu bestimmen.

Strategische Stärkenanalyse

  • Kombination von mehreren Indikatoren zur effektiven Filterung von Falschsignalen
  • Komprimierung ist ein möglicher Wendepunkt, der die Effektivität der Strategie erhöht.
  • Einheitliche Filter können verhindern, dass sie durch falsche Durchbrüche von kleinen Wellenbändern verführt werden.
  • Die Optimierung der Parameter erleichtert die Erzielung besserer Ergebnisse

Strategische Risikoanalyse

  • Lineare Regression kann zu Fehlschlägen führen, was zu Verlusten führen kann.
  • Die Brin-Band und die KC-Kanäle beurteilen die Komprimierung als nicht optimal.
  • Die Filterbedingungen sind so hart, dass man die besten Eintrittspunkte verpasst.
  • Der Rückzug ist möglicherweise größer und erfordert eine gewisse Ausdauer.

Das Risiko kann durch Anpassung der Indikatorparameter und Optimierung der Filterbedingungen verringert werden.

Richtung der Strategieoptimierung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Versuche verschiedene Parameterkombinationen und -längen, um das beste zu finden
  2. Erhöhung oder Verringerung der Filterbedingungen, um die optimale Filtration zu ermitteln
  3. Automatische Suche nach optimalen Parametern mit Hilfe von maschinellem Lernen
  4. Testeffekte in bestimmten Sorten, Anpassung der Parameter an die verschiedenen Sorten
  5. Erhöhung der Stop-Loss-Strategie zur Kontrolle von Einzelschäden

Zusammenfassen

Diese Strategie kombiniert mehrere Kennzahlen, erhöht die Filterbedingungen und identifiziert Kompressionschancen, um eine robuste und effiziente Short-Line-Strategie zu bilden. Durch die Optimierung von Parametern und Filterbedingungen können bessere Ergebnisse erzielt werden. Die Strategie-Framework ist flexibel und kann leicht in verschiedenen Sorten angepasst werden, was weitere Tests und Optimierungen wert ist.

Strategiequellcode
/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2017

//@version=2
strategy(shorttitle = "Squeeze str 1.0", title="Noro's Squeeze Momentum Strategy v1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
length = input(20, title="BB Length")
mult = input(2.0,title="BB MultFactor")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
useTrueRange = true
usecolor = input(true, defval = true, title = "Use color of candle")
usebody = input(true, defval = true, title = "Use EMA Body")
needbg = input(false, defval = false, title = "Show trend background")
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")

// Calculate BB
source = close
basis = sma(source, length)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : (high - low)
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn  = (lowerBB > lowerKC) and (upperBB < upperKC)
sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC)
noSqz  = (sqzOn == false) and (sqzOff == false)

val = linreg(source  -  avg(avg(highest(high, lengthKC), lowest(low, lengthKC)),sma(close,lengthKC)), lengthKC,0)

bcolor = iff( val > 0, iff( val > nz(val[1]), lime, green), iff( val < nz(val[1]), red, maroon))
scolor = noSqz ? blue : sqzOn ? black : gray 

trend = val > 0 ? 1 : val < 0 ? -1 : 0

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//EMA Body
body = abs(close - open)
emabody = ema(body, 30) / 3

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = trend == 1 and (bar == -1 or usecolor == false) and (body > emabody or usebody == false)
dn = trend == -1 and (bar == 1 or usecolor == false) and (body > emabody or usebody == false)

if up
    strategy.entry("Long", strategy.long)

if dn
    strategy.entry("Short", strategy.short)