Strategi perdagangan kuantitatif berdasarkan BRI dan MACD

Penulis:ChaoZhang, Tanggal: 2024-02-23 14:30
Tag:

基于布林带和MACD的量化交易策略

Pengamatan

Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada indikator Brin dan MACD. Strategi ini menggabungkan perdagangan yang menembus Brin dan pelacakan tren MACD untuk meningkatkan kualitas sinyal perdagangan.

Prinsip Strategi

Strategi ini terutama didasarkan pada indikator Blink-Band dan indikator MACD untuk menilai sinyal perdagangan.

Indikator Blink Band terdiri dari tren tengah, tren atas, dan tren bawah. Ini menghasilkan sinyal beli ketika harga menembus tren bawah; Ini menghasilkan sinyal jual ketika harga menembus tren atas. Strategi ini menggunakan prinsip perpecahan Blink Band untuk menentukan sinyal perpecahan yang lebih kuat.

Indikator MACD mencerminkan hubungan antara garis rata-rata bergerak jangka pendek dan jangka panjang, dan menggunakan garpu emas dan garpu mati dari garis defisit dan garis sinyal untuk menentukan waktu membeli dan menjual. Strategi ini menggabungkan penggunaan indikator MACD untuk menyaring sinyal perdagangan pita bubble, menghasilkan sinyal beli yang lebih efektif ketika garis defisit melewati garis sinyal.

Secara keseluruhan, strategi ini menggabungkan trend tracking dengan Blink Band dan keuntungan dari moving average line dengan MACD untuk menangkap fluktuasi pasar yang lebih besar dalam tren yang kuat.

Keunggulan Strategis

  1. Dengan kombinasi Brin Band dan MACD, sinyal perdagangan lebih dapat diandalkan.

  2. Dalam pasar tren, trend tracking Brin dan penyeberangan garis rata-rata bergerak MACD dapat menghasilkan sinyal masuk yang kuat.

  3. Dengan penilaian dua indikator, sinyal palsu dapat secara efektif disaring dan mengurangi risiko perdagangan.

  4. Parameter strategi untuk mengoptimalkan ruang yang besar, dapat disesuaikan dengan berbagai varietas dan siklus.

Risiko Strategis

  1. Dalam pasar yang bergolak, sinyal perdagangan yang dihasilkan oleh Brin Band dan MACD mungkin sering terjadi, yang menimbulkan risiko leverage.

  2. Indikator MACD memiliki tiga sinyal pembelian garpu emas di daerah rendah, yang mungkin menghadapi risiko penurunan yang terbalik.

  3. Strategi menggunakan lebih banyak indikator, optimasi parameter dan tes strategi lebih sulit.

Untuk risiko di atas, dapat dikendalikan dengan cara yang sesuai dengan penyesuaian waktu kepemilikan, pengaturan garis stop loss, pengoptimalan parameter, dan lain sebagainya.

Kebijakan Optimasi

  1. Memeriksa parameter Blink-Band dengan siklus yang lebih panjang untuk mengurangi frekuensi transaksi.

  2. Mengoptimalkan parameter MACD cepat dan lambat untuk meningkatkan sensitivitas indikator.

  3. Menambahkan penyaringan indikator lain, seperti KDJ, RSI, dll, meningkatkan kualitas sinyal.

  4. Setel stop loss dinamis, stop loss otomatis keluar, dan kontrol risiko transaksi tunggal.

Pengamatan

Strategi ini mengintegrasikan perdagangan terobosan Blink dan penyaringan indikator MACD, yang secara teori menghasilkan sinyal perdagangan berkualitas tinggi. Hasil retesting yang lebih baik diharapkan melalui pengoptimalan parameter dan pengendalian risiko. Namun tidak ada strategi yang dapat sepenuhnya menghindari kerugian, dan efek perdagangan yang sebenarnya perlu dinilai dengan hati-hati.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nabz-BBMACD-2022-V1.1", shorttitle="BBM-Nabz", overlay=true)


// My 1st Pine Scrpt Indicator
// Work on best on 1Hr Chart
// Open for Help/Donations.


var float lastentry=1
int result = 0
float x = 0
drawshape = false

/////////////EMA
shortest = ta.ema(close, 20)
short = ta.ema(close, 50)
longer = ta.ema(close, 100)
longest = ta.ema(close, 200)

plot(shortest, color = color.red)
plot(short, color = color.orange)
plot(longer, color = color.aqua)
plot(longest, color = color.blue)

///////////// RSI
RSIlength = input(6,title="RSI Period Length") 
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = ta.rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input.int(200, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)



////////////// MACD
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na


///////////Strategy

bool tcu = not (ta.crossunder(price[0],shortest[0]))


if (((price[1]<BBlower[1]) and (ta.crossover(price,BBlower))))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 1st IF")
    
if (((ta.crossover(delta, 0.0) and (ta.crossover(price,BBlower)))))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 2nd IF")    
    
if (((ta.crossover(delta, 0.0)) and (low[0]>shortest[0])) and (price[1]<low))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 3rd IF")   //else

if (((ta.crossover(delta, 0.01)) and (high[1]<BBupper)) and (tcu))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 4th IF")

       
if ((ta.crossunder(low[0],shortest[0]) and close<shortest))
    strategy.close(id="RSI_BB_L", comment="Close by 1st IF")
    
    
    
if (price<lastentry)
    drawshape := true
    
if (price<strategy.opentrades.entry_price(0)/1.01175734321249)
    strategy.close(id="RSI_BB_L", comment="Close by 2nd IF")



plot(strategy.opentrades.entry_price(0), color=color.yellow)


Informasi lebih lanjut