Grid-Trading-Strategie basierend auf einem gleitenden Durchschnittssystem


Erstellungsdatum: 2024-01-03 17:18:22 zuletzt geändert: 2024-01-03 17:18:22
Kopie: 0 Klicks: 1029
1
konzentrieren Sie sich auf
1621
Anhänger

Grid-Trading-Strategie basierend auf einem gleitenden Durchschnittssystem

Überblick

Diese Strategie verwendet die Gleichgewichtstheorie, um ein Gitterhandelssystem zu erstellen, das Markttrends durch eine gleichmäßige Kombination von verschiedenen JMA-Parametern beurteilt und an Trendwendepunkten Gitterhandelsgeschäfte eröffnet, um die Gewinne aus der Umstellung der langen Trendlinie auf den Markt zu erzielen.

Strategieprinzip

  1. Die JMA-Gewinnschiene mit 1 bis 20 Perioden ist eine Kombination aus einer Reihe von Gewinnschienen, um die Markttrends zu bestimmen. Wenn die kurzfristige Gewinnschiene höher ist als die langfristige Gewinnschiene, wird sie als Aufwärtstrend beurteilt, umgekehrt als Abwärtstrend.

  2. An einem Trendwendepunkt, wenn die kurze Durchschnittslinie von oben auf die lange Durchschnittslinie oder von unten auf die lange Durchschnittslinie übergeht, wird der Gitterhandel eröffnet. In einem Aufwärtstrend werden nach und nach Leerlisten erstellt; in einem Abwärtstrend werden nach und nach mehrere Linien erstellt.

  3. Die K-Linie kann nach Farbe gefiltert werden, wenn sie aktiviert ist, nur in der roten K-Linie gekauft und in der grünen K-Linie verkauft werden kann. Ansonsten wird die K-Linie nicht berücksichtigt und nur bei Trendwende gehandelt.

  4. Die Stop-Loss-Methode dient dazu, einen Stop-Loss oder einen Expiration-Stop zu verfolgen. Ein Expiration-Stop bedeutet, dass alle Positionen am Ende des Laufzyklus der Strategie ausgeschaltet werden.

Analyse der Stärken

  1. Das mittlere Liniensystem kann Trends beurteilen, um die Wendepunkte der langen Linien in den Märkten zu bestimmen.

  2. Grid-Trading ermöglicht es, bei unklaren Trends einen Ertrag aus dem Marktausbruch zu erzielen. Gleichzeitig kann ein Stop-Loss eingerichtet werden, um das Risiko zu kontrollieren.

  3. Die JMA-Durchschnittsparameter sind individuell anpassbar und können für unterschiedliche Zyklen optimiert werden.

  4. Sie können wählen, ob die K-Linien nach den Farben der Entitäten gefiltert werden sollen, um falsche Durchbrüche zu vermeiden.

Risikoanalyse

  1. In einem stark bewegten und ohne deutliche Trends bedeutenden Markt besteht ein hohes Stop-Loss-Risiko.

  2. Ein Fehler in der Durchschnittslinie kann zu falschen Handelssignalen führen.

  3. Wenn die K-Linie-Filterung aktiviert ist, besteht die Gefahr, dass man einige Handelschancen verpasst.

  4. Wenn die Grid Spacing zu groß eingestellt ist, kann nicht genügend Profit erzielt werden; wenn sie zu klein ist, sind die Positionen zu groß und die Kosten sind zu hoch.

Optimierungsrichtung

  1. Die Parameter für mehr Kombinationen können getestet werden, um die JMA-Gehaltskombinationen zu finden, die für verschiedene Sorten besser geeignet sind.

  2. Filter kann in Verbindung mit anderen Indikatoren wie BOLL-Kanal, KD usw. verwendet werden, um die Signalqualität zu verbessern.

  3. Die Grid-Konfiguration kann durch Parameter wie die Grid-Distanz, die Anzahl der Lagerstätten und andere optimiert werden.

  4. Weitere Arten von Stop-Losses können in Betracht gezogen werden, z. B. Hüpfen Stop-Losses, Tracking Stop-Losses usw.

Zusammenfassen

Die Strategie richtet sich nach der JMA-Gleichgewichtstheorie, um die Trendwende zu beurteilen und am Wendepunkt einen Grid-Handel zu eröffnen. Sie kann den Gewinn aus der Umwandlung der langen Trendbewegung in den Markt erzielen. Die Strategie kann durch Parameteroptimierung eine bessere Strategieperformance erzielen.

Strategiequellcode
/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=3
strategy(title = "Noro's Fishnet Strategy", shorttitle = "Fishnet str", overlay = true, 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")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
usecf = input(false, defval = false, title = "Use Color-filter")
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")

//JMA
jmax(src, len) =>
    beta = 0.45*(len-1)/(0.45*(len-1)+2)
    alpha = pow(beta, 3)
    L0=0.0, L1=0.0, L2=0.0, L3=0.0, L4=0.0
    L0 := (1-alpha)*src + alpha*nz(L0[1])
    L1 := (src - L0[0])*(1-beta) + beta*nz(L1[1])
    L2 := L0[0] + L1[0]
    L3 := (L2[0] - nz(L4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(L3[1])
    L4 := nz(L4[1]) + L3[0]
	L4

ma01 = jmax(close, 10)
ma02 = jmax(close, 20)
ma03 = jmax(close, 30)
ma04 = jmax(close, 40)
ma05 = jmax(close, 50)
ma06 = jmax(close, 60)
ma07 = jmax(close, 70)
ma08 = jmax(close, 80)
ma09 = jmax(close, 90)
ma10 = jmax(close, 100)
ma11 = jmax(close, 110)
ma12 = jmax(close, 120)
ma13 = jmax(close, 130)
ma14 = jmax(close, 140)
ma15 = jmax(close, 150)
ma16 = jmax(close, 160)
ma17 = jmax(close, 170)
ma18 = jmax(close, 180)
ma19 = jmax(close, 190)
ma20 = jmax(close, 200)

trend = 0
trend := ma01 > ma20 ? 1 : ma01 < ma20 ? -1 : trend[1]
col = trend == 1 ? #00FF7F : #DC143C

plot(ma01, transp = 0, color = col)
plot(ma02, transp = 0, color = col)
plot(ma03, transp = 0, color = col)
plot(ma04, transp = 0, color = col)
plot(ma05, transp = 0, color = col)
plot(ma06, transp = 0, color = col)
plot(ma07, transp = 0, color = col)
plot(ma08, transp = 0, color = col)
plot(ma09, transp = 0, color = col)
plot(ma10, transp = 0, color = col)
plot(ma11, transp = 0, color = col)
plot(ma12, transp = 0, color = col)
plot(ma13, transp = 0, color = col)
plot(ma14, transp = 0, color = col)
plot(ma15, transp = 0, color = col)
plot(ma16, transp = 0, color = col)
plot(ma17, transp = 0, color = col)
plot(ma18, transp = 0, color = col)
plot(ma19, transp = 0, color = col)
plot(ma20, transp = 0, color = col)

//Trading
lot = 0.0
lot := strategy.equity / close * capital / 100

if trend == 1 and (close < open or usecf == false)
    strategy.entry("Long", strategy.long, needlong ? lot : na)

if trend == -1 and (close > open or usecf == false)
    strategy.entry("Short", strategy.short, needshort ? lot : na)