A ideia central desta estratégia é encontrar a melhor data de compra a cada mês, comprando ativos digitais nessa data e vendendo-os no final do mês, a fim de alcançar retornos de investimento ideais.
A estratégia é executada com base na data de compra mensal definida pelo usuário e na data de venda. Ele vai longo na data de compra comprando ativos e fecha a posição na data de venda se definida. Caso contrário, fecha a posição na data de término da estratégia. Isso pode testar a diferença de lucro de diferentes datas de compra mensal.
A lógica para o sinal de compra é: se for a data de compra definida pelo usuário e dentro do intervalo de data efetiva da estratégia, vá longo.
A lógica para o sinal de posição fechada é: se a data de venda for definida e for a data de venda agora, a posição fechada; se não houver data de venda, mas além da data de fim da estratégia, também a posição fechada.
Risco de queda de preços após compra
Alteração da data de compra ideal
Perda causada por configuração incorreta dos parâmetros
Considerar mais fatores na determinação do ponto de entrada
Otimizar o mecanismo de gestão de posições
Expandir para outros mercados comerciais
Esta estratégia encontra a data da maior oscilação de preços intradiários a cada mês, testando a diferença de lucro de diferentes datas de compra. Pode trazer retornos excessivos para investidores que buscam lucros de negociação intradiária de alta frequência.
/*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()