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.
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.
Risiko kejatuhan harga selepas membeli
Perubahan tarikh pembelian optimum
Kerugian yang disebabkan oleh tetapan parameter yang tidak betul
Pertimbangkan lebih banyak faktor dalam menentukan titik kemasukan
Mengoptimumkan mekanisme pengurusan kedudukan
Mengembangkan ke pasaran perdagangan lain
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()