Estratégia de negociação quantitativa baseada na tendência de liquidez


Data de criação: 2023-12-21 10:19:52 última modificação: 2023-12-21 10:19:52
cópia: 0 Cliques: 701
1
focar em
1623
Seguidores

Estratégia de negociação quantitativa baseada na tendência de liquidez

Visão geral

Esta estratégia é chamada de estratégia de tendência movida por liquidez. O objetivo é identificar a direção da tendência dos preços em diferentes períodos de tempo e, portanto, tomar decisões de compra ou venda. A estratégia usa um sistema de dupla equilíbrio para determinar a tendência e usa o índice de força relativa do diferencial de preços em vários períodos de tempo.

Princípio da estratégia

A lógica central da estratégia baseia-se no indicador CHOP, no qual o sistema de média variável determina a direção da grande tendência. Concretamente, a estratégia calcula os valores RSI da linha rápida (Length = 20) e a linha lenta (Length = 50) em um período de tempo de alto período e calcula o diferencial entre os dois. Quando a linha rápida RSI atravessa a linha lenta RSI, é julgado como pessimista, formando um sinal múltiplo; pelo contrário, a linha rápida RSI atravessa a linha lenta RSI abaixo, formando um sinal de baixa.

A estratégia também introduziu a determinação de vários quadros temporais: calcular o diferencial RSI em períodos mais elevados (como a linha do sol) para determinar a direção da tendência geral; executar compras e vendas específicas em períodos mais baixos (como a linha de 5 minutos) com base nos resultados de períodos mais elevados. Esta combinação de quadros temporais leva em consideração a determinação de tendências de alta periodicidade e a flexibilidade de operações de baixa periodicidade.

Vantagens estratégicas

  • Utilizando a diferença de RSI para avaliar uma potencial reversão de tendência, reação antecipada, sensível
  • Aplicação de conceitos de quadros de tempo múltiplos, tendências de julgamento de alta periodicidade, execução de operações de baixa periodicidade
  • O RSI reflete a variação de preços e volumes de transação, refletindo a liquidez do mercado e a intensidade da participação
  • Parâmetros simples, fáceis de entender, interpretar e ajustar

Riscos estratégicos e soluções

  • Falsa ruptura pode ocorrer na determinação de dupla equilíbrio
  • A falha na invasão pode causar prejuízos desnecessários

Solução:

  1. Ajustar os parâmetros da linha média para reduzir a probabilidade de falha
  2. Aumentar as condições de filtragem para evitar a entrada desnecessária

Direção de otimização da estratégia

  • Optimizar os parâmetros do RSI usando o algoritmo Kalman Filter
  • Adicionar indicadores auxiliares de julgamento como o MACD
  • Configuração de posições de saída dinâmicas em combinação com a mudança de volume de transação

Resumir

Esta estratégia usa o RSI para avaliar mudanças de tendências potenciais e capturar pontos de inflexão de forma sensível. O uso de quadros de tempo múltiplos garante o julgamento de grandes tendências e torna as operações de compra e venda mais flexíveis. Em comparação com outras estratégias de acompanhamento de tendências, a estratégia é mais simples, direta, os parâmetros são intuitivos e fáceis de ajustar e otimizar.

Código-fonte da estratégia
/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Flow Trend Indicator Strategy", "FlowTI", overlay=true, calc_on_every_tick=true)

isTimeFrame(timeFrame) =>
    timeFrame == timeframe.period ? true : false

Htf() =>
    isTimeFrame("12") ? "60" : isTimeFrame("60") ? "300" : isTimeFrame("300") ? "D" : isTimeFrame("D") ? "W" : isTimeFrame("W") ? "M" : isTimeFrame("M") ? "5M" : "D"

TrendIndication() =>
    trendFastLength = 20
    trendSlowLength = 50
    upFastHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on)
    downFastHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendFastLength), barmerge.gaps_off, barmerge.lookahead_on)
    rsiFastHtf = downFastHtf == 0 ? 100 : upFastHtf == 0 ? 0 : 100 - (100 / (1 + upFastHtf / downFastHtf))
    upSlowHtf = request.security(syminfo.tickerid, Htf(), rma(max(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on)
    downSlowHtf = request.security(syminfo.tickerid, Htf(), rma(-min(change(close), 0), trendSlowLength), barmerge.gaps_off, barmerge.lookahead_on)
    rsiSlowHtf = downSlowHtf == 0 ? 100 : upSlowHtf == 0 ? 0 : 100 - (100 / (1 + upSlowHtf / downSlowHtf))
    rsiDiff = rsiFastHtf - rsiSlowHtf
    crossover(rsiDiff, 0) ? true : crossunder(rsiDiff, 0) ? false : na

if (TrendIndication() == true)
    strategy.entry("Long", strategy.long)

if (TrendIndication() == false)
    strategy.entry("Short", strategy.short)