BB21_SMA200 Tren Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-11-16 11:04:42
Tag:

img


Gambaran umum

Strategi ini menggabungkan Bollinger Bands dan Moving Average untuk merancang tren mengikuti sistem perdagangan. Strategi ini pergi panjang ketika harga menembus pita atas Bollinger Bands dan pita bawah berada di atas SMA200, menutup posisi parsial ketika harga menembus pita bawah, dan keluar semua ketika harga melintasi di bawah SMA200. Strategi mengikuti tren dan memotong kerugian dalam waktu ketika tren berubah.

Logika Strategi

  1. Menghitung SMA200 sebagai Exponential Moving Average untuk menentukan tren utama
  2. Menghitung Bollinger Bands, termasuk band atas, band tengah dan band bawah, dan mengisi warna sebagai rentang keuntungan
  3. Ketika kedua band atas dan bawah berada di atas SMA200, ini menunjukkan tren naik
  4. Ketika harga menembus pita tengah Bollinger Bands ke atas, pergi panjang
  5. Ketika harga menembus band bawah ke bawah, tutup posisi parsial
  6. Ketika harga melintasi di bawah SMA200, itu menunjukkan pembalikan tren utama, tutup semua posisi
  7. Atur titik stop loss untuk mencegah kerugian yang berlebihan
  8. Menghitung ukuran perdagangan berdasarkan modal akun dan risiko yang dapat diterima

Premis dari strategi ini untuk mengidentifikasi tren adalah bahwa Bollinger Bands harus benar-benar di atas SMA200, hanya pergi panjang ketika tren naik yang jelas hadir.

Analisis Keuntungan

  1. Gunakan Bollinger Bands alih-alih satu indikator untuk mengidentifikasi tren yang jelas
  2. SMA200 menentukan arah tren utama, menghindari perdagangan yang tidak perlu di pasar yang terikat jangkauan
  3. Stop loss parsial untuk mengikuti trend run
  4. Stop loss tepat waktu pada titik kunci untuk meminimalkan kerugian
  5. Menghitung ukuran perdagangan memperkenalkan manajemen risiko untuk mencegah kerugian yang berlebihan pada satu perdagangan

Analisis Risiko

  1. Sinyal breakout yang dihasilkan dari Bollinger Bands mungkin memiliki sinyal palsu yang relatif tinggi
  2. Titik stop loss parsial perlu dioptimalkan untuk mencegah stop loss prematur
  3. Jika titik stop loss terlalu ketat, stop loss dapat diaktifkan terlalu sering
  4. Periode SMA perlu diuji dan dioptimalkan untuk menyeimbangkan keterlambatan dan sensitivitas
  5. Metode perhitungan ukuran perdagangan mungkin perlu dioptimalkan untuk mencegah ukuran yang berlebihan pada perdagangan tunggal

Risiko-risiko ini dapat dikurangi dengan teliti menguji parameter Bollinger Bands, mengoptimalkan strategi stop loss parsial, menyesuaikan periode SMA, dan memperkenalkan metode manajemen risiko yang lebih ilmiah.

Arahan Optimasi

  1. Uji dan optimalkan parameter Bollinger Bands untuk menurunkan sinyal palsu
  2. Penelitian bagaimana mengatur titik stop loss parsial yang tepat
  3. Uji periode SMA optimal
  4. Pertimbangkan berhenti adaptif alih-alih titik stop loss tetap
  5. Studi menggunakan ukuran posisi berbasis volatilitas untuk perhitungan ukuran perdagangan yang lebih ilmiah
  6. Backtest dengan biaya perdagangan untuk mensimulasikan perdagangan nyata
  7. Pertimbangkan untuk menggabungkan dengan indikator lain untuk meningkatkan kekuatan strategi

Kesimpulan

Strategi ini mengintegrasikan Bollinger Bands dan SMA untuk merancang sistem trend berikut yang relatif lengkap. Ini dapat diandalkan dalam mengidentifikasi keberadaan tren dan memiliki kemampuan pelacakan tren yang kuat. Dengan terus mengoptimalkan strategi stop loss, mengurangi kesalahan sinyal, dan memperkenalkan teknik manajemen risiko ilmiah, strategi ini dapat menjadi sistem yang bermanfaat untuk dilacak dalam perdagangan langsung. Ini menyediakan pendekatan menggabungkan beberapa indikator untuk desain strategi perdagangan kuantitatif.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © mohanee

//@version=4
strategy(title="BB9_MA200_Strategy", overlay=true, pyramiding=1,     default_qty_type=strategy.cash,  initial_capital=10000, currency=currency.USD)  //default_qty_value=10, default_qty_type=strategy.fixed, 


var stopLossVal=0.00

//variables BEGIN
smaLength=input(200,title="MA Length")
bbLength=input(21,title="BB Length")  

bbsrc = input(close, title="BB Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")


stopLoss = input(title="Stop Loss%", defval=5, minval=1)

riskCapital = input(title="Risk % of capital  == Based on this trade size is claculated    numberOfShares = (AvailableCapital*risk/100) / stopLossPoints", defval=10, minval=1)


sma200=ema(close,smaLength)

plot(sma200, title="SMA 200", color=color.orange)


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

//plot bb
plot(basis, "Basis", color=color.teal, style=plot.style_circles , 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=color.teal, transp=95)


strategy.initial_capital = 50000

//Entry---

strategy.entry(id="LE", comment="LE capital="+tostring(strategy.initial_capital + strategy.netprofit ,"######.##"), qty=( (strategy.initial_capital + strategy.netprofit ) * riskCapital / 100)/(close*stopLoss/100) , long=true,  when=strategy.position_size<1 and upperBand>sma200 and lowerBand > sma200 and crossover(close, basis) )     //  // aroonOsc<0  //(strategy.initial_capital * 0.10)/close


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

//partial Exit
tpVal=strategy.position_size>1 ? strategy.position_avg_price * (1+(stopLoss/100) ) : 0.00
strategy.close(id="LE", comment="Partial points="+tostring(close - strategy.position_avg_price, "####.##"),  qty_percent=30 , when=abs(strategy.position_size)>=1 and close>tpVal and crossunder(lowerBand, sma200)   )   //close<ema55 and rsi5Val<20 //ema34<ema55


//close All on stop loss
//stoploss
stopLossVal:=   strategy.position_size>1 ? strategy.position_avg_price * (1-(stopLoss/100) ) : 0.00

strategy.close_all( comment="SL Exit points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and close < stopLossVal  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89//

strategy.close_all( comment="BB9 X SMA200 points="+tostring(close - strategy.position_avg_price, "####.##"),  when=abs(strategy.position_size)>=1 and  crossunder(basis, sma200)  )  //close<ema55 and rsi5Val<20 //ema34<ema55  //close<ema89
    

Lebih banyak