Estratégia de teste de retorno de altos e baixos de avanço

Autora:ChaoZhang, Data: 2024-01-08 16:13:44
Tags:

img

Resumo

Esta estratégia julga a direção da tendência com base na quebra de altos e baixos periódicos.

Princípio

A estratégia lê primeiro o ciclo definido pelo usuário (diário, semanal, etc.) e os períodos de lookback. Em seguida, obtém os preços mais altos e mais baixos para o período de lookback com base nesses parâmetros. Por exemplo, se for definido para ciclo diário e lookback 1 período, ele leva os preços mais altos e mais baixos para o dia anterior.

Na negociação real, se o preço de fechamento for maior ou igual ao preço mais baixo do período de retrospectiva, ele é julgado como um avanço ascendente e vai longo.

Ao capturar a direção da tendência através da quebra de altos e baixos periódicos, esta estratégia pertence a uma espécie de estratégia de rastreamento de tendências.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Capturar a grande tendência após uma forte consolidação julgando a direção com base em pontos de avanço.

  2. Simples e fáceis de entender, muito adequado para iniciantes a aprender e a usar.

  3. Fácil de otimizar ajustando parâmetros periódicos, aplicáveis a diferentes variedades.

  4. Pode definir a entrada reversa para a operação reversa, enriquecendo o uso da estratégia.

  5. Desenhar altas e baixas periódicas para ajudar no julgamento e formar a validação múltipla.

Análise de riscos

Há também alguns riscos:

  1. Não pode filtrar eficazmente a volatilidade lateral, possíveis múltiplas operações erradas.

  2. Não pode controlar o stop loss, existe um certo grau de risco de perda.

  3. Em função dos custos de negociação, o PnL real pode variar.

  4. Não é possível limitar o tamanho da posição, existe risco de excesso de negociação.

Para abordar esses riscos, podem ser utilizados métodos como a definição de stop loss, a otimização das condições do filtro, o controle do tamanho da posição.

Optimização

As principais direcções de otimização são:

  1. Adição de mecanismos de filtragem para evitar a abertura frequente durante a lateralização.

  2. Defina a perda de parada de atraso ou a perda de parada de tempo para controlar o risco de perda única e garantir a rentabilidade geral.

  3. Otimizar o dimensionamento das posições e a gestão de fundos para evitar o excesso de negociação e garantir a estabilidade.

  4. Teste os efeitos de diferentes parâmetros periódicos e selecione as combinações ótimas de parâmetros.

  5. Aumentar os módulos de negociação algorítmica, usar algoritmos de aprendizagem de máquina para melhorar a eficiência de decisão.

Resumo

Em resumo, esta estratégia de backtest de alta baixa avançada é simples de operar com base no rastreamento de tendências, adequada para iniciantes aprenderem, mas existem riscos de ficarem presos. Adicionando otimizações como filtros, paradas, controle de posição, esses riscos podem ser reduzidos e os resultados da estratégia melhorados. Pode fornecer idéias e referências para nossas pesquisas e melhorias futuras.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/07/2018
// This script shows a high and low period value.
//    Width - width of lines
//    SelectPeriod - Day or Week or Month and etc.
//    LookBack - Shift levels 0 - current period, 1 - previous and etc.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="High and Low Levels Backtest", shorttitle="HL Levels", overlay = true)
SelectPeriod = input("D", defval="D")
LookBack = input(1,  minval=0)
reverse = input(false, title="Trade reverse")
xHigh  = request.security(syminfo.tickerid, SelectPeriod, high[LookBack])
xLow   = request.security(syminfo.tickerid, SelectPeriod, low[LookBack])
vS1 = xHigh
vR1 = xLow
pos = iff(close > vR1, 1,
       iff(close < vS1, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 

Mais.