Стратегия динамического индекса трейдеров

Автор:Чао Чжан, Дата: 2023-11-13 10:09:48
Тэги:

img

Обзор

Эта стратегия использует Динамический индекс трейдеров (TDI) в качестве основного технического индикатора, в сочетании с скользящими средними за разные временные рамки для генерации торговых сигналов.

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

Стратегия сначала рассчитывает RSI закрытия с периодом 13. Затем она рассчитывает 34-периодную простую скользящую среднюю величину RSI и использует 1,6185 раз 34-периодное стандартное отклонение RSI в качестве верхней и нижней полос. Верхняя полоса - скользящая средняя плюс смещение, а нижняя полоса - скользящая средняя минус смещение.

После этого он вычисляет быстрый MA RSI с периодом 2 и медленный MA RSI с периодом 7. Затем он извлекает исторические значения этих индикаторов из более высокого временного интервала. Когда быстрый MA пересекает ниже медленного MA, генерируется сигнал покупки. Когда быстрый MA пересекает выше медленного MA, генерируется сигнал продажи.

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

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

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

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

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

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

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

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

  1. Испытывайте периоды RSI различной длины, чтобы найти более подходящие для текущих рыночных условий настройки.

  2. Оптимизируйте длины быстрых и медленных МА, чтобы сбалансировать сцепление обратных движений и фильтрацию шума.

  3. Добавить стоп-лосс, основанный на волатильности, чтобы контролировать максимальное снижение.

  4. Попробуйте добавить другие факторы, такие как изменение объема в логике входа, чтобы улучшить точность.

  5. Проверить эффект повторного использования одного и того же набора торговых сигналов в нескольких временных рамках.

  6. Разработка механизмов адаптивной оптимизации для регулирования динамических параметров.

Заключение

Общая структура этой стратегии реверсии RSI разумна с четкой и интерпретируемой логикой. Она имеет настраиваемое пространство и потенциал оптимизации. При надлежащей настройке параметров и контроле рисков ее способность улавливать реверсии многообещающая. Следующим шагом является дальнейшая оптимизация стратегии посредством большего обратного тестирования и корректировки параметров, чтобы повысить ее надежность и рентабельность.


/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy("TDI - Traders Dynamic Index [Mehdi]", shorttitle="TDIMEHDI")

rsiPeriod = input(13, minval = 1, title = "RSI Period")
bandLength = input(34, minval = 1, title = "Band Length")
lengthrsipl = input(7, minval = 0, title = "Fast MA on RSI")
lengthtradesl = input(2, minval = 1, title = "Slow MA on RSI")
p1 = input("15", title = "Signal Timeframe")

src = close                                                             // Source of Calculations (Close of Bar)

r = rsi(src, rsiPeriod)                                                 // RSI of Close
ma = sma(r, bandLength)                                                 // Moving Average of RSI [current]
offs = (1.6185 * stdev(r, bandLength))                                  // Offset
up = ma + offs                                                          // Upper Bands
dn = ma - offs                                                          // Lower Bands
mid = (up + dn) / 2                                                     // Average of Upper and Lower Bands
fastMA = sma(r, lengthrsipl)                                            // Moving Average of RSI 2 bars back
slowMA = sma(r, lengthtradesl)                                          // Moving Average of RSI 7 bars back

hline(20)                                                               // ExtremelyOversold
hline(30)                                                               // Oversold
hline(50)                                                               // Midline
hline(70)                                                               // Overbought
hline(80)                                                               // ExtremelyOverbought

up1 = request.security(syminfo.tickerid, p1, up)
dn1 = request.security(syminfo.tickerid, p1, dn)
mid1 = request.security(syminfo.tickerid, p1, mid)
slowMA1 = request.security(syminfo.tickerid, p1, slowMA)
fastMA1 = request.security(syminfo.tickerid, p1, fastMA)

plot(up1, "Upper Band", color = #3286c3, linewidth = 2)               // Upper Band
plot(dn1, "Lower Band", color = #3286c3, linewidth = 2)               // Lower Band
plot(mid1, "Middle of Bands", color = yellow, linewidth = 2)      // Middle of Bands
plot(slowMA1, "Slow MA", color=green, linewidth=2)                       // Plot Slow MA
plot(fastMA1, "Fast MA", color=red, linewidth=1)                         // Plot Fast MA

if (crossover(slowMA1, fastMA1))
    strategy.entry("Buy", strategy.long, comment="Buy")

if (crossunder(slowMA1, fastMA1))
    strategy.entry("Sell", strategy.short, comment="Sell")

Больше