Estratégia quantitativa de acompanhamento de tendências com base na otimização de parâmetros


Data de criação: 2024-01-02 11:01:22 última modificação: 2024-01-02 11:01:22
cópia: 0 Cliques: 682
1
focar em
1621
Seguidores

Estratégia quantitativa de acompanhamento de tendências com base na otimização de parâmetros

Visão geral

A ideia principal desta estratégia é combinar o indicador percentrank e a otimização de parâmetros para permitir o julgamento e o acompanhamento de tendências de preços. A estratégia gera sinais de negociação, comparando o preço atual com a porcentagem de tamanho do preço em um determinado período histórico, para capturar o efeito de espelho intermediário, acompanhar a tendência e, em seguida, obter lucros extras.

Princípio da estratégia

A estratégia usa o indicador percentrank para determinar a tendência dos preços. O percentrank indica a intensidade relativa dos preços atuais durante o período de visualização. O parâmetro len indica a duração do período de visualização histórico.

O percentrank tem um valor entre 0 e 100. Quando o percentrank é próximo a 0, o preço atual está próximo ao preço mais baixo do período de visualização e está na zona de subvalorização. Quando é próximo a 100, o preço atual está próximo ao preço mais alto do período de visualização e está na zona de subvalorização.

A estratégia também introduziu o parâmetro scale como o deslocamento. A escala de 0 a 100 é movida para a escala de 100 + escala. Ao mesmo tempo, são configuradas duas linhas de sinalização level_1 e level_2 .

Quando o indicador de percentrank do preço atravessa o level_1 de baixo para cima, gera um sinal de compra; quando atravessa o level_2 de cima para baixo, gera um sinal de compra. Condições de equilíbrio são o oposto do sinal de entrada.

Vantagens estratégicas

  1. Usar o indicador percentrank para avaliar a intensidade da tendência de preços, evitando ficar preso e seguir em frente
  2. Métodos de otimização de parâmetros aplicados, ajuste de escala de desvios e de valores de linha de sinal, para calibração de diferentes variedades e períodos, para melhorar a estabilidade
  3. Combinação de seguimento de tendências e ideias de negociação de reversão para acompanhar tendências em tempo real após a ruptura da linha de sinalização

Análise de Riscos

  1. A tendência a ser julgada erradamente leva a prejuízos desnecessários.
  2. Quando a tendência de oscilação dos preços não é visível, é fácil criar sinais errados
  3. Parâmetros mal definidos podem resultar em frequência ou volume insuficiente de transações

Para os riscos acima, pode ser otimizado por ajustar os parâmetros de configuração len, scale, level; e pode ser combinado com outros indicadores como confirmação, evitando transações erradas.

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. Pode-se introduzir um ponto de parada para reduzir a perda individual
  2. Pode ser combinado com indicadores como a média móvel para confirmar e filtrar alguns sinais errados
  3. Parâmetros de otimização automática que podem ser combinados com métodos de aprendizado de máquina
  4. Pode funcionar em simultâneo em vários períodos de tempo

Resumir

A estratégia tem uma visão geral clara e usa métodos quantitativos de otimização de parâmetros para julgar e rastrear tendências de preços. Tem um certo valor realista, mas ainda precisa ser testado e otimizado para reduzir o risco realista e aumentar a lucratividade estável.

Código-fonte da estratégia
/*backtest
start: 2023-12-02 00:00:00
end: 2024-01-01 00:00:00
period: 4h
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/
// © Alex_Dyuk

//@version=4
strategy(title="percentrank", shorttitle="percentrank")
src = input(close, title="Source")
len = input(title="lookback - Период сравнения", type=input.integer, defval=10, minval=2)
scale = input(title="scale offset - смещение шкалы", type=input.integer, defval=50, minval=0, maxval=100)
level_1 = input(title="sygnal line 1", type=input.integer, defval=30)
level_2 = input(title="sygnal line 2", type=input.integer, defval=-30)

prank = percentrank(src,len)-scale
plot(prank, style = plot.style_columns)
plot(level_2, style = plot.style_line, color = color.red)
plot(level_1, style = plot.style_line, color = color.green)

longCondition = (crossunder(level_1, prank) == true)
if (longCondition)
    strategy.entry("Long", strategy.long)
longExitCondition = (crossover(level_2, prank) == true)
if (longExitCondition)
    strategy.close("Long")
    
shortCondition = (crossover(level_2, prank) == true)
if (shortCondition)
    strategy.entry("Short", strategy.short)
shortexitCondition = (crossunder(level_1, prank) == true)
if (shortexitCondition)
    strategy.close("Short")