SuperTrend Multi Timeframe Backtest Estratégia

Autora:ChaoZhang, Data: 2023-12-05 10:59:54
Tags:

img

Resumo

A ideia principal desta estratégia é gerar sinais de negociação utilizando o indicador Supertrend em vários intervalos de tempo e combiná-lo com um filtro intradiário para compensar as posições abertas durante o dia, a fim de implementar negociações em vários intervalos de tempo e melhorar a qualidade do sinal.

Estratégia lógica

A estratégia primeiro chama a função supertrend, passando nos parâmetros mult e len, para gerar a linha Supertrend superTrend e direção dir. Em seguida, traça o gráfico da linha Supertrend. O parâmetro de entrada intraday controla se as posições abertas devem ser quadradas intradiariamente.

As regras de geração de sinal são: quando o preço de fechamento está acima da linha Supertrend, um sinal de compra é gerado; quando o preço de fechamento está abaixo da linha Supertrend, um sinal de venda é gerado. Quando um sinal de compra é recebido, uma ordem de compra será executada para abrir uma posição longa; quando um sinal de venda é recebido, uma ordem de venda será executada para abrir uma posição curta.

Análise das vantagens

A maior vantagem desta estratégia é que usa o indicador Supertrend simples, mas prático para implementar geração de sinais de negociação de vários prazos.

Além disso, a estratégia é muito concisa, implementa a lógica central com muito pouco código, que é fácil de entender, modificar e expandir.

Análise de riscos

O principal risco desta estratégia é que o indicador Supertrend tem algum atraso, o que pode levar a perdas adicionais.

Para mitigar esses riscos, é recomendado otimizar os parâmetros de Supertrend mult e len para encontrar a combinação ideal de parâmetros. Outros indicadores também podem ser testados para complementar a Supertrend e utilizar mais fatores para melhorar a estabilidade da estratégia. Além disso, o tempo fixo de quadrado intradiário pode ser removido e um mecanismo dinâmico pode ser usado para determinar o tempo de quadrado com base em condições de volatilidade.

Orientações de otimização

As principais direcções de otimização desta estratégia incluem:

  1. Teste múltiplos conjuntos de parâmetros Supertrend para encontrar a combinação de parâmetros ideal.

  2. Adicione outros indicadores técnicos como padrões de velas, média móvel etc. para filtrar sinais com mais fatores.

  3. Otimizar e ajustar dinamicamente o calendário específico de liquidação intradiária para reduzir a liquidação prematura.

  4. Adicionar mecanismos de stop loss, como stop loss em percentagem fixa ou ATR.

  5. Testar estratégias adequadas de utilização do capital e de dimensionamento das posições.

  6. Backtest período de tempo mais longo para verificar a robustez dos parâmetros.

Conclusão

Em resumo, esta estratégia de backtest multi-tempo Supertrend é muito prática. Implementa negociação multi-tempo com o simples indicador Supertrend e controla perdas com o filtro intradiário. Há um grande espaço para otimização e os usuários podem ajustar parâmetros ou combiná-los com outros indicadores técnicos de acordo com suas necessidades. O desempenho do backtest também é relativamente estável e confiável. Em geral, esta estratégia é adequada para negociação de tendências de médio e longo prazo, e também é boa para iniciantes aprenderem e praticarem modificações.


/*backtest
start: 2023-11-27 00:00:00
end: 2023-12-04 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//@Gurjant_Singh IISMA-Indian Institute of stock Market Analysis 

strategy("SupterTrend ", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=300, calc_on_order_fills=false, calc_on_every_tick=false)




mult = input(type=input.float, defval=3)
len = input(type=input.integer, defval=5)
[superTrend, dir] = supertrend(mult, len)



plot(superTrend)

intrady = input(false, "Do you want to exit intrday position", type = input.bool)

IntraDay_SquareOff = minute >= 45 and hour >= 14



buy = close > superTrend

sell = close < superTrend

if buy
    strategy.entry("Buy", true)
    
if sell
    strategy.entry("sell", false)

if intrady and IntraDay_SquareOff
    strategy.close("buy")
    strategy.close("sell")






Mais.