Динамическая торговая стратегия с адаптивным порогом шока RSI

RSI ATR BAT LR SD
Дата создания: 2024-11-12 16:07:32 Последнее изменение: 2024-11-12 16:07:32
Копировать: 2 Количество просмотров: 498
1
Подписаться
1617
Подписчики

Динамическая торговая стратегия с адаптивным порогом шока RSI

Обзор

Стратегия представляет собой адаптивную торговую систему, основанную на RSI (относительно сильный показатель), которая оптимизирует генерирование торговых сигналов путем динамической корректировки превышения превышения торговой отметки. Основным новшеством стратегии является введение метода Bufi адаптивной отметки (BAT), который регулирует триггерную отметку RSI в зависимости от рыночных тенденций и динамики ценовой волатильности, что повышает эффективность традиционной стратегии RSI.

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

В основе стратегии лежит модернизация традиционной системы фиксированной RSI в динамическую.

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

В стратегии также включены два механизма управления рисками:

  • Механизм фиксированной периодической ликвидации
  • Максимальная убыточность

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

  1. Сильная адаптивность
  • Возможность автоматической корректировки торговой отметки в зависимости от состояния рынка
  • Недостатки использования фиксированных параметров в различных рыночных условиях
  1. Уровень риска:
  • Ограничение максимального срока хранения
  • Включает в себя механизм защиты от убытков
  • Управление процентными позициями
  1. Качество сигнала улучшилось:
  • Ложные сигналы о снижении рыночных колебаний
  • Повышение доступа к трендовым рынкам
  • Баланс между чувствительностью и стабильностью

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

  1. Чувствительность параметров:
  • Выбор коэффициента BAT влияет на эффективность стратегии
  • Настройки RSI-циклов требуют тщательного тестирования
  • Приспособность к параметрам длины требует оптимизации
  1. Рыночная среда зависит от:
  • Потерянные возможности на рынке с высокой волатильностью
  • При резких колебаниях стоп-потери могут быть более крупными
  • Параметры должны быть адаптированы к различным рынкам
  1. Технические ограничения:
  • На основе исторических данных рассчитывается порог
  • Возможна задержка
  • Необходимо учитывать затраты на транзакцию

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

  1. Параметры оптимизации:
  • Введение механизма выбора адаптивных параметров
  • Параметры, адаптируемые к динамике различных рыночных циклов
  • Добавление функций автоматической оптимизации параметров
  1. Оптимизация сигнала:
  • Проверка в сочетании с другими техническими показателями
  • Добавление функции идентификации циклов рынка
  • Оптимизируйте своевременность поступления
  1. Оптимизация контроля рисков:
  • Введение динамического механизма остановки убытков
  • Оптимизация стратегии управления позициями
  • Добавлен механизм управления откатом

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

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

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PineCodersTASC

//  TASC Issue: October 2024
//     Article: Overbought/Oversold
//              Oscillators: Useless Or Just Misused
//  Article By: Francesco P. Bufi
//    Language: TradingView's Pine Script™ v5
// Provided By: PineCoders, for tradingview.com

//@version=5
title  ='TASC 2024.10 Adaptive Oscillator Threshold'
stitle = 'AdapThrs'
strategy(title, stitle, false, default_qty_type = strategy.percent_of_equity,
         default_qty_value = 10, slippage = 5)

// --- Inputs ---
string sys    = input.string("BAT", "System", options=["Traditional", "BAT"])
int rsiLen    = input.int(2, "RSI Length", 1)
int buyLevel  = input.int(14, "Buy Level", 0)
int adapLen   = input.int(8, "Adaptive Length", 2) 
float adapK   = input.float(6, "Adaptive Coefficient")
int exitBars  = input.int(28, "Fixed-Bar Exit", 1, group = "Strategy Settings")
float DSL     = input.float(1600, "Dollar Stop-Loss", 0, group = "Strategy Settings")

// --- Functions --- 
//  Bufi's Adaptive Threshold
BAT(float price, int length) =>
    float sd = ta.stdev(price, length)
    float lr = ta.linreg(price, length, 0)
    float slope = (lr - price[length]) / (length + 1)
    math.min(0.5, math.max(-0.5, slope / sd))

// --- Calculations ---
float osc = ta.rsi(close, rsiLen)

// Strategy entry rules
// - Traditional system
if sys == "Traditional" and osc < buyLevel
    strategy.entry("long", strategy.long)
// - BAT system 
float thrs = buyLevel * adapK * BAT(close, adapLen)
if sys == "BAT" and osc < thrs
    strategy.entry("long", strategy.long)

// Strategy exit rules
// - Fixed-bar exit
int nBar = bar_index - strategy.opentrades.entry_bar_index(0)
if exitBars > 0 and nBar >= exitBars
    strategy.close("long", "exit")
// - Dollar stop-loss
if DSL > 0 and strategy.opentrades.profit(0) <= - DSL
    strategy.close("long", "Stop-loss", immediately = true)

// Visuals
rsiColor  = #1b9e77
thrsColor = #d95f02
rsiLine   = plot(osc, "RSI", rsiColor, 1)
thrsLine  = plot(sys == "BAT" ? thrs : buyLevel, "Threshold", thrsColor, 1)
zeroLine  = plot(0.0, "Zero", display = display.none)
fill(zeroLine, thrsLine, sys == "BAT" ? thrs : buyLevel, 0.0, color.new(thrsColor, 60), na)