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


Дата создания: 2024-01-08 10:28:26 Последнее изменение: 2024-01-08 10:28:26
Копировать: 1 Количество просмотров: 634
1
Подписаться
1617
Подписчики

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

Обзор

Эта стратегия называется двухосная стратегия прорыва на основе RSI. Эта стратегия использует двухосную комбинацию RSI для оценки и достижения низкой покупки и продажи. Когда RSI ниже установленной низкой траектории (по умолчанию 40), она рассматривается как сигнал к покупке. Если RSI10 ниже установленной высокой траектории (по умолчанию 14), то покупка подтверждается.

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

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

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

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

Таким образом, совместное суждение RSI14 и RSI10 составляет центральную логику стратегии двух треков.

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

  1. Используя комбинацию двух RSI, можно более точно определить точки покупки и продажи
  2. Использование мобильного механизма остановки, позволяющего своевременно остановить убытки и контролировать максимальные потери
  3. Установка механизма выхода из прибыли, который может быть выведен после достижения целевой прибыли, чтобы избежать оттока прибыли

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

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

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

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

  1. Можно рассмотреть возможность комбинирования с другими показателями, такими как KDJ, MACD и т. д., для достижения мультииндикаторной проверки
  2. Параметры RSI могут быть настроены для разных сортов, чтобы они были более близки к характеристикам разновидности
  3. Можно установить динамическую остановку, которая в режиме реального времени регулируется в зависимости от таких показателей, как ATR
  4. Параметры RSI могут быть автоматически оптимизированы с помощью машинного обучения

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

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

Исходный код стратегии
/*backtest
start: 2023-12-31 00:00:00
end: 2024-01-07 00:00:00
period: 1m
basePeriod: 1m
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/
// © DojiEmoji

//@version=4
strategy("[KL] RSI 14 + 10 Strategy",overlay=true)

backtest_timeframe_start = input(defval = timestamp("01 Jan 2015 13:30 +0000"), title = "Backtest Start Time", type = input.time)
//backtest_timeframe_end = input(defval = timestamp("19 Mar 2021 19:30 +0000"), title = "Backtest End Time", type = input.time)
TARGET_PROFIT_MODE = input(false,title="Exit when Risk:Reward met")
REWARD_RATIO = input(3,title="Risk:[Reward] (i.e. 3) for exit")
// Trailing stop loss {
TSL_ON = input(true,title="Use trailing stop loss")
var entry_price = float(0)
ATR_multi_len = 26
ATR_multi = input(2, "ATR multiplier for stop loss")
ATR_buffer = atr(ATR_multi_len) * ATR_multi
plotchar(ATR_buffer, "ATR Buffer", "", location = location.top)
risk_reward_buffer = (atr(ATR_multi_len) * ATR_multi) * REWARD_RATIO
take_profit_long = low > entry_price + risk_reward_buffer
take_profit_short = low < entry_price - risk_reward_buffer
var bar_count = 0 //number of bars since entry 
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
stop_loss_price := max(stop_loss_price, close - trailing_SL_buffer)
// plot TSL line
trail_profit_line_color = color.green
showLine = strategy.position_size == 0
if showLine
    trail_profit_line_color := color.black
    stop_loss_price := close - trailing_SL_buffer
plot(stop_loss_price,color=trail_profit_line_color)
// }
// RSI
RSI_LOW = input(40,title="RSI entry")
RSI_HIGH = input(70,title="RSI exit")
rsi14 = rsi(close, 14)
rsi10 = rsi(close, 10)

if true// and time <= backtest_timeframe_end
    buy_condition = rsi14 <= RSI_LOW and rsi10 < rsi14
    exit_condition = rsi14 >= RSI_HIGH and rsi10 > rsi14
    //ENTRY:
    if strategy.position_size == 0 and buy_condition
        entry_price := close
        trailing_SL_buffer := ATR_buffer
        stop_loss_price := close - ATR_buffer
        strategy.entry("Long",strategy.long, comment="buy")
        bar_count := 0
    else if strategy.position_size > 0
        bar_count := bar_count + 1

    //EXIT: 
    // Case (A) hits trailing stop
    if TSL_ON and strategy.position_size > 0 and close <= stop_loss_price
        if close > entry_price
            strategy.close("Long", comment="take profit [trailing]")
            stop_loss_price := 0
        else if close <= entry_price and bar_count
            strategy.close("Long", comment="stop loss")
            stop_loss_price := 0
        bar_count := 0
    // Case (B) take targeted profit relative to risk 
    if strategy.position_size > 0 and TARGET_PROFIT_MODE
        if take_profit_long
            strategy.close("Long", comment="take profits [risk:reward]")
            stop_loss_price := 0
        bar_count := 0
    // Case (C)
    if strategy.position_size > 0 and exit_condition
        if take_profit_long
            strategy.close("Long", comment="exit[rsi]")
            stop_loss_price := 0
        bar_count := 0