OPEN-SOURCE SCRIPT
RSI LE Helper SL & Targets (stable v5)

//version=5
indicator("RSI LE Helper SL & Targets (stable v5)", overlay=true)
// ---- Inputs ----
lenRSI = input.int(14, "RSI Length")
rsiBuyLvl = input.int(30, "RSI Cross Above Level")
atrMultSL = input.float(1.5, "ATR SL x", step=0.1)
pivotLeft = input.int(2, "Pivot Left")
pivotRight = input.int(2, "Pivot Right")
bufPct = input.float(0.006, "SL Buffer % (0.6%)", step=0.001)
showEMATrl = input.bool(true, "Show EMA-20 Trail")
// ---- Signal (example rule: RSI crosses up from oversold) ----
rsiVal = ta.rsi(close, lenRSI)
longSig = ta.crossover(rsiVal, rsiBuyLvl)
// ---- Persistent vars to hold last computed values (optional) ----
var float entry = na
var float sl = na
var float t1 = na
var float t2 = na
var float t3 = na
if longSig
// Entry = close of signal bar
entry := close
// --- SL candidates ---
float pivLow = ta.pivotlow(low, pivotLeft, pivotRight) // may be na on the signal bar
float sl_pivot = na(pivLow) ? na : (pivLow * (1 - bufPct))
float atrVal = ta.atr(14)
float sl_atr = close - atrMultSL * atrVal
// --- choose stricter (higher) SL with NA safety (if/else only) ---
if na(sl_pivot) and na(sl_atr)
sl := na
else if na(sl_pivot)
sl := sl_atr
else if na(sl_atr)
sl := sl_pivot
else
sl := math.max(sl_pivot, sl_atr)
// --- Targets (R multiples) ---
float rRisk = (na(entry) or na(sl)) ? na : (entry - sl)
if na(rRisk)
t1 := na
t2 := na
t3 := na
else
t1 := entry + 1.0 * rRisk
t2 := entry + 1.5 * rRisk
t3 := entry + 2.0 * rRisk
// --- Labels on the signal bar ---
if not na(entry)
label.new(bar_index, entry, "ENTRY", style=label.style_label_up, textcolor=color.white)
if not na(sl)
label.new(bar_index, sl, "SL", style=label.style_label_down, textcolor=color.white)
if not na(t1)
label.new(bar_index, t1, "T1 (1R)", style=label.style_label_up, textcolor=color.white)
if not na(t2)
label.new(bar_index, t2, "T2 (1.5R)", style=label.style_label_up, textcolor=color.white)
if not na(t3)
label.new(bar_index, t3, "T3 (2R)", style=label.style_label_up, textcolor=color.white)
// ---- Optional EMA-20 trail ----
ema20 = ta.ema(close, 20)
plot(showEMATrl ? ema20 : na, title="EMA-20", linewidth=1)
indicator("RSI LE Helper SL & Targets (stable v5)", overlay=true)
// ---- Inputs ----
lenRSI = input.int(14, "RSI Length")
rsiBuyLvl = input.int(30, "RSI Cross Above Level")
atrMultSL = input.float(1.5, "ATR SL x", step=0.1)
pivotLeft = input.int(2, "Pivot Left")
pivotRight = input.int(2, "Pivot Right")
bufPct = input.float(0.006, "SL Buffer % (0.6%)", step=0.001)
showEMATrl = input.bool(true, "Show EMA-20 Trail")
// ---- Signal (example rule: RSI crosses up from oversold) ----
rsiVal = ta.rsi(close, lenRSI)
longSig = ta.crossover(rsiVal, rsiBuyLvl)
// ---- Persistent vars to hold last computed values (optional) ----
var float entry = na
var float sl = na
var float t1 = na
var float t2 = na
var float t3 = na
if longSig
// Entry = close of signal bar
entry := close
// --- SL candidates ---
float pivLow = ta.pivotlow(low, pivotLeft, pivotRight) // may be na on the signal bar
float sl_pivot = na(pivLow) ? na : (pivLow * (1 - bufPct))
float atrVal = ta.atr(14)
float sl_atr = close - atrMultSL * atrVal
// --- choose stricter (higher) SL with NA safety (if/else only) ---
if na(sl_pivot) and na(sl_atr)
sl := na
else if na(sl_pivot)
sl := sl_atr
else if na(sl_atr)
sl := sl_pivot
else
sl := math.max(sl_pivot, sl_atr)
// --- Targets (R multiples) ---
float rRisk = (na(entry) or na(sl)) ? na : (entry - sl)
if na(rRisk)
t1 := na
t2 := na
t3 := na
else
t1 := entry + 1.0 * rRisk
t2 := entry + 1.5 * rRisk
t3 := entry + 2.0 * rRisk
// --- Labels on the signal bar ---
if not na(entry)
label.new(bar_index, entry, "ENTRY", style=label.style_label_up, textcolor=color.white)
if not na(sl)
label.new(bar_index, sl, "SL", style=label.style_label_down, textcolor=color.white)
if not na(t1)
label.new(bar_index, t1, "T1 (1R)", style=label.style_label_up, textcolor=color.white)
if not na(t2)
label.new(bar_index, t2, "T2 (1.5R)", style=label.style_label_up, textcolor=color.white)
if not na(t3)
label.new(bar_index, t3, "T3 (2R)", style=label.style_label_up, textcolor=color.white)
// ---- Optional EMA-20 trail ----
ema20 = ta.ema(close, 20)
plot(showEMATrl ? ema20 : na, title="EMA-20", linewidth=1)
オープンソーススクリプト
TradingViewの精神に則り、この作者はスクリプトのソースコードを公開しているので、その内容を理解し検証することができます。作者に感謝です!無料でお使いいただけますが、このコードを投稿に再利用する際にはハウスルールに従うものとします。
免責事項
これらの情報および投稿は、TradingViewが提供または保証する金融、投資、取引、またはその他の種類のアドバイスや推奨を意図したものではなく、またそのようなものでもありません。詳しくは利用規約をご覧ください。
オープンソーススクリプト
TradingViewの精神に則り、この作者はスクリプトのソースコードを公開しているので、その内容を理解し検証することができます。作者に感謝です!無料でお使いいただけますが、このコードを投稿に再利用する際にはハウスルールに従うものとします。
免責事項
これらの情報および投稿は、TradingViewが提供または保証する金融、投資、取引、またはその他の種類のアドバイスや推奨を意図したものではなく、またそのようなものでもありません。詳しくは利用規約をご覧ください。