Strategi Pelaburan Kuantitatif Berdasarkan Tarikh Beli Bulanan

Penulis:ChaoZhang, Tarikh: 2023-11-24 14:10:23
Tag:

img

Ringkasan

Idea utama strategi ini adalah untuk mencari tarikh pembelian terbaik setiap bulan dengan membeli aset digital pada tarikh itu dan menjualnya pada akhir bulan, untuk mencapai pulangan pelaburan yang optimum.

Prinsip Strategi

Strategi ini berjalan berdasarkan tarikh pembelian bulanan dan tarikh jual yang ditakrifkan oleh pengguna. Ia pergi panjang pada tarikh pembelian dengan membeli aset, dan menutup kedudukan pada tarikh penjualan jika ditetapkan. Jika tidak, ia menutup kedudukan pada tarikh akhir strategi. Ini boleh menguji perbezaan keuntungan dari tarikh pembelian bulanan yang berbeza.

Logik untuk isyarat beli adalah: jika ia adalah tarikh pembelian yang ditakrifkan oleh pengguna dan dalam julat tarikh efektif strategi, pergi panjang.

Logik untuk isyarat kedudukan dekat adalah: jika tarikh jualan ditetapkan dan ia adalah tarikh jualan sekarang, kedudukan dekat; jika tiada tarikh jualan tetapi selepas tarikh akhir strategi, juga kedudukan dekat.

Kelebihan Strategi

  1. Dapat mencari tarikh turun naik harga terbesar setiap bulan untuk mendapatkan pulangan yang berlebihan melalui perdagangan intraday frekuensi tinggi
  2. Boleh mengenal pasti titik beli yang optimum dengan membandingkan corak keuntungan dari tarikh pembelian yang berbeza
  3. Boleh menentukan sama ada tarikh pembelian optimum berubah berdasarkan peristiwa utama bulan
  4. Boleh menyeimbangkan perdagangan jangka pendek dan jangka panjang dengan menetapkan tarikh jualan yang berbeza

Risiko dan Penyelesaian

  1. Risiko kejatuhan harga selepas membeli

    • Tetapkan stop loss untuk mengehadkan kerugian maksimum
    • Pilih aset dengan kecairan yang tinggi untuk mengelakkan perubahan harga yang melampau
  2. Perubahan tarikh pembelian optimum

    • Memantau sejarah perubahan data dan menyesuaikan titik beli optimum tepat pada masanya
    • Mengurangkan saiz kedudukan semasa tempoh risiko tinggi
  3. Kerugian yang disebabkan oleh tetapan parameter yang tidak betul

    • Uji parameter yang berbeza secara tambahan dan bandingkan perbezaan keuntungan
    • Pilih julat masa yang mewakili untuk ujian

Arahan pengoptimuman

  1. Pertimbangkan lebih banyak faktor dalam menentukan titik kemasukan

    • Pertimbangkan kesan peristiwa berita utama pada harga
    • Menganalisis trend harga aset digital yang berkaitan
    • Tambah model pembelajaran mesin untuk menentukan masa optimum
  2. Mengoptimumkan mekanisme pengurusan kedudukan

    • Tetapkan dinamik mengambil keuntungan untuk menutup kedudukan
    • Penyesuaian saiz kedudukan berdasarkan turun naik
    • Pertimbangkan kedudukan pegangan sepanjang tempoh
  3. Mengembangkan ke pasaran perdagangan lain

    • Memohon lebih banyak pasangan dagangan mata wang digital
    • Terapkan kepada saham, forex dan lain-lain.
    • Menetapkan strategi arbitrage rentas pasaran

Ringkasan

Strategi ini mencari tarikh perubahan harga intraday terbesar setiap bulan dengan menguji perbezaan keuntungan dari tarikh pembelian yang berbeza. Ia boleh membawa pulangan yang berlebihan untuk pelabur yang mencari keuntungan dari perdagangan intraday frekuensi tinggi. Penambahbaikan lanjut dalam menentukan masa kemasukan, pengurusan kedudukan dan memperluaskan skop aplikasi akan meningkatkan kestabilan dan keuntungan strategi.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
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/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()
     

Lebih lanjut