Estratégia de tendência orientada para a liquidez - Estratégia de negociação quantitativa baseada na indicação da tendência de fluxo

Autora:ChaoZhang, Data: 21-12-2023 10:19:52
Tags:

img

Resumo

A estratégia é chamada de Estratégia de Tendência Orientada a Liquididade. Tem como objetivo identificar a direção da tendência de preços em diferentes prazos e tomar decisões longas ou curtas correspondentes. A estratégia emprega um sistema de média móvel dupla para determinar a tendência e usa a diferença entre os valores do Índice de Força Relativa (RSI) em vários prazos para responder em tempo hábil às mudanças de tendência.

Estratégia lógica

A lógica central desta estratégia é baseada no indicador CHOP, onde o sistema de média móvel julga a direção geral da tendência. Especificamente, a estratégia calcula os valores RSI de uma linha rápida (Length = 20) e uma linha lenta (Length = 50) em quadros de tempo mais altos, e calcula a diferença entre as duas linhas RSI. Quando a linha rápida RSI cruza acima da linha lenta RSI, ele sinaliza uma tendência ascendente e desencadeia sinais longos.

A estratégia também introduz um mecanismo de quadros de tempo múltiplos: ele calcula a diferença do RSI em quadros de tempo mais altos (por exemplo, diariamente) para determinar a direção geral da tendência e, em seguida, executa ordens de compra e venda reais em quadros de tempo mais baixos (por exemplo, 5 minutos) com base no julgamento da tendência de quadros de tempo mais altos.

Vantagens da estratégia

  • Captar com sensibilidade as potenciais inversões de tendência com antecedência, utilizando a divergência do RSI
  • Aplicar o conceito de quadros de tempo múltiplos para determinar a tendência em TF mais elevado e executar ordens em TF mais baixo
  • O RSI reflete as variações de preços e de volume, indicando a liquidez e a participação no mercado
  • Configurações de parâmetros simples, fáceis de entender, explicar e ajustar

Riscos e soluções

  • Pode ocorrer uma fuga falsa com o sistema de dupla MA
  • Uma fuga fracassada pode causar perdas desnecessárias.

Soluções:

  1. Ajustar os parâmetros MA para reduzir a probabilidade de falha de ruptura
  2. Adicione filtros para evitar entrada desnecessária

Orientações de otimização

  • Otimizar parâmetros do RSI usando algoritmos Kalman Filter
  • Adicionar o MACD e outros indicadores para facilitar o julgamento
  • Estabelecer posições de saída dinâmicas com base em alterações no volume de negociação

Conclusão

Esta estratégia aproveita a divergência do RSI para capturar de forma sensível os pontos de virada potenciais da tendência. A aplicação multi-tempo garante julgar a tendência geral, mantendo a execução específica do comércio flexível. Em comparação com outras estratégias de tendência, esta estratégia é mais direta, intuitiva em ajustes de parâmetros e fácil de otimizar. Em conclusão, a estratégia forma um sistema de negociação de tendências eficiente e prático que vale a pena explorar e aplicar ainda mais.


/*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)

Mais.