RSIの二重トレック突破戦略

作者: リン・ハーンチャオチャン, 開催日:2024-01-08 10:28:26
タグ:

img

概要

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

戦略原則

この戦略の核心論理は,判断のためにRSI指標の二重トラックを使用することです.RSI指標は,一般的に14期に設定され,過去14日の株の強さと弱さを表しています.この戦略は,補助判断指標としてRSI10を追加します.

RSI14が40トラックを下回ると,株価が弱点を突破し,サポートリバウンドのチャンスがあると考えられる.この時点で,RSI10がRSI14を下回ると,短期トレンドが依然として下落していることを意味し,販売信号をさらに確認することができる.したがって,RSI14 <= 40とRSI10 が満たされると,購入信号が生成される.

RSI14が70トラックを超えると,株価が短期的に強い領域に入ると考えられ,引き下げ調整のチャンスがある可能性がある.この時点で,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


もっと