Ini adalah strategi perdagangan kuantitatif jangka pendek berdasarkan Purata Bergerak Sederhana (SMA), Purata Bergerak Eksponen (EMA), Saluran Keltner, penunjuk MACD dan osilator Stochastic. Ia menggunakan kejayaan harga SMA dan EMA, digabungkan dengan isyarat panjang dan pendek dari Saluran Keltner, MACD dan Stochastic untuk mengotomatiskan kemasukan dan keluar perdagangan.
Strategi ini menggunakan SMA 25 tempoh, EMA 200 tempoh untuk membina garis purata bergerak berganda. Apabila harga memecahkan purata bergerak berganda ke atas, isyarat beli dihasilkan. Apabila harga memecahkan purata bergerak berganda ke bawah, isyarat jual dihasilkan.
Pada masa yang sama, strategi ini menggunakan Saluran Keltner 10-periode. Penembusan jalur atas dan bawah saluran juga berfungsi sebagai isyarat pembantu. Indikator MACD menghasilkan isyarat perdagangan dengan garis cepat, garis perlahan dan histogramnya. Osilator Stochastic juga membentuk isyarat panjang dan pendek dengan salib emas dan salib mati garis %K dan %D.
Khususnya, apabila harga penutupan di atas kedua-dua SMA dan EMA, dan dalam Saluran Keltner, histogram MACD adalah negatif dan Stochastic %K di bawah 50, isyarat masuk panjang dipicu.
Strategi ini mengintegrasikan empat penunjuk teknikal yang biasa digunakan - purata bergerak, saluran, MACD dan Stochastic. Ia menentukan panjang / pendek berdasarkan terobosan harga, strategi perdagangan kuantitatif jangka pendek yang biasa. Berbanding dengan strategi penunjuk tunggal, kombinasi pelbagai penunjuknya meningkatkan ketepatan isyarat dan bernilai ujian dan pengoptimuman lanjut.
/*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)