Стратегия называется
Основная логика этой стратегии заключается в использовании двойных треков индикатора RSI для суждения.
Когда индекс RSI14 прорывается ниже 40, считается, что цена акций прорвалась через слабую сторону и может быть шанс восстановления поддержки. В это время, если RSI10 меньше RSI14, это означает, что краткосрочная тенденция все еще снижается, что может еще больше подтвердить сигнал продажи.
Если RSI14 превышает 70, считается, что цена на акции вступила в краткосрочную сильную зону и может быть шанс на обратную корректировку. В это время, если RSI10 больше RSI14, это означает, что краткосрочная тенденция продолжается вверх, что может еще больше подтвердить сигнал покупки.
Таким образом, совокупное суждение RSI14 и RSI10 составляет основную логику двойной стратегии.
Для полного использования этой стратегии параметры 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