Dieser Artikel stellt eine quantitative Handelsstrategie vor, die die doppelte gleitende Durchschnittsstrategie und den stochastischen Indikator kombiniert.
Die Strategie besteht aus zwei Teilen:
Strategie für einen doppelten gleitenden Durchschnitt
Die Verwendung von schnellen und langsamen gleitenden Durchschnitten, um goldenen Kreuz Kaufsignale und toten Kreuz verkaufen Signale zu generieren.
Stochastischer Indikator
Die Verwendung der Schwingungsmerkmale der Stochastik zur Identifizierung von Überkauf- und Überverkaufssituationen. Ein Stochastiker, der höher als die langsame Linie ist, zeigt ein Überkaufsignal an, während ein Stochastiker, der niedriger als die langsame Linie ist, ein Überverkaufsignal anzeigt.
Die beiden Signal-Teile werden kombiniert, um die endgültigen Handelssignale zu bilden.
Die Risiken können durch Optimierung von Parameterkombinationen und durch Hinzufügen von Stop Loss zu Kontrollverlusten reduziert werden.
Die Strategie kann in folgenden Aspekten optimiert werden:
Diese Strategie kombiniert die Vorteile von doppelten gleitenden Durchschnitten und Stochastik. Während sie den Hauptmarkttrend verfolgt, vermeiden sie ungünstige Umkehrungen. Bessere Strategieergebnisse können durch Parameteroptimierung erzielt werden. Das Hinzufügen von Stops und Trendfiltern kann die Strategie robuster machen.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 24/11/2020 // This is combo strategies for get a cumulative signal. // // First strategy // This System was created from the Book "How I Tripled My Money In The // Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies. // The strategy buys at market, if close price is higher than the previous close // during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. // The strategy sells at market, if close price is lower than the previous close price // during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50. // // Second strategy // As the name suggests, High low bands are two bands surrounding the underlying’s // price. These bands are generated from the triangular moving averages calculated // from the underlying’s price. The triangular moving average is, in turn, shifted // up and down by a fixed percentage. The bands, thus formed, are termed as High // low bands. The main theme and concept of High low bands is based upon the triangular // moving average. // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// Reversal123(Length, KSmoothing, DLength, Level) => vFast = sma(stoch(close, high, low, Length), KSmoothing) vSlow = sma(vFast, DLength) pos = 0.0 pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1, iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) pos HLB(Length, PercentShift) => pos = 0.0 xTMA = sma(sma(close, Length), Length) xHighBand = xTMA + (xTMA * PercentShift / 100) xLowBand = xTMA - (xTMA * PercentShift / 100) pos :=iff(close > xHighBand, 1, iff(close <xLowBand, -1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & High Low Bands", shorttitle="Combo", overlay = true) Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- Length_HLB = input(14, minval=1) PercentShift = input(1, minval = 0.01, step = 0.01) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posHLB = HLB(Length_HLB, PercentShift) pos = iff(posReversal123 == 1 and posHLB == 1 , 1, iff(posReversal123 == -1 and posHLB == -1, -1, 0)) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1 , 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) if (possig == 0) strategy.close_all() barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )