Bollinger Band Dinamis Mengambil Keuntungan dan Dinamis Posisi Menambahkan Strategi

Penulis:ChaoZhang, Tanggal: 2024-03-22
Tag:

img

Tinjauan Strategi

Strategi ini didasarkan pada indikator Bollinger Band. Strategi ini membuka posisi ketika harga mencapai band atas atau bawah, dan mengatur logika penambahan keuntungan dan posisi dinamis yang dinamis. Ketika harga bangkit dari band bawah dan menembus band tengah, strategi menganggap tren naik telah terbentuk. Pada saat ini, strategi akan menambahkan posisi ketika harga menarik kembali ke persentase tertentu dari band tengah. Ketika harga akhirnya menembus band atas, strategi menutup posisi untuk mengambil keuntungan. Dalam tren menurun, strategi mengadopsi logika operasi yang berlawanan. Melalui mengambil keuntungan dinamis dan penambahan posisi dinamis berdasarkan Bollinger Band, strategi ini dapat memperoleh lebih banyak keuntungan di pasar tren.

Prinsip Strategi

Prinsip utama dari strategi ini adalah sebagai berikut:

  1. Menghitung band atas, tengah dan bawah Bollinger Bands. Band atas dan bawah dihitung dengan menambahkan dan mengurangi N kali standar deviasi dari band tengah, di mana N dapat disesuaikan.

  2. Ketika harga penutupan menembus band bawah dan tidak ada posisi yang dibuka sebelumnya, strategi membuka posisi panjang; ketika harga penutupan menembus band atas dan tidak ada posisi yang dibuka sebelumnya, strategi membuka posisi pendek.

  3. Setelah membuka posisi panjang, jika harga penutupan pecah ke atas melalui pita tengah, dianggap bahwa tren naik telah terbentuk, dan variabel basisCrossed ditandai sebagai benar. Setelah membuka posisi pendek, jika harga penutupan pecah ke bawah melalui pita tengah, basisCrossed juga ditandai sebagai benar.

  4. Dalam kasus posisi long, jika harga penutupan memecahkan band bawah dan basisCrossed adalah benar, dan harga saat ini telah turun lebih dari 2% dari harga pembukaan asli, strategi menambahkan posisi pada saat ini, dan mengatur ulang basisCrossed ke false pada saat yang sama. Dalam kasus posisi short adalah sebaliknya.

  5. Jika harga penutupan menembus band atas saat memegang posisi panjang, atau harga penutupan menembus band bawah saat memegang posisi pendek, strategi menutup semua posisi, mengambil keuntungan, dan mengatur ulang berbagai variabel penanda untuk mempersiapkan pembukaan berikutnya.

Melalui pembukaan dinamis di atas, menambahkan posisi dan mengambil logika keuntungan, strategi ini dapat beroperasi secara fleksibel di pasar tren untuk mendapatkan keuntungan yang lebih tinggi. Pada saat yang sama, menggunakan indikator teknis klasik Bollinger Bands untuk menangkap tren juga memberikan strategi fleksibilitas dan stabilitas tertentu.

Analisis Keuntungan

  1. Dinamis mengambil keuntungan: Strategi ini secara dinamis menyesuaikan tingkat mengambil keuntungan melalui band atas dan bawah Bollinger Bands. Dibandingkan dengan titik tetap mengambil keuntungan, dapat lebih beradaptasi dengan fluktuasi pasar dan melindungi keuntungan secara fleksibel.

  2. Penambahan posisi dinamis: Pada tahap mundur setelah tren terbentuk, strategi secara bertahap akan menambahkan posisi, yang dapat memperoleh keuntungan yang lebih tinggi di pasar tren. Penambahan posisi dinamis membuat strategi ini lebih menguntungkan dalam perdagangan tren.

  3. Parameter fleksibel: Parameter Bollinger Bands, seperti nilai N dan P, dapat disesuaikan secara fleksibel untuk menyesuaikan dengan karakteristik pasar dan gaya perdagangan yang berbeda.

  4. Kemampuan beradaptasi yang kuat: Bollinger Band adalah indikator teknis klasik dengan kemampuan yang baik untuk menangkap tren.

  5. Logika yang jelas: Kondisi pembukaan dan penutupan dan logika penambahan dan pengurangan posisi strategi ini sangat jelas dan mudah dimengerti, yang nyaman bagi trader untuk memahami dan mengendalikan. Logika yang jelas juga berarti lebih mudah melakukan pengembangan sekunder dan optimasi strategi.

Analisis Risiko

  1. Pasar berosilasi: Strategi Bollinger Band sering berkinerja buruk di pasar berosilasi. Pada saat ini, pembukaan dan penutupan posisi yang sering akan menyebabkan lebih banyak biaya transaksi, yang akan mempengaruhi pengembalian keseluruhan.

  2. Pembalikan tren: Pada saat penting pembalikan tren, strategi ini dapat mengalami penilaian yang tertinggal, yang mengarah pada penambahan posisi ke arah yang salah, menghasilkan penarikan yang lebih besar.

  3. Situasi ekstrim: Dalam situasi ekstrim (seperti kenaikan dan penurunan tajam), tren Bollinger Bands mungkin tidak normal, menyebabkan strategi gagal.

  4. Pengaturan parameter: Pengaturan parameter yang tidak tepat akan sangat mempengaruhi kinerja strategi ini. Misalnya, mengatur nilai N terlalu kecil akan menyebabkan transaksi yang sering, dan mengatur nilai N terlalu besar akan menyebabkan lag sinyal.

  5. Peristiwa angsa hitam: Jika ada peristiwa politik dan ekonomi besar, strategi ini mungkin menghadapi eksposur risiko yang lebih besar.

