Стратегия тренда, основанная на ликвидности - Стратегия торговли количеством, основанная на индикации тренда потоков

Автор:Чао Чжан, Дата: 2021-12-21 10:19:52
Тэги:

img

Обзор

Стратегия называется Liquidity Driven Trend Strategy. Она направлена на определение направления ценового тренда в разные временные рамки и принятие соответствующих длинных или коротких решений. Стратегия использует двойную систему скользящих средних для определения тренда и использует разницу между значениями индекса относительной силы (RSI) в разных временных рамках для своевременного реагирования на изменения тренда.

Логика стратегии

Основная логика этой стратегии основана на индикаторе CHOP, где система скользящего среднего оценивает общее направление тренда. В частности, стратегия рассчитывает значения RSI быстрой линии (длина = 20) и медленной линии (длина = 50) на более высоких временных рамках и вычисляет разницу между двумя линиями RSI. Когда быстрая линия RSI пересекает верхнюю часть медленной линии RSI, это сигнализирует об увеличении тренда и запускает длинные сигналы. Напротив, если быстрая линия RSI пересекает нижнюю часть медленной линии RSI, это указывает на снижение тренда и генерирует короткие сигналы.

Стратегия также вводит механизм с несколькими временными рамками: она вычисляет разницу RSI на более высоких временных рамках (например, ежедневно) для определения общего направления тренда, а затем выполняет фактические заказы на покупку и продажу на более низких временных рамках (например, 5 минут) на основе более высоких временных рамок.

Преимущества стратегии

  • Ощутимое предварительное обнаружение потенциальных изменений тренда с использованием дивергенции РСИ
  • Применение концепции многочасовых рамок для определения тренда на более высокий TF и исполнения ордеров на более низкий TF
  • Индекс рентабельности отражает изменения цен и объемов, указывая на ликвидность и участие рынка
  • Простые настройки параметров, легко понять, объяснить и настроить

Риски и решения

  • Ложный прорыв может произойти с двойной системой MA
  • Неудачный выход может привести к ненужным потерям

Решения:

  1. Корректировать параметры MA для снижения вероятности ложного прорыва
  2. Добавьте фильтры, чтобы избежать ненужного ввода

Руководство по оптимизации

  • Оптимизация параметров RSI с использованием алгоритмов фильтра Kalman
  • Добавление MACD и других показателей для облегчения суждения
  • Установление динамических позиций выхода на основе изменений объема торговли

Заключение

Эта стратегия использует дивергенцию 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)

Больше