Estratégia quantitativa agressiva de rastreamento de fundo

Autora:ChaoZhang, Data: 2024-01-18 16:25:33
Tags:

img

Resumo

Esta estratégia identifica os fundos de curto prazo detectando volume excepcional em uma tendência de queda, e toma posições longas durante condições de sobrevenda.

Princípios de estratégia

Quando o volume excede 2 desvios padrão acima do volume médio baseado na SMA, ele é considerado volume pendente. Enquanto isso, o RSI abaixo de 30 indica estado de sobrevenda. Quando ambas as condições são atendidas, ele é julgado como um fundo de curto prazo e a posição longa é tomada imediatamente. A posição será fechada após um certo período de tempo (por exemplo, 10 bares).

A lógica desta estratégia é simples:

  1. Calcular a SMA de volume de 20 bares como referência
  2. Calcular 2 desvios-padrão de volume de 20 bares como limiar para o volume em circulação
  3. Calcular o RSI de 20 bares para julgar o estado de sobrevenda
  4. Quando o volume exceder o valor de referência + 2 desvios-padrão e o RSI < 30, julgar como fundo a curto prazo
  5. Assuma posição longa imediatamente no fundo.
  6. Posição de fechamento após 10 bares automaticamente

Análise das vantagens

As vantagens desta estratégia incluem:

  1. Lógica simples, fácil de compreender e otimizar
  2. Utilizar o volume em circulação para detectar pontos de virada a curto prazo
  3. O RSI garante que só se façam longs na zona de sobrevenda, evitando perseguir os tops
  4. O stop loss automático maximiza a evasão do risco nos fundos

Em resumo, esta estratégia aproveita as rupturas de volume para capturar inversões de tendência, controlando estritamente os riscos.

Análise de riscos

Os principais riscos desta estratégia incluem:

  1. O volume e o RSI podem gerar falsos sinais de ruptura, causando longs e perdas errados.
  2. O tempo fixo de stop loss pode não parar a perda ou parar a perda demasiado cedo durante uma reversão significativa do mercado.
  3. A afinação de parâmetros subótima pode levar a sinais muito poucos ou muito muitos.

Para fazer face a estes riscos, a otimização pode ser feita nos seguintes aspectos:

  1. Adicionar outros indicadores para filtrar falsos sinais de fuga.
  2. Configurar stop loss dinâmico em vez de um número fixo de barras.
  3. Testes e ajustes abrangentes de parâmetros para garantir a robustez.

Orientações de otimização

Esta estratégia pode ser melhorada nos seguintes aspectos:

  1. Adicionar o modelo ML para julgar a confiabilidade das rupturas de volume para evitar sinais falsos
  2. Adicionar mecanismo de perda de parada adaptativo em vez de barras fixas
  3. Optimização de conjuntos de dados multidimensionais para parâmetros de volume em circulação
  4. Aumentar a precisão dos sinais de sobrevenda utilizando o rastreamento ML
  5. Incorporar análise de sentimentos para melhorar o alfa

Ao introduzir técnicas mais avançadas, pode ser alcançada uma melhoria significativa da estabilidade, da relação alfa e Sharpe.

Conclusão

Em resumo, esta é uma estratégia de ruptura de curto prazo muito simples, direta e lógica. Ao alavancar adequadamente o volume para detectar inversões de tendência e controlar estritamente os riscos, um desempenho sólido pode ser alcançado. Mas existem riscos de falsos sinais e robustez de parâmetros. Estes podem ser abordados incrementalmente através da introdução de técnicas mais avançadas para melhorar ainda mais a estratégia.


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 1m
basePeriod: 1m
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/
// © footlz

//@version=4
strategy("Bottom catch strategy", overlay=true)

v_len = input(20, title="Volume SMA Length")
mult = input(2)
rsi_len = input(20, title="RSI Length")
oversold = input(30, title="Oversold")
close_time = input(10, title="Close After")

v = volume
basis = sma(v, v_len)
dev = mult * stdev(v, v_len)
upper_volume = basis + dev

rsi = rsi(close, rsi_len)

long = v > upper_volume and rsi < oversold

strategy.entry("Long", true, when=long)

passed_time = 0.0
if strategy.position_size != 0
    passed_time := 1
else
    passed_time := 0

if strategy.position_size != 0 and strategy.position_size[1] != 0
    passed_time := passed_time[1] + 1

if passed_time >= close_time
    strategy.close_all()

// If want to enable plot, change overlay=false.
v_color = close >= close[1] ? color.new(#3eb370, 0) : color.new(#e9546b, 0)

// plot(v, title="volume", color=v_color, style=plot.style_columns)
// plot(upper_volume, title="Threshold", color=color.aqua)

Mais.