この戦略は"RSI 双軌突破戦略"と呼ばれる.低値で購入し,高値で販売するという目標を達成するために,RSI インディケーターの双軌を判断するために利用する.RSI インディケーターが設定された下線トラック (デフォルト 40) 以下の値を下回ると,それは購入信号とみなされる.この時点で,RSI 10 が RSI 14 より小さい場合,それは購入をさらに確認する.RSI インディケーターが設定された上線トラック (デフォルト 70) を上回ると,それは販売信号とみなされる.この時点で,RSI 10 が RSI 14 より大きい場合,それは売却をさらに確認する.戦略はストップ損失と利益を取ることのメカニズムも設定する.
この戦略の核心論理は,判断のために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