
Die Strategie basiert auf einem einfachen Moving Average (SMA), einem Index Moving Average (EMA), einem Keltner-Kanal, einem MACD-Indikator und einem Stochastic-Indikator.
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.
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.
/*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)