A estratégia é chamada de
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.
Soluções:
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)