Multi-Zeitrahmen-Stochastische Kreuzungstrategie

Schriftsteller:ChaoZhang, Datum: 23.10.2023
Tags:

img

Übersicht

Die Multi Timeframe Stochastic Crossover Strategy ist eine typische Trendfolgestrategie. Sie berechnet die Standardabweichungswerte in verschiedenen Zeitrahmen (z. B. täglich, wöchentlich, monatlich usw.), konstruiert mehrere K- und D-Linien, nimmt den Durchschnitt dieser Linien, um gleitende Durchschnitte zu erstellen, und geht lang, wenn die schnelle Linie über die langsame Linie überschreitet, und geht kurz, wenn die schnelle Linie unter die langsame Linie überschreitet. Durch die Kombination von Standardabweichungslinien in mehreren Zeitrahmen kann diese Strategie effektiv Marktlärm filtern und den vorherrschenden Trend erfassen.

Strategie Logik

Die Kernlogik dieser Strategie besteht darin, die Standardabweichung über mehrere Zeitrahmen zu berechnen und dann den Durchschnitt zu nehmen, um Handelssignale zu generieren.

Erstens berechnet die Strategie K-Werte der Standardabweichung unter verschiedenen Parametern in 5 Gruppen, die täglichen, wöchentlichen und monatlichen Zeitrahmen entsprechen:

smoothK = input(55)
SMAsmoothK = input(13)  
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)

smoothK1 = input(89) 
SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1) 

...

smoothK4 = input(377)
SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

Dann berechnet es D-Gelenke mit unterschiedlichen Parametern:

smoothD = input(34)
d = sma(k, smoothD)  

...

smoothD4 = input(233) 
d4 = sma(k4, smoothD4)

Als nächstes berechnet er den Durchschnitt der Linien K und D, um die schnelle Linie Kavg und die langsame Linie Davg zu erhalten:

Kavg = avg(k,k1,k2,k3,k4)
Davg = avg(d,d1,d2,d3,d4)

Schließlich geht es lang, wenn Kavg über Davg kreuzt, und kurz, wenn Kavg unter Davg kreuzt:

long = crossover(Kavg, Davg)  
short = crossunder(Kavg, Davg)

Durch die Kombination von Standardabweichungslinien über mehrere Zeitrahmen hinweg kann diese Strategie Marktlärm in größeren Zeitrahmen filtern und die vorherrschende Trendrichtung erfassen.

Vorteile

  • Nutzt die vorausschauende Leistung der Standardabweichung über mehrere Zeitrahmen hinweg, um Lärm auszufiltern und Trends zu erfassen
  • Flexibilität bei der Anpassung der Aufbewahrungsdauer durch Anpassung der Zeitrahmenparameter
  • Die Standardabweichung selbst zeigt einen starken Trend bei folgenden Merkmalen:
  • Bewegliche Durchschnitts-Crossover vermeiden, durch einzelne falsche Ausbrüche irregeführt zu werden
  • Einfache Optimierung der gleitenden Durchschnittsperioden für mehr Stabilität

Risiken und Lösungen

  • Mehrfache Zeitrahmen gleitende Durchschnitts-Crossovers können viele falsche Signale erzeugen, optimieren gleitende Durchschnittszeiten
  • Standardabweichung anfällig für Fehler durch flüchtige Bewegungen, sollten Sie Filter hinzufügen
  • Feste Zeiträume können sich nicht an Marktveränderungen anpassen, sie müssen sich an Anpassungsfristen anpassen.
  • Lange Halteperioden mit dem Risiko, nach Höhen und Tiefen zu jagen, Verwenden Sie Trailing Stops, um Gewinne zu erzielen
  • Abhängigkeit von nur dem KDJ-Indikator ist begrenzt, kombiniert mit anderen Indikatoren

Lösungen:

  1. Fügen Sie Filter hinzu, um falsche Ausbruchssignale zu vermeiden

  2. Anpassungsphasen auf der Grundlage der Marktvolatilität verwenden

  3. Verwenden Sie Trailing-Stops zum rechtzeitigen Ausstieg aus den Trades

  4. Optimierung der gleitenden Durchschnittsperioden für eine optimale Balance

  5. Mehr Indikatoren zur Verbesserung der Robustheit

Möglichkeiten zur Verbesserung

