Ini adalah strategi trading custom long/short untuk bitcoin yang memungkinkan backtesting longing atau shorting pada hari-hari yang berbeda dalam seminggu. harga mungkin cenderung bergerak ke satu arah atau yang lain pada setiap hari kerja, dan strategi ini memungkinkan pengujian di berbagai tanggal untuk memanfaatkan ini.
Pastikan Anda berada pada kerangka waktu harian saat melihat kinerja dan riwayat perdagangan untuk memastikan skrip bekerja sesuai tujuan dan Anda memiliki data historis maksimum dari TradingView.
Logika inti dari strategi ini adalah untuk memungkinkan pengguna untuk memilih panjang, pendek atau tidak ada perdagangan untuk setiap hari dalam seminggu.
Pertama, memungkinkan pengguna untuk mengatur rentang tanggal untuk backtesting, termasuk bulan awal, hari, tahun dan akhir bulan, hari, tahun.
Kemudian, menggunakan timeframe array untuk menyimpan representasi numerik dari setiap hari dalam seminggu, dari Minggu 0 sampai Sabtu 6.
Array lain timeframes_options digunakan untuk menyimpan pilihan perdagangan panjang, pendek atau tidak untuk setiap hari.
Dalam loop for, strategi memeriksa apakah hari perdagangan saat ini sesuai dengan hari dalam array timeframe. Jika demikian, dan opsi berbeda dari hari sebelumnya, pertama-tama menutup semua posisi terbuka.
Jika opsi tidak
Dengan demikian, strategi dapat berdagang panjang/pendek di kisaran tanggal yang ditetapkan berdasarkan pengaturan untuk setiap hari dalam seminggu.
Keuntungan utama dari strategi ini adalah menyediakan perdagangan panjang / pendek yang sangat dapat disesuaikan.
Tidak seperti strategi perdagangan mingguan yang tetap, strategi ini dapat disesuaikan secara fleksibel.
Jangkauan tanggal backtest juga sangat fleksibel, memungkinkan pengujian setiap periode yang ditentukan pengguna untuk melihat kombinasi tanggal mana yang berkinerja terbaik.
Logika perdagangan sangat jelas dan sederhana, mudah dimengerti dan dimodifikasi.
Strategi ini juga secara otomatis menutup posisi pada perubahan arah setiap hari, menghindari risiko yang tidak perlu.
Risiko utama adalah bahwa pilihan perdagangan harian yang dipilih pengguna mungkin tidak sesuai dengan setiap rentang tanggal.
Misalnya, waktu yang lama pada hari kerja dan akhir pekan yang pendek mungkin terbukti efektif untuk beberapa periode tetapi gagal di yang lain.
Jadi rentang tanggal harus diuji dengan hati-hati, dan tidak bergantung pada satu hasil backtest.
Risiko lain adalah ketidakmampuan untuk memotong kerugian tepat waktu ketika arah berubah setiap hari.
Secara keseluruhan, strategi ini sangat bergantung pada optimasi, dan membutuhkan pengujian yang cukup untuk menemukan set parameter yang sesuai dengan kondisi pasar yang berbeda.
Strategi ini dapat ditingkatkan dalam beberapa aspek:
Tambahkan logika stop loss pada perubahan arah harian, mengatur trailing stop ketika posisi menguntungkan untuk membatasi drawdown.
Tambahkan filter, hanya mengambil sinyal pada hari tertentu tinggi / rendah, menghindari perdagangan tanpa tren.
Mengurangi ukuran posisi pada periode volatilitas tinggi, dan meningkatkan ketika volatilitas rendah untuk mengendalikan risiko.
Tambahkan pembelajaran mesin ke pilihan hari perdagangan, menilai probabilitas setiap hari berdasarkan data historis, menghasilkan arah harian yang dinamis.
Tambahkan logika untuk menangani peristiwa mendadak seperti berita besar dengan menghentikan perdagangan untuk menghindari terjebak offside.
Strategi ini menyediakan kemampuan trading long/short yang sangat fleksibel melalui pilihan arah harian. Pengguna dapat secara bebas menggabungkan tes untuk parameter optimal. Namun memiliki persyaratan optimasi yang tinggi, membutuhkan pengujian ekstensif untuk menemukan pengaturan yang sesuai dengan pasar yang berbeda. Menambahkan peningkatan seperti stop, filter, penyesuaian dinamis dapat mengurangi risiko dan meningkatkan ketahanan. Dengan optimasi parameter yang bijaksana, strategi dapat menjadi alat perdagangan arah harian yang efektif.
/*backtest start: 2022-09-19 00:00:00 end: 2023-09-25 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/ //@version=4 // strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity) frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month") fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day") fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year") tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month") today = input(defval = 31, minval = 01, maxval = 31, title = "To day") toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year") timeframes = array.new_int(7, 1) timeframes_options = array.new_string(7, 'None') array.set(timeframes,0,7) array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday')) array.set(timeframes,1,1) array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday')) array.set(timeframes,2,2) array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday')) array.set(timeframes,3,3) array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday')) array.set(timeframes,4,4) array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday')) array.set(timeframes,5,5) array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday')) array.set(timeframes,6,6) array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday')) for i = 0 to array.size(timeframes) - 1 if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1) strategy.close_all() if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1) if array.get(timeframes_options, i) == 'Long' strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) else if array.get(timeframes_options, i) == 'Short' strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))