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