Стратегия прорыва RSI - это количественная стратегия торговли, основанная на индикаторе относительной силы (RSI). Стратегия генерирует торговые сигналы, когда RSI превышает заранее установленные пороговые значения перекупленности и перепродажи, т.е. идет в длинный курс, когда RSI ниже 30, и идет в короткий, когда RSI выше 70.
Основная идея стратегии прорыва RSI заключается в использовании индикатора RSI для определения условий перекупления и перепродажи на рынке.
Стратегия сначала устанавливает пороговые значения перепроданности и перекупленности для RSI, с значениями по умолчанию 30 и 70. Затем она отслеживает линию RSI в режиме реального времени. Когда RSI пересекает порог 70 сверху вниз, генерируется сигнал продажи. Это указывает на то, что рынок вошел в зону перекупленности и, вероятно, изменится вниз, поэтому принимается короткая позиция. И наоборот, когда RSI превышает порог 30, генерируется сигнал покупки, указывающий на то, что рынок перепроданности, вероятно, восстановится, поэтому принимается длинная позиция.
Таким образом, стратегия пытается зафиксировать точки перелома цен во время колебаний акций и соответственно корректировать позиции на
Стратегия прорыва RSI имеет следующие преимущества:
Простые и понятные торговые сигналы. Индикатор RSI легко рассчитывается и интерпретируется, просто наблюдая, если линия индикатора превышает пороговые значения.
Полностью автоматизируемый с хорошими результатами обратных тестов. Торги генерируются индикатором RSI без вмешательства человека. В то же время сигналы RSI с перекупленными и перепроданными сигналами, как правило, эффективны, что приводит к достойным стратегическим доходам в обратных тестах.
Трейдеры могут гибко настраивать параметры RSI, такие как пороги перекупа / перепродажи, чтобы они соответствовали различной динамике акций и рынка.
Стратегия прорыва RSI также сопряжена с некоторыми рисками:
Частое перекрещивание пороговых значений индикатора может привести к чрезмерной неэффективности торгов, препятствующей стабильной прибыли.
Нет суждения о тренде. RSI только производит сигналы на основе уровня перекупленности / перепроданности без хорошего оценки общей тенденции. Стратегия имеет тенденцию застрять на нестабильных рынках.
Высокие риски снижения. RSI часто демонстрирует бычье расхождение, когда цена продолжает расти, в то время как RSI имеет тенденцию к снижению.
Стратегия прорыва RSI может быть улучшена следующими способами:
Включить несколько индикаторов для преодоления ограничений RSI, например, скользящие средние для определения тенденции рынка, индикаторы силы и фильтры объема для подтверждения сигналов.
Оптимизировать параметры RSI для повышения стабильности, включая настройку порогов перекупленности / перепроданности, настройку фильтра длительности сигнала и т. Д. С помощью строгих испытаний. Это фильтрует неэффективные сигналы.
Используйте стоп-лосс и прибыль, чтобы контролировать риски. Например, устанавливайте процентные или точечные остановки. Избегайте чрезмерных потерь на общих прибылях. Также учитывайте тенденции и технические моменты прибыли.
Стратегия прорыва 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")