Strategi dagangan kuantitatif berdasarkan Bollinger Bands dan MACD


Tarikh penciptaan: 2024-02-23 14:30:30 Akhirnya diubah suai: 2024-02-23 14:30:30
Salin: 0 Bilangan klik: 708
1
fokus pada
1617
Pengikut

Strategi dagangan kuantitatif berdasarkan Bollinger Bands dan MACD

Gambaran keseluruhan

Strategi ini adalah strategi perdagangan kuantitatif yang berdasarkan pada indikator Brin Belt dan MACD. Ia menggabungkan perdagangan terobosan Brin Belt dan pengesanan trend MACD untuk meningkatkan kualiti isyarat perdagangan.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada keputusan yang dibuat oleh BRI dan MACD untuk memberi isyarat dagangan.

Indikator Brin Belt terdiri daripada rel tengah, rel atas dan rel bawah. Ia menghasilkan isyarat beli apabila harga menembusi rel bawah; ia menghasilkan isyarat jual apabila harga menembusi rel atas. Strategi ini menggunakan prinsip penembusan Brin Belt untuk menentukan isyarat penembusan yang lebih kuat.

Penunjuk MACD mencerminkan hubungan antara purata bergerak jangka pendek dan jangka panjang, untuk menentukan masa membeli dan menjual melalui garpu emas dan garpu mati pada garis perbezaan dan garis isyarat. Strategi ini menggabungkan penggunaan penunjuk MACD untuk menyaring isyarat perdagangan bergelombang, menghasilkan isyarat beli yang lebih berkesan apabila garis perbezaan melangkaui garis isyarat.

Secara keseluruhannya, strategi ini menggabungkan pengesanan trend di Brin Belt dan kelebihan purata bergerak MACD untuk menangkap turun naik pasaran yang lebih besar dalam trend yang kuat.

Kelebihan Strategik

  1. Gabungan antara BRI dan MACD menjadikan isyarat dagangan lebih dipercayai.

  2. Dalam keadaan trend, pengesanan trend Brin dan penyambungan purata bergerak MACD boleh menghasilkan isyarat masuk yang kuat.

  3. Dengan penilaian dua kali ganda, anda dapat menyaring isyarat palsu dengan berkesan dan mengurangkan risiko perdagangan.

  4. Terdapat ruang untuk mengoptimumkan parameter strategi, yang boleh disesuaikan mengikut jenis dan kitaran yang berbeza.

Risiko Strategik

  1. Dalam keadaan yang tidak menentu, isyarat perdagangan yang dihasilkan oleh Brin dan MACD mungkin kerap berlaku, membawa risiko pertukaran.

  2. Indeks MACD menunjukkan tiga isyarat pembelian garpu emas di kawasan rendah dan mungkin menghadapi risiko penurunan.

  3. Strategi menggunakan lebih banyak indikator, pengoptimuman parameter dan ujian strategi lebih sukar.

Untuk risiko di atas, ia boleh dikawal dengan cara yang sesuai untuk menyesuaikan masa pegangan, menetapkan garis berhenti, parameter pengoptimuman dan sebagainya.

Arah pengoptimuman strategi

  1. Ujian lebih lama berikutan parameter Brin, mengurangkan frekuensi transaksi.

  2. Mengoptimumkan parameter MACD perlahan-lahan dan rata-rata, meningkatkan kepekaan penunjuk.

  3. Tambah penapis untuk penunjuk lain seperti KDJ, RSI dan lain-lain untuk meningkatkan kualiti isyarat.

  4. Tetapkan hentian dinamik, hentian hentian automatik, dan kawalan risiko perdagangan tunggal.

ringkaskan

Strategi ini mengintegrasikan perdagangan Brin Belt Breakout dan penapisan penunjuk MACD, yang secara teorinya dapat menghasilkan isyarat perdagangan berkualiti tinggi. Hasil pengembalian yang lebih baik diharapkan melalui pengoptimuman parameter dan kaedah kawalan risiko.

Kod sumber strategi
/*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)