Quantitative Handelspreisdurchbruchsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-12-22 12:42:15
Tags:

img

Übersicht

Dies ist eine kurzfristige quantitative Handelsstrategie, die auf dem einfachen gleitenden Durchschnitt (SMA), dem exponentiellen gleitenden Durchschnitt (EMA), den Keltner-Kanälen, dem MACD-Indikator und dem stochastischen Oszillator basiert.

Strategieprinzip

Die Strategie verwendet 25-Perioden SMA, 200-Perioden EMA, um doppelte gleitende Durchschnittslinien zu erstellen. Wenn der Preis durch die doppelten gleitenden Durchschnitte nach oben bricht, wird ein Kaufsignal generiert. Wenn der Preis durch die doppelten gleitenden Durchschnitte nach unten bricht, wird ein Verkaufssignal generiert.

Gleichzeitig verwendet diese Strategie 10-Perioden-Keltner-Kanäle. Der Durchbruch der oberen und unteren Kanalbänder dient auch als Hilfssignale. Der MACD-Indikator erzeugt Handelssignale mit seiner schnellen Linie, der langsamen Linie und dem Histogramm. Der Stochastische Oszillator bildet auch lange und kurze Signale mit dem goldenen Kreuz und dem toten Kreuz seiner %K-Linie und %D-Linie.

Wenn der Schlusskurs sowohl über der SMA als auch über der EMA liegt und innerhalb der Keltner-Kanäle das MACD-Histogramm negativ ist und der Stochastische %K unter 50 liegt, wird ein Long-Entry-Signal ausgelöst.

Strategische Vorteile

  1. Durch die Verwendung eines doppelten gleitenden Durchschnitts in Kombination mit einem Kanalindikator können falsche Ausbrüche effektiv gefiltert werden.
  2. Die Integration von Signalen aus mehreren technischen Indikatoren kann die Zuverlässigkeit verbessern.
  3. Klare lange/kurze Regeln erleichtern die Effizienz der programmatischen Ausführung.
  4. Geeignet für hochfrequente quantitative Handelsstrategien.

Strategische Risiken und Optimierung

  1. Da es sich um eine kurzfristige Handelsstrategie handelt, besteht ein hohes Handelsfrequenzrisiko.
  2. Es gibt keinen Stop-Loss-Mechanismus, was zu großen Verlustrisiken führt.
  3. Es sollten Volatilitätsindikatoren hinzugefügt werden, um die Einstiegs- und Stop-Loss-Bedingungen zu optimieren.
  4. Verschiedene Parameterperioden können getestet werden, um optimale Kombinationen zu finden.

Schlussfolgerung

Diese Strategie integriert vier häufig verwendete technische Indikatoren - gleitende Durchschnitte, Kanal, MACD und Stochastic. Sie bestimmt Long/Short basierend auf Preisdurchbruch, eine typische kurzfristige quantitative Handelsstrategie. Im Vergleich zu Einzelindikatorstrategien verbessert ihre Kombination aus mehreren Indikatoren die Signalgenauigkeit und lohnt sich für weitere Tests und Optimierungen.


/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=5
strategy(title="Scalping Trading System Crypto and Stocks", overlay=true)
src = input(low, title="Source")

//sma and ema
len = input.int(25, minval=1, title="Length SMA" , group="Moving Averages")
len2 = input.int(200, minval=1, title="Length EMA", group="Moving Averages")

out = ta.sma(src, len)
out2 = ta.ema(src, len2)


//keltner
lengthk = input.int(10, minval=1, title="Length Keltner Channel",group="Keltner")
mult = input(2.0, "Multiplier",group="Keltner")
BandsStyle = input.string("Average True Range", options = ["Average True Range", "True Range", "Range"], title="Bands Style",group="Keltner")
atrlength = input(14, "ATR Length",group="Keltner")

ma = ta.sma(src, lengthk)
rangema = BandsStyle == "True Range" ? ta.tr(true) : BandsStyle == "Average True Range" ? ta.atr(atrlength) : ta.rma(high - low, lengthk)
upper = ma + rangema * mult
lower = ma - rangema * mult

//stoch
periodK = input.int(10, title="%K Length", minval=1,group="Stochastic")
smoothK = input.int(1, title="%K Smoothing", minval=1,group="Stochastic")
periodD = input.int(1, title="%D Smoothing", minval=1,group="Stochastic")
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)

//macd 1
fast_length = input(title="Fast Length MACD", defval=4,group="MACD Fast")
slow_length = input(title="Slow Length MACD", defval=34,group="MACD Fast")
signal_length = input.int(title="Signal Smoothing MACD",  minval = 1, maxval = 50, defval = 5,group="MACD Fast")
sma_source = input.string(title="Oscillator MA Type MACD",  defval="EMA", options=["SMA", "EMA"],group="MACD Fast")
sma_signal = input.string(title="Signal Line MA Type MACD", defval="EMA", options=["SMA", "EMA"],group="MACD Fast")

fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal




long= close > out and close < upper and close > lower and hist < 0 and k < 50 and close > out2 

short= close < out and close < upper and close > lower and hist > 0 and k > 50 and close < out2 

strategy.entry("long",strategy.long,when= long)

strategy.entry("short",strategy.short,when=short)


Mehr