Strategi ini mengimplementasikan strategi perdagangan Bollinger Band yang dinamis dengan kisaran tanggal historis yang dapat dipilih berdasarkan indikator Bollinger Band. Ini memungkinkan pengguna untuk memilih waktu awal dan akhir untuk backtesting, sehingga memungkinkan backtesting dan perbandingan strategi Bollinger Band yang dinamis dalam periode waktu yang berbeda.
Strategi ini diberi nama
Prinsip inti dari strategi ini adalah untuk menghasilkan sinyal perdagangan berdasarkan rel atas dan bawah indikator Bollinger Band yang dinamis. rel tengah Bollinger Band adalah rata-rata bergerak sederhana n-hari, sementara rel atas dan bawah adalah rel tengah ditambah dan dikurangi m kali standar deviasi n-hari masing-masing.
Fitur inti lain dari strategi ini adalah memungkinkan pengguna untuk memilih rentang waktu backtesting. Strategi ini menyediakan parameter input untuk memilih waktu awal dan akhir untuk backtesting dalam beberapa dimensi seperti bulan, hari, tahun, jam, menit, dll. Ini memungkinkan pengguna untuk memilih periode waktu historis yang berbeda untuk backtest dan memvalidasi strategi, mencapai analisis strategi yang lebih komprehensif dan dinamis.
Secara khusus, strategi ini mengkonversi waktu awal dan akhir yang dipilih ke dalam format timestamp melalui fungsi timestamp ((), dan kemudian menetapkan jendela waktu backtesting yang valid dari strategi melalui kondisi time>=start dan time<=finish. Ini mencapai fungsi pemilihan rentang waktu dinamis.
Keuntungan terbesar dari strategi ini adalah bahwa ia sangat menggabungkan strategi Bollinger Band dinamis dengan pilihan rentang waktu yang sewenang-wenang. Hal ini memungkinkan pengguna untuk backtest dan memverifikasi strategi dengan cara yang lebih fleksibel dan komprehensif. Keuntungan spesifik adalah:
Mengimplementasikan strategi Bollinger Band yang dinamis yang dapat menangkap sinyal pembalikan tren selama naik turun pasar untuk perdagangan tren.
Mendukung memilih rentang waktu historis sewenang-wenang untuk backtesting untuk menganalisis kinerja strategi di lingkungan pasar yang berbeda, mencapai optimasi strategi yang dinamis.
Dikombinasikan dengan kemampuan penyesuaian indikator Bollinger Band, strategi ini dapat secara otomatis menyesuaikan parameter untuk beradaptasi dengan perubahan kondisi pasar yang lebih luas.
Menyediakan parameter yang dapat disesuaikan untuk penggunaan jangka panjang dan jangka pendek sehingga pengguna dapat mengoptimalkan parameter sesuai dengan kebutuhan mereka sendiri untuk membuat strategi lebih praktis.
Memungkinkan pemilihan jam dan menit tertentu untuk backtesting dengan akurasi yang lebih tinggi untuk analisis strategi yang lebih rinci.
Mendukung bahasa Cina dan Inggris untuk pengalaman pengguna yang baik.
Risiko utama dari strategi ini terletak pada ketidakpastian indikator Bollinger Bands dalam menentukan pembalikan tren.
Indikator Bollinger Bands itu sendiri tidak menentukan fluktuasi pasar dengan sempurna, dan mungkin ada sinyal palsu.
Pemilihan yang tidak tepat dari parameter Bollinger Bands dapat menyebabkan kinerja strategi yang buruk atau bahkan kerugian.
Kemungkinan kegagalan indikator dalam kondisi pasar khusus.
Pemilihan rentang tanggal backtest yang tidak tepat dapat melewatkan beberapa kondisi pasar penting.
Metode berikut dapat digunakan untuk mengendalikan dan memperbaiki risiko ini:
Mengoptimalkan parameter Bollinger Band dan menyesuaikan siklus rel tengah untuk menyesuaikan dengan produk dan periode waktu yang berbeda.
Gunakan indikator lain seperti rata-rata bergerak untuk konfirmasi untuk mengurangi sinyal palsu.
Uji lebih banyak periode waktu pasar untuk mengevaluasi kekuatan strategi.
Tetapkan titik stop loss untuk mengendalikan single loss.
Ada beberapa arah utama untuk mengoptimalkan strategi ini:
Menggabungkan algoritma pembelajaran mesin untuk mencapai optimasi dinamis dari parameter Bollinger Band.
Meningkatkan fungsionalitas seperti pengujian break-back untuk sepenuhnya mengevaluasi stabilitas parameter.
Tambahkan fungsi seperti memindahkan stop loss dan melacak stop loss untuk mengunci keuntungan dan mengurangi risiko.
Mengoptimalkan logika masuk dan menetapkan kondisi konfirmasi seperti lonjakan volume perdagangan.
Menggabungkan strategi seperti indeks saham futures arbitrage untuk memperluas ruang lingkup aplikasi strategi.
Tambahkan fungsi eksekusi perdagangan otomatis untuk transisi dari backtesting ke perdagangan langsung.
Optimalisasi ini dapat sangat meningkatkan kinerja praktis dan profitabilitas yang stabil dari strategi.
Strategi ini telah berhasil mengintegrasikan strategi Bollinger Band dengan pilihan rentang waktu sejarah yang sewenang-wenang. Analisis backtesting yang sangat fleksibel dan dinamis memungkinkan pengguna untuk menyesuaikan dan mengoptimalkan parameter strategi dengan akurat di lingkungan pasar yang berbeda. Visualisasi yang disediakan juga sangat meningkatkan pengalaman pengguna. Diprediksi bahwa strategi ini dapat memberikan pengguna alat perdagangan kuantitatif yang kuat dan efisien.
/*backtest start: 2024-01-05 00:00:00 end: 2024-02-04 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("BB Range", shorttitle = "BB Range", overlay=true, max_bars_back=200) // Revision: 1 // Author: @allanster // === INPUT BACKTEST RANGE === FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 20, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2019, title = "From Year", minval = 2017) FromHour = input(defval = 17, title = "From Hour", minval = 00) FromMinute = input(defval = 00, title = "From Minute", minval = 00) ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 9999, title = "To Year", minval = 2017) ToHour = input(defval = 23, title = "To Hour", minval = 00) ToMinute = input(defval = 59, title = "To Minute", minval = 00) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, FromHour, FromMinute) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, ToHour, ToMinute) // backtest finish window window() => true source = close length = input(20, minval=1) mult = input(2.0, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev upper_stop = upper * 1.05 lower_stop = lower * 0.95 buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (crossover(source, lower)) strategy.entry("BBandLE", strategy.long, stop=lower_stop, when = window(), oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper_stop, when=window(), oca_name="BollingerBands",comment="BBandSE") else strategy.cancel(id="BBandSE")