Grid-Handelsstrategie auf Basis eines gleitenden Durchschnittssystems

Schriftsteller:ChaoZhang, Datum: 2024-01-03 17:18:22
Tags:

img

Übersicht

Diese Strategie verwendet die gleitende Durchschnittstheorie, um ein Netzhandelssystem aufzubauen, indem der Markttrend durch mehrere Sätze von gleitenden Durchschnittswerten mit verschiedenen Parametern beurteilt wird.

Strategie Logik

  1. Bei der Ermittlung der Marktentwicklung wird eine Kombination aus gleitenden Durchschnitten der JMA von 1 bis 20 Perioden verwendet.

  2. Öffnen Sie Grid-Trades an Trendumkehrpunkten, wenn der kurze MA unter oder über dem langen MA kreuzt.

  3. Eine Option zum Filtern basierend auf der Candlestick-Farbe - nur auf roten Kerzen kaufen und auf grünen Kerzen verkaufen, ansonsten Farbe ignorieren und nur bei Trendumkehr handeln.

  4. Ausgänge sind entweder Stop-Loss- oder zeitbasierte Ausgänge, wenn die Strategielaufzeit endet.

Analyse der Vorteile

  1. Die Verwendung des MA-Systems zur Ermittlung von Trends kann langfristige Trendumkehrungen effektiv erkennen.

  2. Grid-Trading kann Gewinne aus Range-bound Markten ohne klare Trends erzielen, wobei Stop Loss zur Kontrolle von Risiken verwendet wird.

  3. Anpassbare JMA-Parameter, können für verschiedene Zeiträume optimiert werden, hohe Flexibilität.

  4. Der Kerzenfilter verhindert, dass man durch falsche Ausbrüche irregeführt wird.

Risikoanalyse

  1. Bei Märkten mit hohem Whip-Saw-Wert ohne klare Trends besteht ein höheres Stop-Loss-Risiko.

  2. Beurteilungsfehler des MA-Systems können zu falschen Handelssignalen führen.

  3. Der Kerzenfilter riskiert, einige Handelsmöglichkeiten zu verpassen.

  4. Ist der Abstand zu groß, sind die Gewinne unzureichend, kann eine zu enge Abstandsbreite zu zu vielen Positionen und hohen Kosten führen.

Optimierungsrichtlinien

  1. Versuche mehr Parameterkombinationen, um optimale JMA MA-Kombinationen für verschiedene Produkte zu finden.

  2. Einbeziehung anderer Filter wie BOLL-Bänder, KD usw. zur Verbesserung der Signalqualität.

  3. Optimieren Sie die Netzkonfigurationen wie Netz-Abstand, Eintrittsplätze usw.

  4. Sie sollten mehr Stop-Loss-Methoden wie Gap-basierte, Trailing-Stops usw. in Betracht ziehen.

Schlussfolgerung

Diese Strategie beurteilt Umkehrungen anhand der JMA-Theorie und eröffnet Grid-Trades an Wendepunkten, um Gewinne aus langfristigen Trendveränderungen zu erzielen. Die Performance kann durch Parameteroptimierung weiter verbessert werden. Insgesamt eignet sie sich für mittelfristige Beteiligungen, um Trends allmählich zu verfolgen und zu profitieren.


/*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)
    

Mehr