Основная идея этой стратегии заключается в том, чтобы найти лучшую дату покупки каждый месяц, покупая цифровые активы в эту дату и продавая их в конце месяца, чтобы достичь оптимальной доходности от инвестиций.
Стратегия работает на основе установленной пользователем ежемесячной даты покупки и даты продажи. Она занимает длинную позицию на дату покупки, покупая активы, и закрывает позицию на дату продажи, если установлена. В противном случае она закрывает позицию на дату окончания стратегии. Это может проверить разницу прибыли от разных ежемесячных дат покупки.
Логика для сигнала покупки такова: если это дата покупки, определенная пользователем, и в пределах диапазона действительной даты стратегии, делайте покупку.
Логика сигнала закрытия позиции такова: если дата продажи установлена и это дата продажи сейчас, закрыть позицию; если нет даты продажи, но после окончания стратегии, также закрыть позицию.
Риск падения цен после покупки
Изменение оптимальной даты покупки
Потери, вызванные неправильной установкой параметров
Рассмотрим несколько факторов при определении точки входа
Оптимизация механизма управления позициями
Расширение на другие торговые рынки
Эта стратегия находит дату наибольшего колебания цен внутридневного курса каждый месяц, тестируя разницу прибыли с разных дат покупки. Она может принести избыточную отдачу инвесторам, стремящимся к прибыли от высокочастотного внутридневного трейдинга.
/*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()