Количественная торговая стратегия FNGU на основе полос Боллинджера и RSI


Дата создания: 2024-01-29 14:53:47 Последнее изменение: 2024-01-29 14:53:47
Копировать: 0 Количество просмотров: 671
1
Подписаться
1617
Подписчики

Количественная торговая стратегия FNGU на основе полос Боллинджера и RSI

Обзор

Стратегия называется “FNGU Quantitative Trading Strategy” (FNGU Quantitative Trading Strategy) для “FNGU” (FNGU) и “RSI” (RSI) и является стратегией длительных позиций, предназначенной для FNGU. Стратегия использует “Bulling Line” (Bulling Line) и “RSI” (RSI) для выявления перекупа и перепродажи акций, в результате чего создаются сигналы покупки и продажи.

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

Основная логика этой стратегии основана на комбинации показателей линий буринга и RSI.

Во-первых, линейка буринга состоит из трех линий: средней, верхней и нижней. Средняя линия представляет собой n-дневную простую скользящую среднюю, а верхняя и нижняя линии соответственно являются положительными и отрицательными k-кратными стандартными разницами.

В этой стратегии средний период буринга длится 235 дней, а значение k = 2. При снижении цены ниже буринга или при прорыве цены вверх по буринговой средней линии с нижней стороны создается сигнал покупки; при повышении цены выше буринга - сигнал продажи.

Во-вторых, показатель RSI отражает степень перекупа и перепродажи акций. RSI выше 70 означает перекуп, а ниже 30 - перепродажу. В этой стратегии длина периода RSI составляет 2.

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

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

Эта стратегия имеет следующие преимущества:

  1. В сочетании с линией Бринна и RSI, это дает более точные и надежные сигналы о покупке и продаже.

  2. Используя линию Бринна, чтобы определить зоны перекупа и перепродажи акций, RSI фильтрует фальшивые сигналы, которые дополняют друг друга.

  3. Только долгосрочные сделки, без учета рисков по пустым сделкам.

  4. Стратегические параметры были оптимизированы для FNGU.

  5. Автоматическое остановка убытков, снижение риска потерь.

  6. Программирование должно быть простым, понятным и легко изменяемым.

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

В этой стратегии есть некоторые риски, в том числе:

  1. Как буринская линия, так и RSI могут создавать ложные сигналы, подвержены арбитражу и требуют осторожной торговли. Можно соответствующим образом скорректировать параметры или добавить другие индикаторы для фильтрации.

  2. Акции FNGU сами по себе очень волатильны, неправильная установка стоп-убытков может увеличить потери. Стоп-убытки следует соответственно смягчить.

  3. Стратегия подходит только для таких высоко волатильных акций, как FNGU, не подходит для других акций и требует корректировки параметров в зависимости от различных акций.

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

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

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

  1. Добавление других комбинаций показателей, таких как KDJ, MACD и т.д., делает сигнал более точным.

  2. Оптимизация параметров булинга и RSI для большего количества типов акций.

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

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

  5. В сочетании с эмоциональным анализом и использованием социальных данных для создания торговых сигналов.

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

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

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

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

//@version=4
strategy("Bollinger + RSI + EMA, Double Strategy Long-Only (by EMKM)", shorttitle="1Min Killer", overlay=true)

///////////// RSI
RSIlength = input(2, title="RSI Period Length") // Adjusted RSI period length
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = rsi(price, RSIlength)

///////////// Bollinger Bands
BBlength = input(235, minval=1, title="Bollinger Period Length") // Adjusted Bollinger period length
BBmult = 2
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
BBtarget38 = BBbasis + 0.38 * BBdev  // Line at 38% of Bollinger Band width
BBtarget50 = BBbasis + 0.50 * BBdev  // Line at 50% of Bollinger Band width

///////////// EMA
emaLength = input(20, title="EMA Period Length")
ema = ema(close, emaLength)

source = close
buyEntry = crossover(source, BBlower) or (close < BBlower and close > BBbasis) or (low < BBlower and close > BBbasis) // Add condition for low touching Bollinger Band
sellEntry = crossunder(source, BBupper)

///////////// Plotting
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
plot(BBtarget38, color=color.blue, linewidth=2, title="SMA at 38% of BB width")  // Line at 38%
plot(BBtarget50, color=color.green, linewidth=2, title="SMA at 50% of BB width")  // Line at 50%
plot(ema, color=color.orange, title="EMA")  // Plot EMA

///////////// RSI + Bollinger Bands Strategy
longCondition = crossover(vrsi, RSIoverSold) and buyEntry
sellCondition = crossunder(vrsi, RSIoverBought) and close > BBupper

close_long = close > BBbasis
close_short = close < BBbasis

if (not na(vrsi))
    if longCondition
        strategy.entry("Buy", strategy.long, qty=10, stop=BBlower, comment="Buy")
    else
        strategy.cancel(id="Buy")
        
    if close_long
        strategy.close("Buy")

if (sellCondition)
    strategy.entry("Sell", strategy.short, qty=10, stop=BBupper, comment="Sell")
else
    strategy.cancel(id="Sell")

if close_short
    strategy.close("Sell")