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

Автор:Чао Чжан, Дата: 2023-10-08 12:14:36
Тэги:

Обзор

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

Принципы

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

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

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

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

После этого устанавливаются линии стоп-лосса и стоп-лосса. Позиция закрывается, когда RSI падает ниже 32 для take profit, или когда 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)




Больше