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

Автор:Чао Чжан, Дата: 2024-01-08 10:28:26
Тэги:

img

Обзор

Стратегия называется RSI Dual-track Breakthrough Strategy. Она использует двойные пути индикатора RSI для суждения для достижения цели покупки низкого и продажи высокого. Когда индикатор RSI падает ниже установленного нижнего пути (по умолчанию 40), он считается сигналом покупки. В это время, если RSI10 меньше RSI14, он далее подтверждает покупку; Когда индикатор RSI поднимается выше установленного верхнего пути (по умолчанию 70), он считается сигналом продажи. В это время, если RSI10 больше RSI14, он далее подтверждает продажу. Стратегия также устанавливает механизмы движения стоп-лосс и прибыли.

Принцип стратегии

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

Когда индекс 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


Больше