This is an RSI equipped with a feature that allows you to adjust when to start real-time drawing, anywhere from 0 seconds to 5 minutes before the candle closes. It also includes other useful features.
[RSI]
The RSI (Relative Strength Index) calculates the balance between the "average gain" and "average loss" over a specified period, quantifying the relative bullish or bearish strength of the current market as a percentage from 0 to 100. Rather than the absolute price value, it measures the "speed and bias of price movements (momentum)."
Source: TradingView
[NOTICE & LICENSE]
・For educational and informational purposes only; does not constitute investment advice. We assume no liability for any economic loss arising from the use of this tool.
・Tested on Pine Script v6. Provided "As-Is" with no guarantee of updates in response to future TradingView specification changes. We do not provide individual installation support or accept modification requests.
・Governed by the MIT License.
// SPDX-FileCopyrightText: 2026 NK-report https://www.nk-report.com/
// SPDX-License-Identifier: MIT
//
// Disclaimer: This script is for educational purposes only and does not constitute investment advice.
//@version=6
indicator("NK-Fixed RSI", shorttitle="NK-Fixed RSI", overlay=false)
// ==============================================================================
// 【01】 免責・ライセンス
// ==============================================================================
//
// Indicator is published for free: https://www.nk-report.com/p/tradingview-code.html
//
// Disclaimer: This script is for educational and informational purposes only and does not constitute investment advice.
//
// 1. This code has been tested with Pine Script v6 as of 2026.
// We do not provide individual support or modifications for any issues caused by future specification changes.
// 2. This script was independently created using an LLM, based on general calculation logic.
// It is distributed under the MIT License.
// ------------------------------------------------------------------------------
// MIT License
//
// Copyright 2026 NK-report https://www.nk-report.com/
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
// of the Software, and to permit persons to whom the Software is furnished to do
// so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// ==============================================================================
// 【02】 UI設定と言語
// ==============================================================================
// 1. 言語辞書の定義(テキストの定数化)
const string GRP_FIXED = "Fixed Settings"
const string LBL_SEC = "Real-time Draw Start (X seconds before bar closes)"
const string TT_SEC = "Adjust between 0 and 300 seconds (5 mins). Hides drawings on the current bar until the specified time (e.g., 10 secs before close) is reached.\nEntering 0 disables this feature and draws in real-time constantly."
const string GRP_RSI = "RSI Settings"
const string LBL_SH_RSI = "RSI "
const string LBL_LEN = "Length"
const string LBL_SRC = "Source"
const string LBL_SH_MA1 = "Smoothing 1"
const string LBL_S1_TYPE = "Type"
const string LBL_S1_LEN = "Length"
const string LBL_SH_MA2 = "Smoothing 2"
const string LBL_S2_TYPE = "Type"
const string LBL_S2_LEN = "Length"
// 2. UI(ユーザー入力画面)の構築 & 3. トップダウン処理への適合
i_sec = input.int(0, title=LBL_SEC, minval=0, maxval=300, group=GRP_FIXED, tooltip=TT_SEC)
// RSI設定
i_show_rsi = input.bool(true, title=LBL_SH_RSI, group=GRP_RSI, inline="RSI0")
i_len = input.int(14, title=LBL_LEN, minval=1, group=GRP_RSI, inline="RSI0")
i_src = input.source(close, title=LBL_SRC, group=GRP_RSI, inline="RSI0")
// 平滑化1の設定
i_show_ma1 = input.bool(false, title=LBL_SH_MA1, group=GRP_RSI, inline="RSI1")
i_ma1_type = input.string("SMA", title=LBL_S1_TYPE, options=["SMA", "EMA", "WMA"], group=GRP_RSI, inline="RSI1")
i_ma1_len = input.int(20, title=LBL_S1_LEN, minval=1, group=GRP_RSI, inline="RSI1")
// 平滑化2の設定
i_show_ma2 = input.bool(false, title=LBL_SH_MA2, group=GRP_RSI, inline="RSI2")
i_ma2_type = input.string("SMA", title=LBL_S2_TYPE, options=["SMA", "EMA", "WMA"], group=GRP_RSI, inline="RSI2")
i_ma2_len = input.int(50, title=LBL_S2_LEN, minval=1, group=GRP_RSI, inline="RSI2")
// ==============================================================================
// 【03】 全コード共通仕様(タイムゾーン・時間インフラ処理)
// ==============================================================================
const int MS_PER_SEC = 1000
// ==============================================================================
// 【04】 各カテゴリ共通仕様 (NK-Fixed Core Logic)
// ==============================================================================
bool is_draw_ready = true
if barstate.isrealtime and i_sec > 0
if not na(time_close)
int time_left_ms = time_close - timenow
int threshold_ms = i_sec * MS_PER_SEC
if time_left_ms > threshold_ms
is_draw_ready := false
// ==============================================================================
// 【05】 このコード固有の計算仕様 (Specific Indicator Logic)
// ==============================================================================
// 1. 純正RSIの計算
float raw_rsi = ta.rsi(i_src, i_len)
// 2. 平滑化処理の共通関数
f_calc_smooth(type_str, src_val, len_val) =>
float res = na
switch type_str
"SMA" => res := ta.sma(src_val, len_val)
"EMA" => res := ta.ema(src_val, len_val)
"WMA" => res := ta.wma(src_val, len_val)
res
// 平滑化ラインの計算
float raw_ma1 = f_calc_smooth(i_ma1_type, raw_rsi, i_ma1_len)
float raw_ma2 = f_calc_smooth(i_ma2_type, raw_rsi, i_ma2_len)
// 3. データ引き渡し
float final_rsi = (is_draw_ready and i_show_rsi) ? raw_rsi : na
float final_ma1 = (is_draw_ready and i_show_ma1) ? raw_ma1 : na
float final_ma2 = (is_draw_ready and i_show_ma2) ? raw_ma2 : na
// ==============================================================================
// 【06】 描画と出力 (Rendering & Outputs)
// ==============================================================================
// カラー定義(座標指定から抽出したHEXコード)
color col_rsi = #7E57C2 // 右から3、下から3
color col_lvl_70 = #787B86 // 右から5、上から1
color col_lvl_50 = color.black // 右から1、上から1
color col_lvl_30 = #787B86 // 右から5、上から1
// メインラインの描画
plot(final_rsi, title="NK-Fixed RSI", color=col_rsi, linewidth=1, style=plot.style_line)
plot(final_ma1, title="Smoothing 1", color=color.green, linewidth=1, style=plot.style_line)
plot(final_ma2, title="Smoothing 2", color=color.blue, linewidth=1, style=plot.style_line)
// 標準的な水平線の描画 (70, 50, 30)
h70 = hline(70, title="Level 1", color=col_lvl_70, linestyle=hline.style_dashed)
h50 = hline(50, title="Level 2", color=col_lvl_50, linestyle=hline.style_dashed)
h30 = hline(30, title="Level 3", color=col_lvl_30, linestyle=hline.style_dashed)
// 背景の塗りつぶし (不透明度10% = Pine Scriptの透明度90)
fill(h70, h30, title="Background", color=color.new(col_rsi, 90))
// ユーザー追加ライン (Extra Line) - デフォルトは非表示(スタイルタブで設定可能)
hline(50, title="Level 4", color=color.black, linestyle=hline.style_solid, display=display.none)
hline(50, title="Level 5", color=color.black, linestyle=hline.style_solid, display=display.none)
// 3. アラート(通知)条件の統合
bool overbought = ta.crossover(raw_rsi, 70) and is_draw_ready
bool oversold = ta.crossunder(raw_rsi, 30) and is_draw_ready
alertcondition(overbought, title="RSI Over 70", message="NK-Fixed RSI crossed over 70")
alertcondition(oversold, title="RSI Under 30", message="NK-Fixed RSI crossed under 30")
* After setting your preferred colors, please click "Save as default" in the settings tab.
* The indicator may not display correctly unless you follow the steps: Create New -> Indicator -> Paste.