Estratégia de tempo de início do backtest personalizável

Autora:ChaoZhang, Data: 23 de janeiro de 2023
Tags:

Resumo

O objetivo desta estratégia é permitir que os utilizadores personalizem o horário de início do backtesting para um backtesting mais flexível e personalizável.

Estratégia lógica

Esta estratégia usa as funções de tempo e carimbo de tempo do Pine Script para implementar um tempo de início de backtest personalizável.

Primeiro, permite que os usuários inseram um ano, mês, data, hora e minuto de início de backtest personalizados nas configurações.

Na verificação da condição da estratégia, ele adiciona uma nova condição startTime. A estratégia só será iniciada quando o tempo atual for maior ou igual a startTime.

Por exemplo:

longCondition = crossover(sma(close, 14), sma(close, 28))

if (longCondition and startTime)

  strategy.entry("My Long Entry Id", strategy.long) 

Isso permite implementar um tempo de início do backtest personalizável. Os usuários podem configurar flexivelmente o tempo de início do backtest em vez de estarem limitados a tempos codificados.

Análise das vantagens

Esta estratégia de tempo de início de backtest personalizável tem as seguintes vantagens:

  1. Mais flexível: os utilizadores podem personalizar totalmente o tempo de início do backtest em vez de estarem limitados a um ponto fixo no tempo.

  2. Mais realista: o tempo de início pode ser definido para o tempo de execução real da estratégia, tornando o backtest mais realista.

  3. Conveniente para backtesting orientado por eventos: a hora de início pode ser definida com base no tempo de ocorrência de um evento para backtesting de eventos específicos.

  4. Ajuste fácil de condições: as condições de início do backtest podem ser facilmente ajustadas para um backtest direcionado de diferentes estágios.

  5. Repetível e confiável: a parametrização do tempo de início do backtest permite resultados de backtest repetíveis e confiáveis.

Análise de riscos

Usar um tempo de início de backtest personalizável também tem alguns riscos:

  1. Os resultados dependem do horário de início: horários de início diferentes podem levar a resultados de backtest muito diferentes.

  2. O tempo de início requer uma seleção cuidadosa: tempos de início não razoáveis podem causar distorções nos resultados do backtest.

  3. Aumento do risco de sobreajuste da curva: fácil sobreajuste ajustando o horário de início aos dados históricos.

  4. Comparabilidade reduzida: os resultados desta estratégia são menos comparáveis aos dos backtests com tempo de início fixo.

Soluções:

  1. Re-teste várias vezes para avaliar o impacto das alterações da hora de início nos resultados.

  2. Escolha tempos de eventos significativos como horários de início para minimizar distorções.

  3. Ajustar cuidadosamente os horários de início para evitar a sobreajuste dos dados históricos.

  4. Manter os backtests de tempo de início fixos como referência para comparação com os backtests personalizados.

Orientações de otimização

Esta estratégia de tempo de início de backtest personalizável também pode ser melhorada nos seguintes aspectos:

  1. Suporte à personalização dos horários de início e fim para configuração flexível da janela de tempo do backtest.

  2. Suporte a vários modos de tempo: datas específicas, datas relativas, orientadas por eventos, etc. para uma configuração de tempo mais inteligente e conveniente.

  3. Suporte a interface de configuração gráfica para configuração de parâmetros de tempo mais intuitiva.

  4. Suporte à configuração de diferentes granularidades de tempo: ano, mês, dia, hora, minuto, segundo, etc.

  5. Registre a configuração do tempo de backtest para resultados reproduzíveis, rastreáveis e comparáveis.

  6. Adicionar a validação de configurações de tempo inadequadas para evitar backtests de baixa qualidade devido a configurações de tempo irracionais.

  7. Fornecer ligação de tempo de início para sincronizar facilmente os tempos de início em várias estratégias.

Resumo

Esta estratégia permite configuração personalizável e flexível de tempos de início de backtest para reduzir limitações e tornar os backtests mais realistas.


/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("C320up Strategy Tester Start Time", overlay = true)
// Copy and paste below into your strategy
// Strategy Tester Start Time
xYear = input(2018, title = "Start Year")
xMonth = input(01, title = "Start Month", minval = 01, maxval = 12)
xDay = input(01, title = "Start Day", minval = 01, maxval = 31)
xHour = input(00, title = "Start Hour", minval = 00, maxval = 23)
xMinute = input(00, title = "Start Minute", minval = 00, maxval = 59)
startTime = time >= timestamp(xYear, xMonth, xDay, xHour, xMinute)
// End copy and paste
// Add (and startTime) at the end of your condition/s to activate

// The strategy below is just an example
longCondition = crossover(sma(close, 14), sma(close, 28))
if (longCondition and startTime)
    strategy.entry("My Long Entry Id", strategy.long)
shortCondition = crossunder(sma(close, 14), sma(close, 28))
if (shortCondition and startTime)
    strategy.entry("My Short Entry Id", strategy.short)
// Happy trading!


Mais.