Strategi Penembusan Harga Dagangan Kuantitatif

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

img

Ringkasan

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.

Prinsip Strategi

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.

Kelebihan Strategi

  1. Menggunakan purata bergerak berganda digabungkan dengan penunjuk saluran dapat menapis pecah palsu dengan berkesan.
  2. Mengintegrasikan isyarat dari pelbagai penunjuk teknikal boleh meningkatkan kebolehpercayaan.
  3. Peraturan panjang / pendek yang jelas memudahkan kecekapan pelaksanaan program.
  4. Sesuai untuk strategi perdagangan kuantitatif frekuensi tinggi.

Risiko Strategi dan Pengoptimuman

  1. Sebagai strategi perdagangan jangka pendek, ia mempunyai risiko kekerapan perdagangan yang tinggi.
  2. Tiada mekanisme stop loss yang wujud, yang membawa kepada risiko kerugian yang besar.
  3. Pertimbangkan untuk menambah penunjuk turun naik untuk mengoptimumkan keadaan kemasukan dan hentian kerugian.
  4. Tempoh parameter yang berbeza boleh diuji untuk mencari kombinasi yang optimum.

Kesimpulan

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)


Lebih lanjut