
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.
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.
Solução:
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.
/*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)