Strategi perdagangan kuantitatif berdasarkan Bollinger Bands dan VWAP


Tanggal Pembuatan: 2024-01-04 15:59:46 Akhirnya memodifikasi: 2024-01-04 15:59:46
menyalin: 0 Jumlah klik: 1122
1
fokus pada
1621
Pengikut

Strategi perdagangan kuantitatif berdasarkan Bollinger Bands dan VWAP

Ringkasan

Strategi ini menggabungkan dua indikator Brin’s Band (BB) dan VWAP untuk membuat keputusan beli dan jual. Strategi ini dapat menemukan ketidaksetaraan harga jangka pendek dan kemudian melakukan perdagangan yang sesuai untuk perdagangan garis pendek.

Prinsip Strategi

Strategi ini didasarkan pada beberapa aturan untuk membeli dan menjual:

  1. Garis EMA cepat lebih tinggi dari garis EMA lambat sebagai prasyarat untuk menilai tren

  2. Ketika harga penutupan lebih tinggi dari VWAP dinilai sebagai kenaikan harga dan dibeli

  3. Jika 10 K line sebelumnya memiliki harga penutupan yang lebih rendah dari Brin, maka ini dianggap sebagai pembelian yang tidak normal.

  4. Ketika harga penutupan lebih tinggi dari Brin naik, harga telah dibalik dan dijual

Secara khusus, strategi pertama menilai EMA 50 hari lebih tinggi dari EMA 200 hari, menggunakan EMA lambat untuk menilai tren besar. Kemudian dikombinasikan dengan VWAP untuk menilai apakah harga berada dalam tren naik dalam jangka pendek.

Aturan exit lebih sederhana, yaitu ketika harga lebih tinggi dari Bollinger Bands pada saat harga telah berbalik dan keluar.

Analisis Keunggulan

Strategi ini menggabungkan keanehan dalam beberapa indikator untuk menilai harga, yang dapat meningkatkan kekuatan sinyal masuk. Menggunakan EMA untuk menilai tren besar dapat menghindari operasi berlawanan.

Analisis risiko

  1. EMA memutuskan bahwa keputusan tren besar tidak boleh menyebabkan operasi besar yang berlawanan
  2. Indikator VWAP paling baik digunakan untuk efek data per jam atau per hari, dan akan dikenakan diskon jika digunakan untuk efek data garis matahari
  3. Parameter pita Brin tidak disetel dengan benar, batas atas dan bawah yang terlalu lebar atau terlalu sempit dapat menyebabkan kesalahan sinyal

Untuk menghadapi risiko-risiko ini, Anda dapat menyesuaikan parameter siklus EMA atau mencoba indikator penghakiman tren besar lainnya. Parameter VWAP dapat digunakan untuk data intraday atau disesuaikan dengan indikator garis pendek lainnya. Sesuaikan parameter Brin untuk mencari amplitudo terbaik.

Arah optimasi

  1. Cobalah indikator lain untuk melihat tren besar, seperti MACD
  2. Optimalkan parameter EMA dan Brin untuk menemukan konfigurasi optimal
  3. Meningkatkan mekanisme penghentian kerugian
  4. Kombinasi dengan indikator lain Filter Signals Palsu
  5. Uji varietas dan siklus data

Meringkaskan

Strategi ini menggabungkan dua indikator, Brin Belt dan VWAP, untuk menilai abnormalitas harga jangka pendek sebagai waktu masuk. Menggunakan EMA untuk menilai tren besar untuk menghindari operasi kontra. Dapat dengan cepat menemukan peluang tren harga garis pendek.

Kode Sumber Strategi
/*backtest
start: 2023-12-04 00:00:00
end: 2024-01-03 00:00:00
period: 1h
basePeriod: 15m
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/
// © mohanee

//@version=4
strategy(title="VWAP and BB strategy [EEMANI]", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)
//This strategy combines VWAP and BB indicators
//BUY RULE
//1. EMA50 > EMA 200
//2. if current close > vwap session  value 
//3. check if  price dipped BB lower band for any of last 10 candles
//EXIT RULE
//1. price closes above BB upper band   
//STOP LOSS EXIT
//1. As configured --- default is set to 5%

is_price_dipped_bb(pds,source1) =>
    t_bbDipped=false
    for i=1 to pds
        t_bbDipped:=  (t_bbDipped   or  close[i]<source1) ? true : false
        if t_bbDipped==true
            break
        else
            continue
            
    t_bbDipped
    
// variables  BEGIN
shortEMA = input(50, title="fast EMA", minval=1)
longEMA = input(200, title="slow EMA", minval=1)

//BB

smaLength = input(20, title="BB SMA Length", minval=1)
bbsrc = input(close, title="BB Source")



//addOnDivergence = input(true,title="Add to existing on Divergence")
//exitOption = input(title="exit on RSI or BB", type=input.string, options=["RSI", "BB"],      defval="BB")

//bbSource = input(title="BB  source", type=input.string, options=["close", "vwap"],      defval="close")
     
//vwap_res = input(title="VWAP Resolution", type=input.resolution, defval="session")
stopLoss = input(title="Stop Loss%", defval=5, minval=1)

//variables  END




longEMAval= ema(close, longEMA)
shortEMAval= ema(close, shortEMA)


vwapVal=vwap(close)



// Drawings

//plot emas
plot(longEMAval, color = color.orange, linewidth = 1, transp=0)
plot(shortEMAval, color = color.green, linewidth = 1, transp=0)


//bollinger calculation 
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(bbsrc, smaLength)
dev = mult * stdev(bbsrc, smaLength)
upperBand = basis + dev
lowerBand = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
//bollinger calculation 

//plot bb
//plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upperBand, "Upper", color=color.teal, offset = offset)
p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)


plot(vwapVal, color = color.purple, linewidth = 1, transp=0)


// Colour background

barcolor(shortEMAval>longEMAval and close<=lowerBand ? color.yellow: na)
  

//longCondition=  shortEMAval > longEMAval and  close>open and  close>vwapVal
longCondition= shortEMAval >= longEMAval  and  close>=vwapVal and close>open  //      close>vwapVal   and   



//Entry
strategy.entry(id="VWAP_BB LE", comment="VB LE" , long=true,  when= longCondition and  is_price_dipped_bb(10,lowerBand) )  //and strategy.position_size<1 

//add to the existing position
//strategy.entry(id="VWAP_RSI LE", comment="VR LE Add" , long=true,  when= addOnDivergence==true and strategy.position_size>=1 and close<strategy.position_avg_price   and (close<lowerBand or  low<lowerBand) and rsiVal>rsi_buy_line)

barcolor(strategy.position_size>=1  ? color.blue: na)



strategy.close(id="VWAP_BB LE", comment="TP Exit VB LE",   when=crossover(close,upperBand) )

//stoploss
stopLossVal =   strategy.position_avg_price * (1-(stopLoss*0.01) )
strategy.close(id="VB LE", comment="SL Exit",   when= close < stopLossVal)