Многоиндикаторная количественная торговая стратегия на основе расхождения тренда

BB RSI STOCH MFI EMA SMA
Дата создания: 2025-02-08 16:08:01 Последнее изменение: 2025-02-08 16:08:01
Копировать: 0 Количество просмотров: 420
1
Подписаться
1617
Подписчики

Многоиндикаторная количественная торговая стратегия на основе расхождения тренда

Обзор

Это стратегия для отслеживания тенденций и отклонения от торговли, основанная на нескольких технических показателях. Стратегия использует в комплексе Bollinger Bands, Relatively Strong Indicators (RSI), Random Indicators (Stochastic) и Capital Flow Indicators (MFI) для захвата возможностей перекупа и перепродажи на рынке, чтобы повысить надежность торговых сигналов с помощью перекрестного подтверждения нескольких показателей.

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

Стратегия использует многоуровневый механизм фильтрации для подтверждения торговых сигналов:

  1. Использование полосы Бурин ((20, 2) в качестве отсчета для диапазона колебаний цены, чтобы вызвать предварительный выбор сигнала покупки, когда цена прорывается через полосу Бурин.
  2. RSI ((3)) устанавливается как диапазон перекупа и перепродажи ((85,15), который подтверждает перепродажу, когда RSI переходит через 15 вверх.
  3. Случайный показатель ((10,3)) устанавливается на ((85,15), когда K-линия вверх пробивает 15 и далее подтверждает перепродажу.
  4. 10-циклическая EMA MFI используется для подтверждения движения капитала, а восходящая тенденция поддерживает покупку. Покупательные условия должны выполняться одновременно: цена пробивает подъемную линию буринской ленты, RSI пробивает перепродажу, случайный индикатор пробивает перепродажу и MFI тренд вверх. Условия продажи противоположны: цена пробивает Брин, RSI пробивает ОБП, случайный индикатор пробивает ОБП.

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

  1. С помощью многочисленных технических показателей и перекрестной проверки, значительно снижается количество ложных сигналов.
  2. В сочетании с трендовыми и динамическими индикаторами, они могут одновременно отслеживать тенденции и предупреждать об обратном направлении.
  3. Использование быстрого RSI ((3 цикла) повышает эффективность входа во времени.
  4. Подтверждение денежных потоков через МФИ, повышение надежности транзакций.
  5. Использование бринговых полос в качестве отсчета колебаний, адаптируясь к различным рыночным условиям.

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

  1. Несколько индикаторов могут привести к задержке сигнала и упустить лучшую возможность входа.
  2. На фоне рыночной нестабильности, возможно, будут происходить частые сделки.
  3. Быстрый RSI может быть более чувствительным к шуму.
  4. Для проверки стабильности стратегии требуется большое количество образцов. Рекомендуется применять следующие меры контроля риска:
  • Настройка стоп-стоп
  • Контроль за объемом разовых сделок
  • Приспособление параметров в различных рыночных условиях
  • Фильтрация сделок с учетом большего количества рыночных особенностей

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

  1. Параметры динамической корректировки показателя:
  • Приспособность к рыночным колебаниям в соответствии с параметрами Брин-бенда
  • Периодическая настройка RSI и случайных индикаторов на основе рыночного цикла
  1. Добавить фильтр рыночной среды:
  • Добавить индикатор силы тренда
  • Учитывайте изменения в объеме
  1. Улучшить управление рисками:
  • Осуществление динамического остановки
  • Увеличение ограничения по времени удержания позиций
  1. Оптимизация сигнала:
  • Добавление условий подтверждения тренда
  • Оптимизация веса показателей

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

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

Исходный код стратегии
/*backtest
start: 2022-02-09 00:00:00
end: 2025-02-06 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ahmetkaratas4238

//@version=5
strategy("İzmir Stratejisi", overlay=true)

// **Bollinger Bantları Hesaplamaları**
bbLength = 20
bbMult = 2.0
basis = ta.sma(close, bbLength)
dev = bbMult * ta.stdev(close, bbLength)
upperBand = basis + dev
lowerBand = basis - dev

// **RSI (3,85,15) Hesaplaması**
rsiLength = 3
rsiUpper = 85
rsiLower = 15
rsi = ta.rsi(close, rsiLength)

// **Stochastic (10,3,85,15) Hesaplaması**
stochLength = 10
smoothK = 3
smoothD = 3
stochUpper = 85
stochLower = 15
k = ta.sma(ta.stoch(close, high, low, stochLength), smoothK)
d = ta.sma(k, smoothD)

// **Money Flow Index (MFI) Hesaplaması**
mfiLength = 14
mfi = ta.mfi(close, mfiLength)  // Hata düzeltildi: Artık yalnızca periyot alıyor
mfiTrendUp = ta.ema(mfi, 10) > ta.ema(mfi[1], 10)  // MFI yükseliş trendi
mfiTrendDown = ta.ema(mfi, 10) < ta.ema(mfi[1], 10) // MFI düşüş trendi

// **ALIM ŞARTLARI**
var bbBreakdown=false
var rsiBreakout=false
var stochBreakout=false
bbBreakdown := ta.crossunder(close,lowerBand)?true:bbBreakdown  // Fiyat BB altına sarktı mı?
rsiBreakout := ta.crossover(rsi, rsiLower)?true:rsiBreakout  // RSI 15 seviyesini yukarı kırdı mı?
stochBreakout := ta.crossover(k, stochLower)?true:stochBreakout  // Stochastic alt bandı yukarı kırdı mı?
buyCondition = bbBreakdown and rsiBreakout and stochBreakout and mfiTrendUp

// **SATIM ŞARTLARI**
var bbBreakup=false
var rsiBreakdown=false
var stochBreakdown=false
bbBreakup := ta.crossunder(close, upperBand)?true:bbBreakup  // Fiyat BB üst bandından aşağı kırdı mı?
rsiBreakdown := ta.crossunder(rsi, rsiUpper)?true:rsiBreakdown  // RSI 85 seviyesini aşağı kırdı mı?
stochBreakdown := ta.crossunder(k, stochUpper)?true:stochBreakdown  // Stochastic üst bandı aşağı kırdı mı?
sellCondition = bbBreakup and rsiBreakdown// and stochBreakdown and mfiTrendDown

if ta.crossunder(close,lowerBand)
    bbBreakup:=false
if ta.crossover(rsi, rsiLower)
    rsiBreakdown:=false
if ta.crossover(k, stochLower)
    stochBreakdown:=false

if ta.crossunder(close, upperBand)
    bbBreakdown:=false
if ta.crossunder(rsi, rsiUpper)
    rsiBreakout:=false
if ta.crossunder(k, stochUpper)
    stochBreakout:=false

// **Alım İşlemi Aç**
if buyCondition
    strategy.entry("Long", strategy.long)

// **Satım İşlemi Yap (Pozisyon Kapat)**
if sellCondition
    strategy.close("Long")

// **Bollinger Bantlarını Göster**
plot(upperBand, title="Üst BB", color=color.red)
plot(lowerBand, title="Alt BB", color=color.green)
plot(basis, title="Orta BB", color=color.blue)

// **Alım ve Satım Sinyallerini İşaretle**
plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="AL")
plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="SAT")