Торговая стратегия RSI с двойной экспоненциальной скользящей средней


Дата создания: 2024-01-30 15:44:11 Последнее изменение: 2024-01-30 15:44:11
Копировать: 0 Количество просмотров: 721
1
Подписаться
1617
Подписчики

Торговая стратегия RSI с двойной экспоненциальной скользящей средней

Обзор

Эта стратегия называется RSI (Relative Strength Index) и использует двузначные скользящие средние ((Double EMA) и относительно слабые показатели ((RSI) в качестве основных торговых показателей для механизированной торговли.

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

Эта стратегия сначала вычисляет двузначное скользящее среднее цены (MA), затем на основе MA вычисляет RSI, затем вычисляет скользящее среднее RSI (Smooth). Когда RSI пересекает свою скользящую среднюю, генерируется сигнал покупки; когда RSI пересекает свою скользящую среднюю, генерируется сигнал продажи.

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

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

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

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

Ответ:

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

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

  1. Испытание комбинаций двузначных скользящих средних различных длинных и коротких периодов, чтобы найти оптимальные параметры.
  2. Тестирование параметров цикла RSI для повышения надежности сигналов золота/смерти.
  3. Добавление объема сделок, фильтрации сигналов и шума от таких показателей, как ленты Брин.
  4. Вместе с динамикой, связанной с ценой закрытия в тот же день, волатильностью и другими факторами, коэффициент капитала сделки и стоп-стоп увеличиваются.
  5. Оптимизированный механизм отслеживания убытков в зависимости от характеристик разных сортов и рыночной среды.

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

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

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

//@version=2
strategy(title='[STRATEGY][RS]DemaRSI V0', shorttitle='D', overlay=false, initial_capital=100000, currency=currency.USD)
src = input(close)
ma_length = input(21)
rsi_length = input(4)
rsi_smooth = input(4)

ma = ema(ema(src, ma_length), ma_length)
marsi = rsi(ma, rsi_length)
smooth = ema(marsi, rsi_smooth)
plot(title='M', series=marsi, color=black)
plot(title='S', series=smooth, color=red)
hline(0)
hline(50)
hline(100)

max_order_per_day = input(6)
// strategy.risk.max_intraday_filled_orders(max_order_per_day)
trade_size_as_equity_factor = input(false)
trade_size = input(type=float, defval=10000.00) * (trade_size_as_equity_factor ? strategy.equity : 1)
take_profit_in_points = input(100000)
stop_loss_in_points = input(100000)
trail_in_points = input(150)

USE_SESSION = input(true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_SESSION ? true : not na(time('1', trade_session))

buy_entry = istradingsession and crossover(marsi, smooth)
sel_entry = istradingsession and crossunder(marsi, smooth)

strategy.entry('buy', long=true, qty=1, when=buy_entry)
strategy.entry('sel', long=false, qty=1, when=sel_entry)

strategy.exit('buy.Exit', from_entry='buy', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.exit('sel.Exit', from_entry='sel', profit=take_profit_in_points, loss=stop_loss_in_points, trail_points=trail_in_points, trail_offset=trail_in_points)
strategy.close_all(when=not istradingsession)