Ini adalah strategi perdagangan multihead yang dapat disesuaikan untuk Bitcoin. Ini memungkinkan Anda untuk melakukan over atau under berdasarkan pada hari perdagangan yang berbeda dalam seminggu. Harga mungkin cenderung bergerak ke satu arah atau ke arah lain pada hari perdagangan yang berbeda setiap minggu. Strategi ini memungkinkan Anda untuk menguji hari perdagangan yang berbeda dalam serangkaian tanggal untuk memanfaatkan ini.
Pastikan Anda menggunakan grafik garis waktu saat melihat kinerja dan riwayat perdagangan untuk memastikan skrip bekerja sesuai dengan yang diharapkan dan Anda mendapatkan sebanyak mungkin data sejarah dari Trading View.
Logika inti dari strategi ini adalah memungkinkan pengguna untuk memilih untuk melakukan banyak transaksi setiap hari dalam seminggu, melakukan perdagangan kosong atau tidak melakukan transaksi sama sekali.
Pertama, memungkinkan pengguna untuk mengatur rentang tanggal pengukuran, termasuk bulan, tanggal, tahun awal dan bulan, tanggal, tahun akhir.
Kemudian, ia menggunakan array timeframes untuk menyimpan representasi angka untuk setiap hari dalam seminggu, dari 0 untuk hari Minggu hingga 6 untuk hari Sabtu.
Array timeframes_options lainnya digunakan untuk menyimpan opsi untuk melakukan perdagangan multihead, kosong atau tidak setiap hari. Ini diatur dengan pilihan input.
Dalam siklus for, strategi ini memeriksa apakah hari perdagangan saat ini cocok dengan suatu hari dalam array timeframes. Jika cocok, dan opsi berbeda dari hari sebelumnya, maka tutuplah semua posisi yang belum terikat terlebih dahulu.
Jika opsi tidak bertipe multicolor, maka bukalah posisi sesuai dengan arah multicolor atau kosong.
Dengan demikian, strategi ini dapat melakukan perdagangan multihead pada tanggal yang ditetapkan, berdasarkan pengaturan untuk setiap hari dalam seminggu.
Keuntungan utama dari strategi ini adalah menawarkan perdagangan multihead yang sangat disesuaikan. Pengguna bebas memilih arah perdagangan mana yang akan dilakukan setiap hari dalam seminggu.
Berbeda dengan strategi perdagangan mingguan yang tetap, strategi ini dapat disesuaikan secara fleksibel. Jika beberapa hari tidak berjalan dengan baik, Anda dapat dengan mudah mengubahnya hanya untuk berdagang pada hari-hari lain.
Rentang tanggal retesting juga sangat fleksibel, Anda dapat menguji periode waktu yang ditentukan pengguna untuk melihat kombinasi tanggal mana yang paling efektif.
Logika transaksi sangat jelas dan sederhana, mudah dipahami dan dimodifikasi. Pengguna dapat menyesuaikan parameter tanpa perlu memprogram.
Strategi ini juga akan secara otomatis melunasi posisi yang belum dilunasi setiap hari, menghindari risiko yang tidak perlu.
Risiko utama dari strategi ini adalah bahwa pilihan perdagangan harian yang disiapkan pengguna tidak selalu cocok untuk semua rentang tanggal.
Misalnya, bekerja lebih banyak pada hari kerja dan bekerja lebih banyak pada akhir pekan mungkin terbukti efektif pada periode tertentu, tetapi mungkin gagal pada periode lain.
Oleh karena itu, harus hati-hati menguji berbagai rentang tanggal, jangan bergantung pada hasil pengukuran satu kali.
Risiko lain adalah tidak dapat menghentikan posisi yang tidak rata dalam waktu yang tepat saat perubahan arah setiap hari. Hal ini dapat menyebabkan peningkatan kerugian. Namun, strategi ini mencoba untuk mengurangi masalah ini dengan melakukan posisi yang tidak rata secara otomatis.
Secara keseluruhan, strategi ini lebih bergantung pada optimasi parameter, yang membutuhkan pengujian yang cukup untuk menemukan kombinasi parameter yang sesuai dengan kondisi pasar yang berbeda.
Strategi ini dapat dioptimalkan dengan cara:
Tambahkan Stop Loss Logic saat perubahan arah setiap hari, setelan Stop Loss bergerak saat posisi sedang menguntungkan, kurangi penarikan.
Menambahkan filter yang akan memberi sinyal ketika harga melewati titik tinggi atau rendah pada hari tertentu, untuk menghindari perdagangan berulang ketika tidak ada tren.
Kurangi ukuran posisi saat volatilitas tinggi, dan tingkatkan posisi saat volatilitas rendah, sehingga risiko dapat dikendalikan.
Pada hari perdagangan, pilihan untuk menambahkan pembelajaran mesin untuk menilai probabilitas perdagangan harian berdasarkan data historis, menghasilkan arah harian yang dinamis.
Menambahkan logika penanganan kejadian yang tidak terduga, seperti penundaan transaksi saat terjadi peristiwa keuangan besar, untuk menghindari terjadinya penipuan.
Strategi ini memberikan kemampuan perdagangan multihead yang sangat fleksibel dengan memilih arah harian. Pengguna dapat dengan bebas menggabungkan tes untuk menemukan parameter terbaik. Namun, strategi ini memiliki persyaratan pengoptimalan yang lebih tinggi dan memerlukan banyak pengujian untuk menemukan pengaturan yang sesuai untuk pasar yang berbeda.
/*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)))