Краткосрочная стратегия двойной фильтрации на основе SMA и RSI


Дата создания: 2023-10-08 12:14:36 Последнее изменение: 2023-10-08 12:14:36
Копировать: 0 Количество просмотров: 659
1
Подписаться
1617
Подписчики

Обзор

Эта стратегия основана на двух показателях: простой движущейся средней (SMA) и относительно сильный индекс (RSI). Она открывает позиции, когда RSI прорывает входную сигнальную линию, и закрывается, когда цена ниже SMA; закрывает позиции, когда появляются стоп-сигналы или стоп-сигналы. Эта стратегия в сочетании с двойными фильтрационными условиями для входа в рынок эффективно предотвращает недействительную торговлю.

Принципы

Эта стратегия основана на двух показателях:

  1. SMA: рассчитывается как простое скользящее среднее за последние 200 дней, которое представляет собой направление тренда средней и длинной линии.

  2. RSI: Относительно слабый коэффициент за последние 14 дней, показывающий перекуп и перепродажу в краткосрочной перспективе.

Когда RSI пересекает 51 и входит в зону сверхпокупок, а также выше линии SMA, это означает, что короткая и средняя длинные линии отклоняются от тренда, поэтому они становятся пустыми.

Затем устанавливается стоп-линия и стоп-линия. Стоп-линия устанавливается, когда RSI превышает 32, а стоп-линия устанавливается, когда RSI превышает 54 или когда стоп-линия превышается.

Преимущества

  1. Двойная фильтрация увеличивает точность входа в рынок. RSI определяет краткосрочный сигнал опережения, SMA определяет средне-длинную линию пустого сигнала, комбинация которых более надежна.

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

  3. Политическая логика проста, понятна и легко понятна.

Риск

  1. Не учитываются такие факторы, как объем торговли и волатильность.

  2. Параметры RSI являются фиксированными и могут не применяться ко всем видам и периодам.

  3. Транзакционные издержки, такие как пропускная способность, комиссионные и т.д., не учитываются.

  4. Стратегии простые, и пространство для расширения ограничено.

Оптимизация

  1. Тестирование и оптимизация параметров RSI и SMA, чтобы найти оптимальную комбинацию параметров.

  2. Добавление методов остановки убытков, таких как перемещение убытков, пропорциональные убытки и т. д.

  3. Фильтрация в сочетании с трендовыми индикаторами, такими как MACD, предотвращает обратную торговлю.

  4. Рассмотреть возможность добавления показателя объема сделок, фильтруя ложные прорывы с низким уровнем.

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

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

Исходный код стратегии
/*backtest
start: 2023-09-07 00:00:00
end: 2023-10-07 00:00:00
period: 3h
basePeriod: 15m
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/
// © abdllhatn

//@version=5
// strategy("Alpha Short SMA and RSI Strategy", overlay=true, initial_capital=10000, default_qty_value=100)

// Inputs
sma_length = input(200, title="SMA Length")
rsi_length = input(14, title="RSI Length")
rsi_entry = input(51, title="RSI Entry Level")
rsi_stop = input(54, title="RSI Stop Level")
rsi_take_profit = input(32, title="RSI Take Profit Level")

// Indicators
sma_value = ta.sma(close, sma_length)
rsi_value = ta.rsi(close, rsi_length)

var float trailingStop = na
var float lastLow = na

// Conditions
shortCondition = ta.crossover(rsi_value, rsi_entry) and close < sma_value
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    trailingStop := na
    lastLow := na

if (strategy.position_size < 0)
    if (na(lastLow) or close < lastLow)
        lastLow := close
        trailingStop := close

if not na(trailingStop) and close > trailingStop
    strategy.close("Sell")

if (rsi_value >= rsi_stop)
    strategy.close("Sell")

if (rsi_value <= rsi_take_profit)
    strategy.close("Sell")

// Plot
plot(sma_value, color=color.red, linewidth=2)