Количественная торговая стратегия, основанная на тренде ликвидности


Дата создания: 2023-12-21 10:19:52 Последнее изменение: 2023-12-21 10:19:52
Копировать: 0 Количество просмотров: 701
1
Подписаться
1623
Подписчики

Количественная торговая стратегия, основанная на тренде ликвидности

Обзор

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

Стратегический принцип

Основная логика этой стратегии основана на показателе CHOP, в котором система переменных средних определяет направление тенденции. В частности, стратегия рассчитывает значения RSI для быстрого и медленного линий на высокоциклических временных рамках и рассчитывает разницу между ними.

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

Стратегические преимущества

  • Использование RSI-дифференциалов для определения потенциального обратного тренда, предварительный ответ, чувствительный
  • Применение многовременных рамок мышления, высокоциклических суждений, низкоциклических операций
  • RSI отражает изменения в ценах и объемах сделок, отражая рыночную ликвидность и активность
  • Простые параметры, которые легко понять, интерпретировать и настраивать

Стратегические риски

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

Решение проблемы:

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

Направление оптимизации стратегии

  • Оптимизация параметров RSI с помощью алгоритма Kalman Filter
  • Добавление вспомогательных показателей, таких как MACD
  • Динамическая позиция выхода в сочетании с изменением объема торгов

Подвести итог

Эта стратегия использует разницу RSI для определения потенциальных изменений в тренде, чтобы достичь чувствительного захвата переломных точек. Использование многократных временных рамок не только гарантирует определение основных тенденций, но и делает конкретные операции по покупке и продаже более гибкими. По сравнению с другими стратегиями отслеживания тенденций, эта стратегия более проста, пряма, параметры Settings интуитивны, легко подстраиваются и оптимизируются.

Исходный код стратегии
/*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)