이 전략은
이 전략의 핵심 논리는 판단을 위해 RSI 지표의 이중 트랙을 사용하는 것입니다. RSI 지표는 일반적으로 14 기간으로 설정되어 최근 14 일 동안 주식의 강도와 약도를 나타냅니다. 이 전략은 RSI10을 보조 판단 지표로 추가합니다.
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