Количественная стратегия на основе индикатора TSI и скользящей средней Халла


Дата создания: 2023-12-18 16:56:22 Последнее изменение: 2023-12-18 16:56:22
Копировать: 0 Количество просмотров: 793
1
Подписаться
1621
Подписчики

Количественная стратегия на основе индикатора TSI и скользящей средней Халла

Обзор

Стратегия называется “Количественная стратегия торговли на основе индекса TSI и Hull Moving Average”. Основная идея заключается в том, чтобы в сочетании с индексом TSI и Hull Moving Average идентифицировать тенденции в акциях, цифровых валютах или валютах и генерировать торговые сигналы в начале тренда.

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

Эта стратегия использует индикатор ТСИ для определения ценовых тенденций и динамики. Индикатор ТСИ - это двойная скользящая средняя, основанная на изменении цены.

Эта стратегия также использует Hull Moving Average для определения ценовой тенденции. Hull Moving Average построен на основе двойного взвешенного движущегося среднего, который эффективно фильтрует рыночный шум. Hull Moving Average определяется как тенденция к росту, когда она проходит через медленную линию, и как тенденция к снижению, когда она проходит через медленную линию.

В то же время, когда индикатор TSI подает сигнал, соответствующий торговый сигнал создается, если движущаяся средняя Hull также подтверждает тенденцию в том же направлении. Кроме того, стратегия также проверяет направление K-линейных объектов для подтверждения тенденции. Торговый сигнал подается только тогда, когда индикаторный сигнал, сигнал Hull и направление K-линейных объектов совпадают.

Анализ преимуществ

Эта стратегия, объединяющая несколько индикаторов тренда, динамики и средней, позволяет эффективно идентифицировать начало рыночной тенденции и избегать создания большого количества ложных сигналов. Двойная скользящая средняя также может отфильтровывать часть шума.

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

Анализ рисков

Хотя эта стратегия эффективно идентифицирует начало тренда, она может привести к некоторому количеству ошибочных сигналов и чрезмерной торговли во время рыночных потрясений. Кроме того, неправильная настройка параметров может привести к ненужному выравниванию позиций.

Для снижения риска можно соответствующим образом скорректировать циклы Hull Moving Average или параметры TSI, а также можно добавить стоп-лосс для контроля потерь. В процессе оптимизации необходимо обратить внимание на сигнал-шумный коэффициент, чтобы получить оптимальные параметры.

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Оптимизация параметров Hull Moving Average, сглаживание кривых с фильтрацией ложных сигналов
  2. Оптимизация параметров TSI, баланс чувствительности и стабильности
  3. Присоединение к стратегии сдерживания потерь
  4. Настройка длины сигнала для фильтрации кратковременного шума
  5. Тестирование различных видов стратегий и временных циклов
  6. Проверка сигнала в сочетании с другими показателями

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

Эта стратегия в сочетании с индикатором TSI и Hull Moving Average генерирует торговый сигнал после определения рыночной тенденции. Стратегия имеет высокую своевременность и качество сигнала. С помощью оптимизации параметров и комбинации стратегий можно значительно повысить доходность и снизить риск.

Исходный код стратегии
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("TSI/HullMA/VWMA strategy", shorttitle="TSI/HullMA/VWMA", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
TP = input(defval=200.00, title="TargetPoint in $", type=float, step=1)
SL = input(defval=-2000.00, title="StopLoss in $", type=float, step=1)
signal = input(title="Signal Length",  defval=6)
keh=input(title="HullMA cross",defval=2)
a=input(title="VWMA",defval=2)
long=35,short=35,linebuy=4,linesell=-4,ot=1,p=ohlc4[0]
double_smooth(src, long, short) =>
    fist_smooth = ema(src, long)
    ema(fist_smooth, short)
pc = change(p)
rvwma=vwma(p,round(a))
rvwma2=vwma(p,round(a*2))
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
hullbuy=n1>n2 and n1>n2[1] and rvwma>rvwma2
hullsell=n1<n2 and n1<n2[1] and rvwma<rvwma2
candlebuy=ohlc4[0]>ohlc4[1] and ohlc4[0]>ohlc4[2] and ohlc4[0]>ohlc4[3]
candlesell=ohlc4[0]<ohlc4[1] and ohlc4[0]<ohlc4[2] and ohlc4[0]<ohlc4[3]
double_smoothed_pc = double_smooth(pc, long, short)
double_smoothed_abs_pc = double_smooth(abs(pc), long, short)
tsi_value = 100 * (double_smoothed_pc / double_smoothed_abs_pc)
strategy.entry("buy", true, na, when = tsi_value>ema(tsi_value, signal) and candlebuy and hullbuy)
strategy.entry("sell", false, na, when = tsi_value<ema(tsi_value, signal) and candlesell and hullsell)
strategy.close_all(when = strategy.openprofit>TP or strategy.openprofit<SL)