Strategi Dagangan Biasa Hari Minggu

Penulis:ChaoZhang, Tarikh: 2023-09-26 20:49:44
Tag:

Ringkasan

Ini adalah strategi dagangan lama / pendek khusus untuk bitcoin yang membolehkan pengujian semula rindu atau pendek pada hari-hari yang berbeza dalam minggu. Harga mungkin cenderung bergerak ke satu arah atau yang lain pada setiap hari kerja, dan strategi ini membolehkan pengujian merentasi pelbagai tarikh untuk memanfaatkan ini.

Pastikan anda berada pada jangka masa harian apabila melihat prestasi dan sejarah perdagangan untuk memastikan skrip berfungsi seperti yang dimaksudkan dan anda mempunyai data sejarah maksimum dari TradingView.

Logika Strategi

Logik teras strategi ini adalah untuk membolehkan pengguna memilih perdagangan panjang, pendek atau tidak ada untuk setiap hari dalam seminggu.

Pertama, ia membolehkan pengguna untuk menetapkan julat tarikh untuk backtesting, termasuk bulan permulaan, hari, tahun dan akhir bulan, hari, tahun.

Kemudian, ia menggunakan bingkai masa array untuk menyimpan perwakilan numerik setiap hari dalam seminggu, dari Ahad 0 hingga Sabtu 6.

Satu lagi array timeframes_options digunakan untuk menyimpan pilihan perdagangan panjang, pendek atau tidak untuk setiap hari.

Dalam gelung for, strategi memeriksa sama ada hari dagangan semasa sepadan dengan hari dalam array bingkai masa. Jika ya, dan opsyen berbeza dengan hari sebelumnya, ia pertama menutup semua kedudukan terbuka.

Jika opsyen tidak None, ia membuka kedudukan dalam arah yang sesuai berdasarkan panjang atau pendek yang dipilih.

Oleh itu, strategi boleh berdagang panjang / pendek dalam julat tarikh yang ditetapkan berdasarkan tetapan untuk setiap hari dalam minggu.

Analisis Kelebihan

Kelebihan utama strategi ini adalah menyediakan perdagangan panjang / pendek yang sangat disesuaikan. Pengguna mempunyai kebebasan penuh dalam memilih arah perdagangan untuk setiap hari dalam seminggu.

Tidak seperti strategi dagangan mingguan tetap, ini boleh disesuaikan dengan fleksibel. Hari yang kurang berprestasi dapat dengan mudah diubahsuai untuk hanya berdagang hari lain.

Julat tarikh backtest juga sangat fleksibel, yang membolehkan ujian mana-mana tempoh yang ditentukan pengguna untuk melihat kombinasi tarikh mana yang berfungsi dengan terbaik.

Logik perdagangan sangat jelas dan mudah, mudah difahami dan diubah suai. Pengguna boleh menyesuaikan parameter tanpa pengekodan.

Strategi ini juga automatik menutup kedudukan pada perubahan arah setiap hari, mengelakkan risiko yang tidak perlu.

Analisis Risiko

Risiko utama ialah pilihan dagangan harian yang dipilih pengguna mungkin tidak sesuai dengan setiap julat tarikh.

Sebagai contoh, lama pada hari kerja dan hujung minggu pendek mungkin terbukti berkesan untuk beberapa tempoh tetapi gagal di yang lain.

Jadi julat tarikh mesti diuji dengan teliti, dan tidak bergantung pada satu hasil backtest.

Risiko lain adalah ketidakupayaan untuk memotong kerugian pada masa apabila arah berubah setiap hari.

Secara keseluruhan, strategi ini sangat bergantung pada pengoptimuman, dan memerlukan ujian yang mencukupi untuk mencari set parameter yang sesuai dengan keadaan pasaran yang berbeza.

Arahan pengoptimuman

Strategi ini boleh ditingkatkan dalam beberapa aspek:

  1. Tambah logik stop loss pada perubahan arah harian, menetapkan hentian belakang apabila kedudukan menguntungkan untuk mengehadkan pengeluaran.

  2. Tambah penapis, hanya mengambil isyarat apabila memecahkan tinggi / rendah hari tertentu, mengelakkan perdagangan tanpa trend.

  3. Mengurangkan saiz kedudukan dalam tempoh turun naik yang tinggi, dan meningkatkan apabila turun naik rendah untuk mengawal risiko.

  4. Tambah pembelajaran mesin kepada pilihan hari dagangan, menilai kebarangkalian setiap hari berdasarkan data sejarah, menjana arah harian yang dinamik.

  5. Tambah logik untuk menangani peristiwa tiba-tiba seperti berita utama dengan menghentikan perdagangan untuk mengelakkan terjebak.

Kesimpulan

Strategi ini menyediakan keupayaan perdagangan panjang / pendek yang sangat fleksibel melalui pemilihan arah harian. Pengguna boleh menggabungkan ujian dengan bebas untuk parameter optimum. Tetapi ia mempunyai keperluan pengoptimuman yang tinggi, memerlukan ujian yang luas untuk mencari tetapan yang sesuai dengan pasaran yang berbeza. Menambah penyesuaian dinamik seperti berhenti, penapis dapat mengurangkan risiko dan meningkatkan ketahanan. Dengan pengoptimuman parameter yang berhati-hati, strategi boleh menjadi alat perdagangan arah harian yang berkesan.


/*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)))


Lebih lanjut