Untuk mengontrol risiko di atas, kita dapat memulai dari dua aspek: 1) Menetapkan parameter yang wajar dan mengoptimalkan parameter untuk target dan kondisi pasar yang berbeda; 2) Menambahkan lebih banyak kondisi penyaringan ke strategi, seperti penilaian tren, penyaringan volatilitas, dll., Untuk meningkatkan kualitas sinyal.

Arah Optimalisasi

  1. Penyaringan tren: Tambahkan logika penilaian tren saat membuka posisi, seperti menggunakan pengaturan bullish MA sebagai kondisi penyaringan untuk pergi panjang, dan pengaturan bearish MA sebagai kondisi penyaringan untuk pergi pendek, yang dapat meningkatkan tingkat keberhasilan penangkapan tren.

  2. Penyaringan volatilitas: Bollinger Bands sebenarnya adalah semacam indikator volatilitas. Indikator volatilitas seperti ATR dan volatilitas historis dapat diperkenalkan untuk mengidentifikasi keadaan volatilitas pasar. Posisi dapat secara tepat dikurangi dalam keadaan volatilitas tinggi dan ditingkatkan dalam keadaan volatilitas rendah, sehingga dapat mengendalikan risiko dengan lebih baik.

  3. Optimasi parameter dinamis: Parameter Bollinger Bands dapat disesuaikan secara dinamis sesuai dengan kondisi pasar. Misalnya, nilai N dapat ditingkatkan di pasar tren dan berkurang di pasar osilasi. Ini membutuhkan penggunaan pembelajaran mesin dan teknologi lain untuk menemukan parameter optimal melalui pelatihan pada data historis.

  4. Strategi gabungan: Strategi ini dapat dikombinasikan dengan strategi klasik lainnya seperti MACD dan RSI untuk membentuk strategi gabungan, meningkatkan ketahanan dan profitabilitas sistem.

  5. Tambahkan logika stop-loss: Saat ini, strategi ini tidak memiliki logika stop-loss yang jelas.

  6. Optimasi manajemen posisi: Dalam proses penjumlahan dan pengurangan posisi, metode manajemen posisi klasik seperti rumus Kelly dan nilai F optimal dapat digunakan untuk memaksimalkan keuntungan di bawah risiko yang dapat dikendalikan.

Melalui optimalisasi di atas, rasio risiko-manfaat dari strategi ini dapat ditingkatkan lebih lanjut, memungkinkan untuk lebih beradaptasi dengan perubahan lingkungan pasar dan membawa pengembalian yang stabil bagi pedagang.

Ringkasan

Bollinger Bands adalah strategi pelacakan tren klasik. Berdasarkan Bollinger Bands, strategi ini mencari keuntungan tren yang lebih tinggi dengan menyesuaikan posisi secara dinamis. Strategi ini memiliki logika yang jelas, parameter yang fleksibel, dan kemampuan beradaptasi yang kuat. Ini adalah strategi perdagangan kuantitatif yang layak untuk penelitian dan penerapan yang mendalam. Tetapi pada saat yang sama, kita juga harus melihat bahwa strategi ini berkinerja buruk di pasar yang berosilasi dan tidak memiliki kemampuan untuk menangani situasi ekstrem dan peristiwa angsa hitam. Ini mengharuskan kita untuk fokus pada optimasi parameter, pengendalian risiko dan strategi kombinasi dalam aplikasi aktual, dan secara teratur menguji efektivitas strategi dalam kondisi pasar yang berbeda. Dengan memahami secara mendalam logika internal strategi ini dan terus mengoptimalkan dan memperbaikinya, saya percaya strategi ini dapat menjadi alat penting bagi pedagang kuantitatif dan investor untuk membawa pengembalian jangka panjang dan stabil.


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

//@version=5
//  Bollinger Bands 1Bb 상하한 크로스 롱숏 실행

strategy(shorttitle="BB", title="Bollinger Bands", overlay=true )
 // bb
length = input.int(12, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
add = input.float(0.98, step = 0.001)
// plot(upper - lower, "Basis", color=color.red, offset = offset)
var bool entryMade = false
var bool basisCrossed = false
var bool upperCrossed = false
var bool lowerCrossed = false
strategy.initial_capital = 50000
if close < lower and not entryMade
    strategy.entry("롱", strategy.long, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossover(close, basis) and entryMade and not upperCrossed
    basisCrossed := true
if close > upper
    upperCrossed := true
if close < lower and entryMade and basisCrossed and not upperCrossed and close < strategy.position_avg_price*add
    strategy.entry("추가롱", strategy.long, strategy.initial_capital/10000)
    basisCrossed := false
if close > upper
    strategy.close("롱")
    strategy.close("추가롱")
    entryMade := false
    basisCrossed := false
    upperCrossed := false
///////////반대 포지션
if close > upper and not entryMade
    strategy.entry("s", strategy.short, qty = strategy.initial_capital/10000)
    entryMade := true
if ta.crossunder(close, basis) and entryMade and not lowerCrossed
    basisCrossed := true
if close < lower
    lowerCrossed := true
if close > upper and entryMade and basisCrossed and not lowerCrossed and close > strategy.position_avg_price*add
    strategy.entry("추가s", strategy.short, strategy.initial_capital/10000)
    basisCrossed := false
if close < lower
    strategy.close("s")
    strategy.close("추가s")
    entryMade := false
    basisCrossed := false
    upperCrossed := false


Lebih banyak