Mehrstufige Handelsstrategie mit gleitenden Durchschnitten


Erstellungsdatum: 2023-09-23 15:55:20 zuletzt geändert: 2023-09-23 15:55:20
Kopie: 0 Klicks: 686
1
konzentrieren Sie sich auf
1617
Anhänger

Überblick

Die Strategie berechnet zunächst 3 Long- und 3 Short-Linien, bei denen die Long-Linie unter der Short-Line liegt, und die Short-Line unter der Long-Line ist leer. Die Strategie kann Parameter wie die Länge der Periode für die Berechnung der Moving Average, die Abweichungsquote und die Handelszeiträume einstellen, die für den Handel mit mittleren Long-Line-Trends geeignet sind.

Strategieprinzip

  1. Der einfache Moving Average der len-Periode des src-Quellpreises in den Berechnungsparametern dient als Referenzmittelwert.

  2. Die Anzahl der langen und kurzen Zeilen, die auf die Long- und Short-Parameter zugeschnitten sind.

  3. Longline1 und so weiter werden in dem Verhältnis zur Referenzmittellinie verlagert, das von Parametern wie longlevel1 festgelegt wurde.

  4. In der Handelszeit wird die Beziehung zwischen dem Preis und der Durchschnittslinie beurteilt, um mehrere Eingänge zu ermöglichen.

  5. Ein Stop-Loss wird ausgeführt, wenn der Preis die Referenzmittellinie erreicht.

  6. Die Banken müssen sich an die Zeit halten, bis die Zahlung erfolgt.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Es gibt mehrere Ebenen für den Einstieg, die Trends in verschiedenen Phasen zu gewinnen und zu gewinnen.

  2. Die Parameter sind vielfältig und können an die verschiedenen Arten und Handelsstile angepasst werden.

  3. Das System basiert auf einer linearen Gleichung und ist zuverlässiger für Durchbruchssprüche.

  4. Es ist möglich, dass die Zeiträume, in denen der Handel erfolgen kann, zu Zeiten von großer Bedeutung sind, wie z. B. bei der Veröffentlichung von wichtigen Daten.

  5. Es gibt eine Stop-Loss-Methode, um einzelne Verluste zu kontrollieren.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Die Risiken einer mehrfachen Verlagerung sind hoch und erfordern eine ausreichende finanzielle Unterstützung.

  2. Die Parameter sollten entsprechend eingestellt werden, da eine falsche Einstellung zu Überschnellungen führen kann.

  3. Ein Fixed-Off-Time kann den Trendgewinn der letzten Phase verpassen. Sie können einen Stop-Loss-Tracker einrichten, um zu optimieren.

  4. Die Kosten für das Halten von Positionen können unter Berücksichtigung der Kosten für das Halten von Positionen und der Kosten für das Halten von Positionen berücksichtigt werden.

  5. Ohne Berücksichtigung von Positionskontrollen kann es zu einer übermäßigen einseitigen Positionshaltung kommen.

Optimierungsrichtung

Diese Strategie kann in folgenden Bereichen optimiert werden:

  1. Erhöhung der mobilen Stop-Losses anstelle der festen Abfahrtszeiten.

  2. Berücksichtigen Sie die Übernachtungs-Positionshaltung, die Einbeziehung von Aufpreisen und Gleitpunkt-Kontrollen.

  3. Die Eintrittskarte für die Verfolgung von Stop-Loss-Verlusten bietet die Möglichkeit, die Gewinne der letzten Stufe zu nutzen.

  4. Die Einzelschlagzahl wird je nach Positionslage angepasst und die Einzelschlagregelung wird angepasst.

  5. Die Wirkung verschiedener Parameter auf verschiedene Sorten zu testen und Parameteroptimierungsmechanismen zu entwickeln.

  6. Optimierung der Test-Stop-Punkte und Verringerung unnötiger Stop-Verluste.

Zusammenfassen

Mehrstufige Moving Average-Strategie durch mehrstufige Einstieg in die Durchschnittslinie, Trendverfolgung und Gewinn. Die eingestellte handelbare Zeit und Stop-Loss-Punkt besser kontrolliert das Risiko. Durch die Kontrolle der Haltekosten, Parameter-Optimierung, Stop-Loss-Optimierung und andere Möglichkeiten, die Strategie Wirkung weiter zu verbessern, ist es wert, weiter zu studieren und zu optimieren.

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

//Noro
//2019

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

//Settings
long = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for long")
short = input(3, defval = 3, minval = 0, maxval = 3, title = "Lines for short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Length")
src = input(ohlc4, title = "MA Source")
shortlevel3 = input(15.0, title = "Short line 3")
shortlevel2 = input(10.0, title = "Short line 2")
shortlevel1 = input(5.0, title = "Short line 1")
longlevel1 = input(-5.0, title = "Long line 1")
longlevel2 = input(-10.0, title = "Long line 2")
longlevel3 = input(-15.0, title = "Long line 3")
needoffset = input(true, title = "Offset")
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")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = long >= 1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
longline2 = long >= 2 ? round(ma * ((100 + longlevel2) / 100) * mult) / mult : close
longline3 = long >= 3 ? round(ma * ((100 + longlevel3) / 100) * mult) / mult : close
shortline1 = short >= 1 ? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close
shortline2 = short >= 2 ? round(ma * ((100 + shortlevel2) / 100) * mult) / mult : close
shortline3 = short >= 3 ? round(ma * ((100 + shortlevel3) / 100) * mult) / mult : close

//Lines
colorlong1 = long >= 1 ? color.lime : na
colorlong2 = long >= 2 ? color.lime : na
colorlong3 = long >= 3 ? color.lime : na
colorshort1 = short >= 1 ? color.red : na
colorshort2 = short >= 2 ? color.red : na
colorshort3 = short >= 3 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline3, offset = offset, color = colorshort1)
plot(shortline2, offset = offset, color = colorshort2)
plot(shortline1, offset = offset, color = colorshort3)
plot(ma, offset = offset, color = color.blue)
plot(longline1, offset = offset, color = colorlong1)
plot(longline2, offset = offset, color = colorlong2)
plot(longline3, offset = offset, color = colorlong3)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
needtime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0 and long >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1 and long >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2 and long >= 3 and needtime))
    
    lots := round(size / lot)
    strategy.entry("S1", strategy.short, lot, limit = shortline1, when = (lots == 0 and short >= 1 and needtime))
    lots := round(size / lot)
    strategy.entry("S2", strategy.short, lot, limit = shortline2, when = (lots >= -1 and short >= 2 and needtime))
    lots := round(size / lot)
    strategy.entry("S3", strategy.short, lot, limit = shortline3, when = (lots >= -2 and short >= 3 and needtime))
if size > 0
    strategy.entry("TPL", strategy.short, 0, limit = ma)
if size < 0
    strategy.entry("TPS", strategy.long, 0, limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()