Strategi Dagangan Harian


Tarikh penciptaan: 2023-09-26 20:49:44 Akhirnya diubah suai: 2023-09-26 20:49:44
Salin: 0 Bilangan klik: 611
1
fokus pada
1617
Pengikut

Ringkasan

Ini adalah strategi dagangan berbilang kepala kosong yang disesuaikan untuk Bitcoin. Ia membolehkan anda melakukan over atau under berdasarkan pada hari dagangan yang berbeza dalam seminggu. Harga mungkin cenderung bergerak ke satu arah atau ke arah lain pada hari dagangan yang berbeza setiap minggu, strategi ini membolehkan anda menguji hari dagangan yang berbeza dalam rangkaian tarikh untuk memanfaatkan ini.

Pastikan anda menggunakan carta garisan semasa melihat prestasi dan rekod sejarah perdagangan untuk memastikan skrip berfungsi seperti yang diharapkan dan anda mendapatkan sebanyak mungkin data sejarah dari Trading View.

Prinsip Strategi

Logik teras strategi ini adalah untuk membolehkan pengguna memilih untuk melakukan perdagangan berganda setiap hari dalam seminggu, perdagangan kosong atau tidak melakukan sebarang perdagangan.

Pertama, ia membolehkan pengguna menetapkan julat tarikh pengukuran, termasuk permulaan bulan, tarikh, tahun dan akhir bulan, tarikh, tahun.

Kemudian, ia menggunakan sekumpulan timeframes untuk menyimpan perwakilan nombor untuk setiap hari dalam seminggu, dari 0 pada hari Ahad hingga 6 pada hari Sabtu.

Satu lagi set timeframes_options digunakan untuk menyimpan pilihan untuk berdagang setiap hari, kosong atau tidak berdagang. Ia ditetapkan melalui pilihan input.

Dalam kitaran for, strategi ini memeriksa sama ada hari dagangan semasa sepadan dengan suatu hari dalam susunan jangka masa. Jika sepadan, dan pilihannya berbeza dengan hari sebelumnya, tutuplah semua kedudukan yang belum ditutup.

Jika pilihan tidak berlekatan, maka buka kedudukan yang sesuai dengan arah berlekatan atau kosong yang dipilih.

Dengan cara ini, strategi ini boleh melakukan perdagangan berganda pada tarikh yang ditetapkan, berdasarkan tetapan untuk setiap hari dalam seminggu.

Analisis kelebihan

Kelebihan utama strategi ini ialah ia menawarkan perdagangan berbilang kepala kosong yang sangat disesuaikan. Pengguna bebas memilih arah perdagangan yang akan dilakukan setiap hari dalam seminggu.

Berbeza dengan strategi perdagangan mingguan yang tetap, strategi ini boleh disesuaikan dengan fleksibel. Jika beberapa hari hasilnya tidak sesuai, anda boleh dengan mudah mengubah hanya perdagangan pada hari-hari lain.

Julat tarikh pengesanan juga sangat fleksibel, dan anda boleh menguji mana-mana tempoh masa yang ditetapkan oleh pengguna untuk melihat kombinasi tarikh mana yang paling berkesan.

Logik urus niaga sangat jelas dan mudah difahami dan diubah suai. Pengguna boleh menyesuaikan parameter tanpa perlu mengprogram.

Strategi ini juga secara automatik melonggarkan kedudukan yang belum dilonggarkan apabila arah berubah setiap hari, untuk mengelakkan risiko yang tidak perlu.

Analisis risiko

Risiko utama strategi ini adalah bahawa pilihan perdagangan harian yang ditetapkan oleh pengguna tidak semestinya sesuai untuk semua julat tarikh.

Sebagai contoh, bekerja lebih banyak pada hujung minggu mungkin terbukti berkesan pada satu tempoh masa, tetapi mungkin gagal pada tempoh masa yang lain.

Oleh itu, perlu berhati-hati untuk menguji pelbagai julat tarikh dan tidak bergantung pada satu-satu hasil pengesanan semula. Pengesanan parameter mestilah digabungkan dengan keadaan pasaran tertentu.

Risiko lain ialah tidak dapat menghentikan kedudukan rata dalam masa yang tepat apabila arah berubah setiap hari. Ini boleh menyebabkan kerugian berkembang. Tetapi strategi ini cuba mengurangkan masalah ini dengan meletakkan kedudukan rata secara automatik.

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

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan:

  1. Tambah logik stop loss apabila arah berubah setiap hari, set stop loss bergerak apabila kedudukan berada dalam keuntungan, kurangkan penarikan balik.

  2. Menambah penapis untuk memberi isyarat apabila harga melampaui paras tertinggi atau terendah pada hari tertentu, untuk mengelakkan perdagangan berulang apabila tiada trend.

  3. Kurangkan saiz kedudukan semasa turun naik tinggi, dan tambah kedudukan semasa turun naik rendah, untuk mengawal risiko.

  4. Menggunakan pembelajaran mesin untuk memilih hari dagangan, peluang dagangan setiap hari berdasarkan data sejarah, dan menghasilkan arah harian yang dinamik.

  5. Menambah logik untuk menangani kejadian yang tidak dijangka, seperti menghentikan perdagangan apabila berlaku peristiwa kewangan yang besar, untuk mengelakkan terikat.

ringkaskan

Strategi ini menawarkan keupayaan perdagangan multihead yang sangat fleksibel dengan memilih arah harian. Pengguna boleh bebas menggabungkan ujian untuk mencari parameter terbaik. Tetapi strategi ini mempunyai keperluan pengoptimuman yang lebih tinggi dan memerlukan banyak ujian untuk mencari tetapan yang sesuai untuk pasaran yang berbeza.

Kod sumber strategi
/*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)))