Стратегия называется
Основная логика этой стратегии основана на индикаторе CHOP, где система скользящего среднего оценивает общее направление тренда. В частности, стратегия рассчитывает значения RSI быстрой линии (длина = 20) и медленной линии (длина = 50) на более высоких временных рамках и вычисляет разницу между двумя линиями RSI. Когда быстрая линия RSI пересекает верхнюю часть медленной линии RSI, это сигнализирует об увеличении тренда и запускает длинные сигналы. Напротив, если быстрая линия RSI пересекает нижнюю часть медленной линии RSI, это указывает на снижение тренда и генерирует короткие сигналы.
Стратегия также вводит механизм с несколькими временными рамками: она вычисляет разницу RSI на более высоких временных рамках (например, ежедневно) для определения общего направления тренда, а затем выполняет фактические заказы на покупку и продажу на более низких временных рамках (например, 5 минут) на основе более высоких временных рамок.
Решения:
Эта стратегия использует дивергенцию RSI для чувствительного захвата потенциальных поворотных точек тренда. Приложение с несколькими временными рамками обеспечивает оценку общей тенденции, сохраняя при этом гибкость выполнения конкретной торговли. По сравнению с другими стратегиями, следующими за трендом, эта стратегия более проста, интуитивно понятна в корректировке параметров и легко оптимизируется. В заключение, стратегия формирует эффективную и практичную систему торговли трендом, достойную дальнейшего изучения и применения.
/*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)