Strategi Penembusan Harga Perdagangan Kuantitatif

Penulis:ChaoZhang, Tanggal: 2023-12-22 12:42:15
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan kuantitatif jangka pendek berdasarkan Simple Moving Average (SMA), Exponential Moving Average (EMA), Keltner Channels, indikator MACD dan osilator Stochastic.

Prinsip Strategi

Strategi ini menggunakan SMA 25 periode, EMA 200 periode untuk membangun garis rata-rata bergerak ganda. Ketika harga menembus rata-rata bergerak ganda ke atas, sinyal beli dihasilkan. Ketika harga menembus rata-rata bergerak ganda ke bawah, sinyal jual dihasilkan.

Pada saat yang sama, strategi ini menggunakan 10-periode Keltner Channels. Penembusan saluran atas dan band bawah juga berfungsi sebagai sinyal asisten. Indikator MACD menghasilkan sinyal perdagangan dengan garis cepat, garis lambat dan histogramnya. Osilator Stochastic juga membentuk sinyal panjang dan pendek dengan salib emas dan salib mati dari garis %K dan garis %D.

Secara khusus, ketika harga penutupan berada di atas SMA dan EMA, dan dalam Saluran Keltner, histogram MACD negatif dan Stochastic %K berada di bawah 50, sinyal masuk panjang dipicu.

Keuntungan Strategi

  1. Menggunakan rata-rata bergerak ganda dikombinasikan dengan indikator saluran dapat secara efektif menyaring false breakout.
  2. Mengintegrasikan sinyal dari beberapa indikator teknis dapat meningkatkan keandalan.
  3. Aturan panjang/pendek yang jelas memfasilitasi efisiensi pelaksanaan program.
  4. Cocok untuk strategi perdagangan kuantitatif frekuensi tinggi.

Risiko Strategi dan Optimasi

  1. Sebagai strategi perdagangan jangka pendek, ia memiliki risiko frekuensi perdagangan yang tinggi.
  2. Tidak ada mekanisme stop loss yang ada, yang menyebabkan risiko kerugian yang besar.
  3. Pertimbangkan untuk menambahkan indikator volatilitas untuk mengoptimalkan kondisi masuk dan stop loss.
  4. Periode parameter yang berbeda dapat diuji untuk menemukan kombinasi optimal.

Kesimpulan

Strategi ini mengintegrasikan empat indikator teknis yang umum digunakan - moving average, channel, MACD dan Stochastic. Strategi ini menentukan long/short berdasarkan price breakthrough, strategi perdagangan kuantitatif jangka pendek yang khas.


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


Lebih banyak