Diese Strategie kann in folgenden Bereichen weiter verbessert werden:

  1. Einbeziehung anderer Indikatorsignale wie MACD, Bollinger Bands zur Verbesserung der Signalqualität

  2. Hinzufügen von Trendfiltern wie SMA-Richtung, ADX, um Gegentrendgeschäfte zu vermeiden

  3. Anpassungsphasen auf der Grundlage der Marktvolatilität nutzen

  4. Einführung von Trailing-Stops auf Basis von Strategieparametern für den Ausstieg aus den Geschäften

  5. Optimierung der schnellen und langsamen gleitenden Durchschnittszeiten für die besten Parameter

  6. Hinzufügen von Eintrittsfiltern, um falsche Signale von Kurzzeitlärm zu vermeiden

  7. Testdurchbruchseingang nach Kreuzung gleitender Durchschnitte

  8. Beurteilen Sie verschiedene Ausstiegsstrategien wie Chandelier Exit, um Ausgänge zu optimieren

Schlussfolgerung

Die Multi-Timeframe Stochastic Crossover Strategy kombiniert die Trendfolgekapazität des Stochastic-Indikators und die Stabilität der gleitenden Durchschnittsstrategien. Indem sie den Durchschnitt der mehrjährigen Standardabweichungslinien K und D zur Erzeugung von Signalen annimmt, nutzt sie effektiv die Vorhersagekraft der Standardabweichung über verschiedene Zeitrahmen hinweg, filtert Marktlärm aus und erfasst den vorherrschenden Trend. Diese Strategie bietet Raum für Parameter-Tuning und weitere Verbesserungen wie Filter, Stops usw. Insgesamt integriert sie die Stärken mehrerer technischer Analysewerkzeuge und ist ein effizientes Trendfolgestrategie, das es wert ist, erforscht und optimiert zu werden.


/*backtest
start: 2023-09-23 00:00:00
end: 2023-10-23 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="Slow Stochastic Multi K&D Average Crossover Strategy", overlay=false, pyramiding=0, calc_on_order_fills=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, currency="USD", default_qty_value=100)


price = input(close)

///////////////////////////////
smoothK = input(55) 

SMAsmoothK = input(13)
k = sma(stoch(price, high, low, smoothK), SMAsmoothK)



smoothD = input(34)
d = sma(k, smoothD)


///////////////////////////

smoothK1 = input(89) 

SMAsmoothK1 = input(8)
k1 = sma(stoch(price, high, low, smoothK1), SMAsmoothK1)

smoothD1 = input(55)
d1 = sma(k1, smoothD1)

//////////////////////////////////////

smoothK2 = input(144) 

SMAsmoothK2 = input(5)
k2 = sma(stoch(price, high, low, smoothK2), SMAsmoothK2)

smoothD2 = input(89)
d2 = sma(k2, smoothD2)

/////////////////////////////////////

smoothK3 = input(233) 

SMAsmoothK3 = input(3)
k3 = sma(stoch(price, high, low, smoothK3), SMAsmoothK3)

smoothD3 = input(144)
d3 = sma(k3, smoothD3)

////////////////////////////////////////////////

smoothK4 = input(377) 

SMAsmoothK4 = input(2)
k4 = sma(stoch(price, high, low, smoothK4), SMAsmoothK4)

smoothD4 = input(233)
d4 = sma(k4, smoothD4)

/////////////////////////////////////////////////

Kavg = avg(k,k1,k2,k3,k4, k4)
plot(Kavg, color=green)

Davg = avg(d,d1,d2,d3,d4, d4)
plot(Davg, color=red)


///////////////////////////////////////
hline(50, color=gray)


long = crossover(Kavg, Davg)// and d < 50
short = crossunder(Kavg, Davg)// and d > 50


last_long = long ? time : nz(last_long[1])
last_short = short ? time : nz(last_short[1])
long_signal = crossover(last_long, last_short) 
short_signal = crossover(last_short, last_long)



strategy.entry("Long", strategy.long, when=long_signal)
strategy.entry("Short", strategy.short, when=short_signal) 

//len1 = input(3)

//closelong = d[1] < k[len1]
//closeshort = d[1] > k[len1]

//strategy.close("Long", when=closelong)
//strategy.close("Short", when=closeshort)



Mehr