【無料】RCI3本 短期中期長期クロスでサインとアラートインジケーター

0RCIクロスサムネイル 無料インジケーター

TradingView用のRCI3本を使ったインジケーターです。

短、中、長期線に対し、それぞれクロスすることでサインやアラートを出します。

 

※一応軽量化バージョンも作ってみたので、使い勝手のいい方を選んでください。微妙に計算違うのでサインが違います。

≫【軽量化Vr】RCI3本 短期中期長期クロスでサインとアラート

軽量化といっても微々たるものなので期待せず。

RCI3LINE CROSSインジケーター

RCIクロスインジケーターの画像

コチラがインジケーターの画面。

RCIの短期、中期、長期がそれぞれクロスしたタイミングで背景の色が変わってサインが出ます。

一度確定するとリペイントしません。

 

全部のクロスを表示していまうとゴチャゴチャしてわけがわからなくなると思うので、

RCIクロスインジケータースタイル変更画像

このように、短期線だけ強調。

中期線長期線のサインは消す、みたいな感じにできます。

※サインを消すときは、設定で透明度を0%にすると実質消えます。

 

RCIクロスパラメータ画像

デフォルトのパラメータは

  • 短期:9
  • 中期:26
  • 長期:52

ですが好みで変更できます。

既存のRCI系のインジケーターは、中期が36になっていることが多いですね。

RCIクロスアラート画像

アラート画面はコチラ。

上から

  • 中期が長期を下にクロス
  • 中期が長期を上にクロス
  • 短期が長期を下にクロス
  • 短期が長期を上にクロス
  • 短期が中期を下にクロス
  • 短期が中期を上にクロス

です。

英語で書いてありますが、まぁなんとなくわかると思います。

任意の時間足と通貨で、欲しいアラートを設定してください。

RCI3LINE CROSSインジケーターコード

//@version=5
indicator("RCI Cross Indicator", shorttitle="RCI Cross", overlay=false)

// Periods
itvs = input.int(9, "Short Term RCI Period", minval=2, maxval=100)
itvm = input.int(26, "Mid Term RCI Period", minval=2, maxval=100)
itvl = input.int(52, "Long Term RCI Period", minval=2, maxval=100)

// Show alerts
showAlerts = input.bool(true, "Show Alerts")

// RCI calculation with improved performance
rci(length) =>
    var float rank = na
    var float sum = na
    
    // Calculate ranking for each period
    sum := 0.0
    for i = 0 to length - 1
        rank := 1.0
        current_price = close[i]
        
        // Count how many prices are lower than current
        for j = 0 to length - 1
            if current_price > close[j]
                rank += 1.0
            else if current_price == close[j] and j > i
                rank += 0.5
        
        // Calculate squared difference
        period_pos = i + 1
        diff = period_pos - rank
        sum += diff * diff
    
    // RCI formula: (1 - 6 * Σd² / (n³ - n)) * 100
    n = length
    rci_value = (1.0 - 6.0 * sum / (n * n * n - n)) * 100.0
    rci_value

// Calculate RCI values
rciShort = rci(itvs)
rciMid = rci(itvm) 
rciLong = rci(itvl)

// Cross conditions
crossShortMidUp = ta.crossover(rciShort, rciMid)
crossShortMidDown = ta.crossunder(rciShort, rciMid)
crossShortLongUp = ta.crossover(rciShort, rciLong)
crossShortLongDown = ta.crossunder(rciShort, rciLong)
crossMidLongUp = ta.crossover(rciMid, rciLong)
crossMidLongDown = ta.crossunder(rciMid, rciLong)

// Alert conditions (alertcondition must be in global scope)
alertcondition(showAlerts and crossShortMidUp, title="Short-Mid Up Cross", message="Short Term RCI crossed above Mid Term RCI!")
alertcondition(showAlerts and crossShortMidDown, title="Short-Mid Down Cross", message="Short Term RCI crossed below Mid Term RCI!")
alertcondition(showAlerts and crossShortLongUp, title="Short-Long Up Cross", message="Short Term RCI crossed above Long Term RCI!")
alertcondition(showAlerts and crossShortLongDown, title="Short-Long Down Cross", message="Short Term RCI crossed below Long Term RCI!")
alertcondition(showAlerts and crossMidLongUp, title="Mid-Long Up Cross", message="Mid Term RCI crossed above Long Term RCI!")
alertcondition(showAlerts and crossMidLongDown, title="Mid-Long Down Cross", message="Mid Term RCI crossed below Long Term RCI!")

// Plotting
plot(rciShort, color=color.red, title="Short Term RCI", linewidth=2)
plot(rciMid, color=color.green, title="Mid Term RCI", linewidth=2)
plot(rciLong, color=color.blue, title="Long Term RCI", linewidth=2)

// Reference lines
hline(80, "Overbought", color=color.red, linestyle=hline.style_dashed)
hline(20, "Strong Buy Zone", color=color.red, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)
hline(-20, "Strong Sell Zone", color=color.blue, linestyle=hline.style_dotted)
hline(-80, "Oversold", color=color.blue, linestyle=hline.style_dashed)

// Background colors for cross signals
bgcolor(crossShortMidUp ? color.new(color.lime, 85) : 
         crossShortMidDown ? color.new(color.red, 85) : 
         crossShortLongUp ? color.new(color.aqua, 85) : 
         crossShortLongDown ? color.new(color.orange, 85) : 
         crossMidLongUp ? color.new(color.purple, 85) : 
         crossMidLongDown ? color.new(color.yellow, 85) : na,
         title="Cross Signals")

// Plot cross signals as shapes
plotshape(crossShortMidUp, title="Short-Mid Up", location=location.bottom, 
          style=shape.triangleup, size=size.small, color=color.lime)
plotshape(crossShortMidDown, title="Short-Mid Down", location=location.top, 
          style=shape.triangledown, size=size.small, color=color.red)

// Table for current values (optional)
if barstate.islast
    var table infoTable = table.new(position.top_right, 2, 4, bgcolor=color.white, border_width=1)
    table.cell(infoTable, 0, 0, "Period", text_color=color.black)
    table.cell(infoTable, 1, 0, "RCI Value", text_color=color.black)
    table.cell(infoTable, 0, 1, "Short (" + str.tostring(itvs) + ")", text_color=color.red)
    table.cell(infoTable, 1, 1, str.tostring(rciShort, "#.##"), text_color=color.red)
    table.cell(infoTable, 0, 2, "Mid (" + str.tostring(itvm) + ")", text_color=color.green)
    table.cell(infoTable, 1, 2, str.tostring(rciMid, "#.##"), text_color=color.green)
    table.cell(infoTable, 0, 3, "Long (" + str.tostring(itvl) + ")", text_color=color.blue)
    table.cell(infoTable, 1, 3, str.tostring(rciLong, "#.##"), text_color=color.blue)

 

※2025/9 表示修正しました。
不具合あればコメントなどでお知らせください。

注意点として、RCI系のインジケーターは読み込みに時間がかることが多いです。(処理がたくさん)

 

インジケーターが映らなくなったら、再読み込みか、表示非表示ボタンを押すと改善されることがあります。

 

コメント

タイトルとURLをコピーしました