Quantitative Trading-Preisdurchbruchsstrategie


Erstellungsdatum: 2023-12-22 12:42:15 zuletzt geändert: 2023-12-22 12:42:15
Kopie: 0 Klicks: 599
1
konzentrieren Sie sich auf
1621
Anhänger

Quantitative Trading-Preisdurchbruchsstrategie

Überblick

Die Strategie basiert auf einem einfachen Moving Average (SMA), einem Index Moving Average (EMA), einem Keltner-Kanal, einem MACD-Indikator und einem Stochastic-Indikator.

Strategieprinzip

Die Strategie verwendet 25-Zyklus-SMA, 200-Zyklus-EMA, um einen doppelten Moving Average zu erstellen. Es erzeugt ein Kaufsignal, wenn der Preis den doppelten Moving Average von unten nach oben durchbricht. Es erzeugt ein Verkaufsignal, wenn der Preis den doppelten Moving Average von oben nach unten durchbricht.

Die Strategie verwendet 10 Zyklen, um Keltner-Kanäle zu erstellen, wobei die Ober- und Unterbahnen des Preisbruchkanals als Hilfssignale dienen. Die MACD-Anzeige erzeugt ein Kauf- und Verkaufssignal über die Schnell-, Lang- und MACD-Pillar-Form. Die Stochastic-Anzeige erzeugt auch ein Überhangsignal über die Gold- und die Todesforken der %K- und %D-Linien.

Konkret, wenn der Schlusskurs über den SMA und EMA liegt und sich innerhalb des Keltner-Kanals befindet, erzeugt die MACD-Spalte ein negatives Kaufsignal, wenn der Stochastic% K-Wert unter 50 liegt. Wenn der Schlusskurs unter den SMA und EMA liegt und sich innerhalb des Keltner-Kanals befindet, erzeugt die MACD-Spalte ein positives Kaufsignal, wenn der Stochastic% K-Wert über 50 liegt.

Strategische Vorteile

  1. Die Verwendung von doppelten gleitenden Durchschnitten in Kombination mit Channel-Indikatoren filtert die falschen Marktdurchbrüche effektiv.
  2. Die Integration von Signalen mit mehreren technischen Indikatoren erhöht die Signalsicherheit.
  3. Die Regeln für die Mehrraumsignale sind klar und die programmatische Ausführung ist effizient.
  4. Quantitative Strategien für die häufigen Transaktionen auf kurzen Linien.

Strategische Risiken und Optimierungen

  1. Es besteht die Gefahr, dass eine bestimmte Handelsfrequenz als Short-Line-Handelsstrategie zu hoch ist.
  2. Es gibt keine Stop-Loss-Mechanismen und ein hohes Risiko für Verluste.
  3. Es kann in Erwägung gezogen werden, Volatilitätsindikatoren hinzuzufügen, um die Eröffnungs- und Stoppbedingungen zu optimieren.
  4. Testbarkeit der verschiedenen Periodenparameter auf optimale Parameterkombinationen.

Zusammenfassen

Die Strategie integriert vier häufig verwendete technische Indikatoren, beispielsweise Moving Averages, Channel Indicators, MACD Indicators und Stochastic Indicators. Sie ist eine typische Short-Line-Quantitative-Trading-Strategie, bei der die Mehrheit durch Preisbruch oder Nichtbruch beurteilt wird. Die Kombination von mehreren Indikatoren verbessert die Signalgenauigkeit im Vergleich zu einem einzigen Indikator und sollte weiter getestet und optimiert werden.

Strategiequellcode
/*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)