Diese Strategie implementiert den Arbitragehandel zwischen verschiedenen Märkten durch Berechnung einer adaptiv regulierten gleitenden Durchschnittslinie.
Die Strategie definiert zunächst eine Skala-Minimax-Funktion, um die Zeitreihen auf einen bestimmten Bereich zu standardisieren.
Definieren Sie ein gleitendes Fenster, Standardlänge 5 Tage.
Der Sig-Wert für jeden Tag ist der gewichtete Durchschnitt des vorherigen Sig-Wertes und des aktuellen Schlusskurses.
Hinzufügen eines λ-Parameters als Regularizer, um den Sig-Übergang glatter zu machen.
Nach Erhalt der Signallinie bestimmt die Strategie Long/Short basierend auf dem goldenen/toten Kreuz der Signallinie und dem Preis.
Wenn der SIG über den Preis steigt, gehen Sie lang.
Wenn der SIG unter den Kurs fällt, gehen Sie kurz.
Darüber hinaus fügt die Strategie den glatten Faktor und show_line als einstellbare Parameter hinzu, um die Flexibilität zu erhöhen.
Im Vergleich zu traditionellen gleitenden Durchschnittsstrategien hat diese Strategie folgende Vorteile:
Der adaptive Gewichtungsmechanismus kann schneller auf Preisänderungen reagieren.
Der zusätzliche Regulierer macht die Signallinie glatter und verhindert falsche Signale durch drastische Preisschwankungen.
Marktübergreifende Arbitrage können von Preisunterschieden zwischen Märkten profitieren.
Flexible, einstellbare Parameter können entsprechend den Marktbedingungen optimiert werden.
Die Strategie birgt auch einige Risiken:
Die Wahrscheinlichkeit für falsche Signale durch doppelte Kreuzungen ist höher.
Die Lösung besteht darin, hochkorrelierte Märkte für die Arbitrage auszuwählen.
Parameteroptimierung erfordert ausreichend historische Daten für Backtesting.
Die Strategie kann auch in folgenden Aspekten optimiert werden:
Bei der Parameterwahl können maschinelle Lernalgorithmen eingeführt werden, um Parameterkombinationen automatisch zu optimieren.
Bei der Signalgenerierung können mehr Indikatoren eingeführt werden, um stabilere Handelssignale zu erzeugen.
Bei der Risikokontrolle kann ein Stop Loss eingestellt werden, um den Verlust pro Handel zu begrenzen.
Bei marktübergreifender Arbitrage kann sie auf stärker korrelierte Handelsvermögenswerte ausgeweitet werden.
Diese Strategie implementiert den Arbitragehandel zwischen Märkten, indem sie gleitende Durchschnitte anpassungsfähig berechnet. Im Vergleich zu traditionellen gleitenden Durchschnittsstrategien hat sie die Vorteile von anpassungsfähigen Parametern, glatter Verarbeitung, marktübergreifender Arbitrage usw. Die nächsten Schritte sind die weitere Optimierung der Strategie durch maschinelles Lernen, kombinierte Signale, Risikomanagement usw.
/*backtest start: 2023-10-01 00:00:00 end: 2023-10-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Crossover82%", overlay=true) // // Functions // scaleMinimax(X, p, min, max) => hi = highest(X, p), lo = lowest(X, p) (max - min) * (X - lo)/(hi - lo) + min rema(ts, p) => // regularized ma rm = 0.0, lambda = .5, a = 2 / (p + 1) rm := (nz(rm[1]) + a * (ts - nz(rm[1])) + lambda * (2 * nz(rm[1]) - nz(rm[2]))) / (lambda + 1) rm // // Inputs // X = input(close, title="Data source") smooth = input(2, title="REMA smooth factor") show_line = input(true, title="Show signal line") // // Main // p = 5 sig = rema(scaleMinimax(pow(X*p,-X) - 0.1, 100, lowest(X, 100), highest(X, 100)), smooth) plot(show_line ? sig : na, linewidth=1) plot(cross(sig, X) ? ohlc4 : na, style=circles, linewidth=8, color=blue, transp=50) longCondition = crossover(sig, X) if (longCondition) strategy.entry("LE", strategy.long) shortCondition = crossunder(sig, X) if (shortCondition) strategy.entry("SE", strategy.short)