Стратегия прорыва RSI является количественной торговой стратегией

Автор:Чао Чжан, Дата: 2023-12-22 14:06:45
Тэги:

img

Обзор

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

Логика стратегии

Основная идея стратегии прорыва RSI заключается в использовании индикатора RSI для определения условий перекупления и перепродажи на рынке.

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

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

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

Стратегия прорыва RSI имеет следующие преимущества:

  1. Простые и понятные торговые сигналы. Индикатор RSI легко рассчитывается и интерпретируется, просто наблюдая, если линия индикатора превышает пороговые значения.

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

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

Риски

Стратегия прорыва RSI также сопряжена с некоторыми рисками:

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

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

  3. Высокие риски снижения. RSI часто демонстрирует бычье расхождение, когда цена продолжает расти, в то время как RSI имеет тенденцию к снижению.

Области улучшения

Стратегия прорыва RSI может быть улучшена следующими способами:

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

  2. Оптимизировать параметры RSI для повышения стабильности, включая настройку порогов перекупленности / перепроданности, настройку фильтра длительности сигнала и т. Д. С помощью строгих испытаний. Это фильтрует неэффективные сигналы.

  3. Используйте стоп-лосс и прибыль, чтобы контролировать риски. Например, устанавливайте процентные или точечные остановки. Избегайте чрезмерных потерь на общих прибылях. Также учитывайте тенденции и технические моменты прибыли.

Заключение

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


/*backtest
start: 2023-11-21 00:00:00
end: 2023-12-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2021

strategy(title="My New Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true)

//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1")
long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick
long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick

// Enable Short Strategy
enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3")
short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4")
short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick
short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4")
short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick

// Plot Stoploss & Take Profit Levels
long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100)
long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100)
short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100)
short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100)
plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level")
plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level")
plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level")
plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level")

// Date Range
start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range")
start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range")
end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range")
end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range")
in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0))

//// Inputs   **This is where you enter your indicators for your strategy. For example, I added the RSI indicator.**
//RSI
rsi = rsi(close, 14)
rsi_over_sold = rsi < 30
rsi_over_bought = rsi > 70


//// Strategy  **This is where you create your strategy. For example, We have or buy and sell signals.**
// Creating Long and Short Strategy
buy_signal = rsi_over_sold
sell_signal = rsi_over_bought

// Long Strategy
if buy_signal and in_date_range and enable_long_strategy == true
    strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position")
    strategy.exit("Long  SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.")
    strategy.close("Long", when=sell_signal, alert_message="Close Long Position")
    
// Short Strategy
if sell_signal and in_date_range and enable_short_strategy == true
    strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position")
    strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.")
    strategy.close("Short", when=buy_signal, alert_message="Close Short Position")


Больше