Strategie für einen doppelten stochastischen Oszillator

Schriftsteller:ChaoZhang, Datum: 2023-09-17 18:26:16
Tags:

Übersicht

Diese Strategie verwendet zwei stochastische Oszillatoren mit unterschiedlichen Parametern, um Bullen/Bären-Bedingungen zu bestimmen. Es ist ein typisches gleitendes Durchschnitts-Crossover-System. Der schnellere Oszillator beurteilt kurzfristige Trends und Eintrittssignale, während der langsamere die allgemeine Trendrichtung bestätigt. Die Signale werden aus der Kombination erzeugt.

Strategie Logik

  1. Schnelle %K zeigt die kurzfristige Trendrichtung an. %K überquert die Glättungslinie SM1 und erzeugt Eintrittssignale.

  2. Wenn der schnelle Oszillator ein Umkehrsignal gibt, überprüfen Sie den langsamen Oszillator auf die Gültigkeit des Trends.

  3. Ein schneller Crossover von %K über SM1 zeigt ein bullisches Signal an. Ein langsamer Crossover von %K über 50 bedeutet einen Aufwärtstrend, der die Long-Bedingung erfüllt.

  4. Ein schneller Crossover von %K unter SM1 zeigt ein Bärensignal an. Ein langsamer %K unter 50 bedeutet einen Abwärtstrend, der die Short-Bedingung erfüllt.

  5. Setzen Sie Gewinn- und Stop-Loss-Punkte zu festen Prozentsätzen.

Analyse der Vorteile

  1. Die doppelte Stochastik filtert Lärm und verbessert die Genauigkeit.

  2. Der kleinere SM1-Parameter macht %K empfindlich für kurzfristige Chancen.

  3. Ein größerer Zyklus beurteilt den allgemeinen Trend, ein kleinerer Zyklus erfasst Umkehrungen.

  4. Feste Gewinn- und Stop-Loss-Punkte machen das Risiko ohne große Schwankungen kontrollierbar.

Risikoanalyse

  1. Abweichungen zwischen Indikatoren können zu verpassten Trades oder falschen Signalen führen.

  2. Festverzinsung und Stop-Loss-Punkte sind bei der Anpassung an die Märkte nicht flexibel.

  3. Stochastische Parameter müssen wiederholt optimiert werden, falsche Einstellungen führen zum Scheitern.

  4. Eine hohe Handelsfrequenz aus dem kurzfristigen Handel erhöht die Transaktionskosten.

Optimierungsrichtlinien

  1. Hinzufügen anderer Indikatoren oder Filter zur Sicherstellung der Signalqualität.

  2. Versuche verschiedene Parameterkombinationen, um optimale Einstellungen zu finden.

  3. Einbeziehung von Volatilitätsmaßnahmen, um die Gewinn- und Stop-Loss-Levels dynamisch zu machen.

  4. Verwenden Sie Zeitfilter, um wichtige Ereignisse und irrationale Kursschwankungen zu vermeiden.

  5. Optimierung von Kapitalmanagementstrategien wie Positionsgröße zur Verbesserung der Kapitaleffizienz.

Zusammenfassung

Diese Strategie integriert schnelle und langsame stochastische Oszillatoren in ein duales Richtungssystem. Weitere Parameteroptimierung und das Hinzufügen von Filtern wie Trend- und Volatilitätsindikatoren können es verbessern. Mit einer angemessenen Risikokontrolle kann diese Strategie relativ stetige Überrenditen erzielen.


/*backtest
start: 2023-08-17 00:00:00
end: 2023-09-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Double Stochastic", overlay=true)

//-----------------------Stochastics------------------------//

c= security(syminfo.tickerid,timeframe.period , close)  
h= security(syminfo.tickerid, timeframe.period, high)  
l= security(syminfo.tickerid, timeframe.period, low)  

c1= security(syminfo.tickerid, timeframe.period, close)  
h2= security(syminfo.tickerid, timeframe.period, high)  
l1= security(syminfo.tickerid, timeframe.period, low)  

K1 = input(5, title="K", minval=1, title="Leading K")
SM1 = input(2, title="Smooth", minval=1, title="Leading Smooth ")
k = ema(stoch(c, h, l, K1), SM1)

K2 = input(97, title="K", minval=1, title="Lagging K")
D2 = input(3, title="D", minval=1, title="Lagging D")
SM2 = input(1, title="Smooth", minval=1, title="Lagging Smooth")
k1 = ema(stoch(c1, h2, l1, K2), SM2)

// buy ((k[2] < 40 and k > 40) and bars_up > 0 and k1 > 50) 
// sell (k[2] > 60 and k < 60) and bars_down > 0 and k1 < 50

//-----------------------Mechanics------------------------//

buy = k1 > 50 and k < 30 and k > k[1] ? 1 : 0
sell = k1 < 50 and k > 70 and k < k[1] ? 1 : 0

buy_val = valuewhen(buy == 1, close, 1)
sell_val = valuewhen(sell == 1, close, 1)

buy_close = buy_val * input(1.20, minval=0.1)
sell_close = sell_val / input(1.20, minval=0.1)

//------------------------Buy/Sell-------------------------//

longCondition = buy == 1
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

close_long = close >= buy_close
if (close_long)
    strategy.close("My Long Entry Id")
    
sellCondition = sell == 1
if (sellCondition)
    strategy.entry("My Short Entry Id", strategy.short)

close_short = close <= sell_close
if (close_short)
    strategy.close("My Short Entry Id")    

Mehr