
Esta estrategia se llama estrategia de tendencia impulsada por liquidez, cuyo objetivo es identificar la dirección de la tendencia de los precios en diferentes períodos de tiempo y tomar decisiones de compra o venta en consecuencia. La estrategia utiliza un sistema de doble línea para juzgar la tendencia y aprovechar el índice de fuerza relativa de las diferencias en los precios en múltiples marcos de tiempo para reaccionar a tiempo cuando la tendencia cambia.
La lógica central de la estrategia se basa en el indicador CHOP, en el que el sistema de promedios cambiantes determina la dirección de la tendencia general. En concreto, la estrategia calcula los valores RSI de la línea rápida (Length = 20) y la línea lenta (Length = 50) en un marco de tiempo de alto ciclo, y calcula el diferencial entre ambos. Cuando la línea rápida RSI cruza la línea lenta RSI, se determina como una tendencia alcista, formando una señal múltiple; por el contrario, la línea rápida RSI cruza la línea lenta RSI y forma una señal alcista.
La estrategia también introdujo la determinación de múltiples marcos de tiempo: calcular el diferencial RSI en períodos más altos (como la línea del sol) para determinar la dirección de la tendencia general; realizar compras y ventas específicas en períodos más bajos (como la línea de 5 minutos) según los resultados de los períodos más altos. Esta combinación de marcos de tiempo tiene en cuenta tanto el juicio de tendencias de períodos altos como la flexibilidad de las operaciones de períodos bajos.
La solución:
Esta estrategia utiliza el diferencial RSI para determinar los cambios potenciales en la tendencia y capturar los puntos de inflexión de manera sensible. El uso de marcos temporales múltiples garantiza el juicio de las tendencias generales y hace que las operaciones de compra y venta específicas sean más flexibles. En comparación con otras estrategias de seguimiento de tendencias, la estrategia es más simple, directa, los ajustes de los parámetros son intuitivos y fáciles de ajustar y optimizar.
/*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)