OPEN-SOURCE SCRIPT
takeshi Rule Disqualification

//version=5
indicator("猛の掟・初動スクリーナー(作り直し版:8項目+即除外+押し目待ち最適化)", overlay=true, max_labels_count=50)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Inputs
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
showPanel = input.bool(true, "コメント表示")
panelPos = input.string("右上", "コメント位置", options=["右上","左上","右下","左下"])
lastBarOnly = input.bool(true, "最後の足だけ更新(推奨)")
// EMA
lenEma1 = input.int(5, "EMA 5", minval=1)
lenEma2 = input.int(13, "EMA 13", minval=1)
lenEma3 = input.int(26, "EMA 26", minval=1)
// MACD
macdFast = input.int(12, "MACD fast", minval=1)
macdSlow = input.int(26, "MACD slow", minval=1)
macdSig = input.int(9, "MACD signal", minval=1)
// Volume
volMaLen = input.int(5, "出来高平均(N日)", minval=1)
volMinMul = input.float(1.3, "出来高倍率Min", step=0.1)
volMaxMul = input.float(2.0, "出来高倍率Max", step=0.1)
volFinalMul = input.float(1.5, "最終三点:出来高倍率(>=)", step=0.1)
// Candle
wickBodyMult = input.float(1.8, "下ヒゲ判定:下ヒゲ/実体 >=", step=0.1)
upperToLower = input.float(0.6, "ピンバー:上ヒゲ<=下ヒゲ×", step=0.1)
atrLen = input.int(14, "ATR長", minval=1)
bigBodyATR = input.float(1.2, "大陽線判定:実体 >= ATR×", step=0.1)
// Breakout / Pullback
resLookback = input.int(20, "レジスタンス:過去N日高値", minval=5)
pullMinPct = input.float(5.0, "押し目Min(%)", step=0.5)
pullMaxPct = input.float(15.0, "押し目Max(%)", step=0.5)
retestAllowPct = input.float(1.0, "ブレイク価格の許容下抜け(%)", step=0.1)
stateExpireBars = input.int(30, "ブレイク状態の期限(本数)", minval=5)
// “二度と戻らない銘柄” 即解除(押し目待ち中のゴミ滞留防止)
cutOnBreakFail = input.bool(true, "押し目待ち中:レジ割れで即解除")
cutOnBelow26 = input.bool(true, "押し目待ち中:26EMA割れで即解除")
cutOnEma5Down = input.bool(true, "押し目待ち中:5EMA下向きで即解除")
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Series
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ema5 = ta.ema(close, lenEma1)
ema13 = ta.ema(close, lenEma2)
ema26 = ta.ema(close, lenEma3)
[macdLine, macdSignal, macdHist] = ta.macd(close, macdFast, macdSlow, macdSig)
volAvg = ta.sma(volume, volMaLen)
volMul = volAvg == 0 ? na : (volume / volAvg)
atr = ta.atr(atrLen)
// Candle parts
body = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 1-3: トレンド(掟A)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ema5Up = ema5 > ema5[1]
ema13Up = ema13 > ema13[1]
ema26Up = ema26 > ema26[1]
chk1_allEmaUp = ema5Up and ema13Up and ema26Up
chk2_golden = (ema5 > ema13) and (ema13 > ema26)
chk3_above26_2days = (close > ema26) and (close[1] > ema26[1])
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 4: MACD(掟B:ゼロライン上GC)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
chk4_macdZeroGC = ta.crossover(macdLine, macdSignal) and (macdLine > 0) and (macdSignal > 0)
// 参考:ヒストグラム縮小→上向き(表示だけ)
histShrinkToUp = (macdHist > macdHist[1]) and (macdHist[1] < macdHist[2])
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 5: 出来高(掟C)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
chk5_volOK = not na(volMul) and (volMul >= volMinMul) and (volMul <= volMaxMul)
volStrongOK = not na(volMul) and (volMul >= volFinalMul) // 最終三点
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 6: ローソク(掟D:ピンバー/包み/大陽線)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ピンバー(下ヒゲが実体より長く、上ヒゲが短め、陽線寄り)
longLowerWick = (body > 0) and ((lowerWick / body) >= wickBodyMult) and (upperWick <= lowerWick * upperToLower) and (close >= open)
// 陽線包み足
bullEngulf = (close[1] < open[1]) and (close > open) and (open <= close[1]) and (close >= open[1])
// 大陽線(EMA13を跨ぐ/上に抜け、実体がATR基準)
bigBull = (close > open) and (body >= atr * bigBodyATR) and (open < ema13) and (close > ema5)
chk6_candleOK = longLowerWick or bullEngulf or bigBull
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 7-8: ブレイク後押し目(掟E)
// chk7 = 押し目率(-5〜15%)
// chk8 = ブレイク後&レジスタンス維持(リテストOK)
// ※chk7とchk8を独立させ、二重判定を排除
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
res = ta.highest(high, resLookback)[1]
breakout = ta.crossover(close, res)
// ブレイク状態
var bool inBreak = false
var float breakPrice = na
var int breakBar = na
var float postBreakHigh = na
if breakout
inBreak := true
breakPrice := res
breakBar := bar_index
postBreakHigh := high
if inBreak
postBreakHigh := na(postBreakHigh) ? high : math.max(postBreakHigh, high)
// 押し目率(ブレイク後高値からの下落率)
pullPct = (inBreak and not na(postBreakHigh) and postBreakHigh != 0) ? (postBreakHigh - close) / postBreakHigh * 100.0 : na
chk7_pullOK = not na(pullPct) and (pullPct >= pullMinPct) and (pullPct <= pullMaxPct)
// レジ維持(ブレイク価格を許容範囲内で保持)
retestOK = inBreak and not na(breakPrice) and (close >= breakPrice * (1 - retestAllowPct/100.0))
chk8_breakoutRetestOK = retestOK
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 押し目待ち中:即解除(“二度と戻らない銘柄”を切る)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
breakFail = inBreak and not na(breakPrice) and close < breakPrice * (1 - retestAllowPct/100.0)
below26 = inBreak and close < ema26
ema5Down = inBreak and ema5 <= ema5[1]
shouldCut =
(cutOnBreakFail and breakFail) or
(cutOnBelow26 and below26) or
(cutOnEma5Down and ema5Down)
// 期限切れ or 即解除
if inBreak and not na(breakBar) and (bar_index - breakBar > stateExpireBars)
inBreak := false
breakPrice := na
breakBar := na
postBreakHigh := na
if shouldCut
inBreak := false
breakPrice := na
breakBar := na
postBreakHigh := na
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 8項目チェック(1つでも欠けたら見送り)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
chk1 = chk1_allEmaUp
chk2 = chk2_golden
chk3 = chk3_above26_2days
chk4 = chk4_macdZeroGC
chk5 = chk5_volOK
chk6 = chk6_candleOK
chk7 = chk7_pullOK
chk8 = chk8_breakoutRetestOK
all8 = chk1 and chk2 and chk3 and chk4 and chk5 and chk6 and chk7 and chk8
// 最終三点(ヒゲ×出来高×MACD)
final3 = longLowerWick and volStrongOK and chk4_macdZeroGC
judge = (all8 and final3) ? "判定:買い" : "判定:見送り"
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// コメント文字列
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
fMark(x) => x ? "達成" : "未達"
cutReason =
shouldCut ? (
(cutOnBreakFail and breakFail) ? "即解除:レジ割れ" :
(cutOnBelow26 and below26) ? "即解除:26EMA割れ" :
(cutOnEma5Down and ema5Down) ? "即解除:5EMA下向き" :
"即解除"
) :
(inBreak ? "押し目待ち:継続" : "押し目待ち:未突入/解除")
txt =
"【8項目チェック】\n" +
"1 EMA全上向き: " + fMark(chk1) + "\n" +
"2 黄金隊列: " + fMark(chk2) + "\n" +
"3 26EMA上2日: " + fMark(chk3) + "\n" +
"4 MACDゼロ上GC: " + fMark(chk4) + "\n" +
"5 出来高" + str.tostring(volMinMul) + "-" + str.tostring(volMaxMul) + ": " + fMark(chk5) + "\n" +
"6 ローソク条件: " + fMark(chk6) + "\n" +
"7 押し目-" + str.tostring(pullMinPct) + "〜" + str.tostring(pullMaxPct) + "%: " + fMark(chk7) + "\n" +
"8 ブレイク後リテスト: " + fMark(chk8) + "\n\n" +
"最終三点(ヒゲ×出来高×MACD): " + (final3 ? "成立" : "未成立") + "\n" +
judge + "\n\n" +
"状態: " + cutReason + "\n" +
"(参考)出来高倍率=" + (na(volMul) ? "na" : str.tostring(volMul, "#.00")) +
" / 押し目率=" + (na(pullPct) ? "na" : str.tostring(pullPct, "#.0")) + "%" +
" / hist転換=" + (histShrinkToUp ? "YES" : "NO")
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Table(位置切替:入力変更時に作り直し)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pos =
panelPos == "右上" ? position.top_right :
panelPos == "左上" ? position.top_left :
panelPos == "右下" ? position.bottom_right :
position.bottom_left
var string prevPos = na
var table t = na
if barstate.isfirst or prevPos != panelPos or na(t)
t := table.new(pos, 1, 1)
prevPos := panelPos
drawNow = showPanel and (lastBarOnly ? barstate.islast : true)
bg = (all8 and final3) ? color.new(color.lime, 80) : color.new(color.gray, 15)
fg = color.white
if drawNow
table.cell(t, 0, 0, txt, text_color=fg, bgcolor=bg, text_size=size.small)
else
table.cell(t, 0, 0, "", text_color=fg, bgcolor=color.new(color.black, 100))
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 視覚補助
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
plot(ema5, color=color.new(color.yellow, 0), title="EMA5")
plot(ema13, color=color.new(color.orange, 0), title="EMA13")
plot(ema26, color=color.new(color.red, 0), title="EMA26")
// ブレイク価格(参考)
plot(inBreak ? breakPrice : na, title="BreakPrice", color=color.new(color.aqua, 0), style=plot.style_linebr, linewidth=1)
// BUYサイン
plotshape(all8 and final3, title="BUY", style=shape.triangleup, location=location.belowbar,
color=color.new(color.lime, 0), size=size.tiny, text="BUY")
indicator("猛の掟・初動スクリーナー(作り直し版:8項目+即除外+押し目待ち最適化)", overlay=true, max_labels_count=50)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Inputs
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
showPanel = input.bool(true, "コメント表示")
panelPos = input.string("右上", "コメント位置", options=["右上","左上","右下","左下"])
lastBarOnly = input.bool(true, "最後の足だけ更新(推奨)")
// EMA
lenEma1 = input.int(5, "EMA 5", minval=1)
lenEma2 = input.int(13, "EMA 13", minval=1)
lenEma3 = input.int(26, "EMA 26", minval=1)
// MACD
macdFast = input.int(12, "MACD fast", minval=1)
macdSlow = input.int(26, "MACD slow", minval=1)
macdSig = input.int(9, "MACD signal", minval=1)
// Volume
volMaLen = input.int(5, "出来高平均(N日)", minval=1)
volMinMul = input.float(1.3, "出来高倍率Min", step=0.1)
volMaxMul = input.float(2.0, "出来高倍率Max", step=0.1)
volFinalMul = input.float(1.5, "最終三点:出来高倍率(>=)", step=0.1)
// Candle
wickBodyMult = input.float(1.8, "下ヒゲ判定:下ヒゲ/実体 >=", step=0.1)
upperToLower = input.float(0.6, "ピンバー:上ヒゲ<=下ヒゲ×", step=0.1)
atrLen = input.int(14, "ATR長", minval=1)
bigBodyATR = input.float(1.2, "大陽線判定:実体 >= ATR×", step=0.1)
// Breakout / Pullback
resLookback = input.int(20, "レジスタンス:過去N日高値", minval=5)
pullMinPct = input.float(5.0, "押し目Min(%)", step=0.5)
pullMaxPct = input.float(15.0, "押し目Max(%)", step=0.5)
retestAllowPct = input.float(1.0, "ブレイク価格の許容下抜け(%)", step=0.1)
stateExpireBars = input.int(30, "ブレイク状態の期限(本数)", minval=5)
// “二度と戻らない銘柄” 即解除(押し目待ち中のゴミ滞留防止)
cutOnBreakFail = input.bool(true, "押し目待ち中:レジ割れで即解除")
cutOnBelow26 = input.bool(true, "押し目待ち中:26EMA割れで即解除")
cutOnEma5Down = input.bool(true, "押し目待ち中:5EMA下向きで即解除")
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Series
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ema5 = ta.ema(close, lenEma1)
ema13 = ta.ema(close, lenEma2)
ema26 = ta.ema(close, lenEma3)
[macdLine, macdSignal, macdHist] = ta.macd(close, macdFast, macdSlow, macdSig)
volAvg = ta.sma(volume, volMaLen)
volMul = volAvg == 0 ? na : (volume / volAvg)
atr = ta.atr(atrLen)
// Candle parts
body = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 1-3: トレンド(掟A)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ema5Up = ema5 > ema5[1]
ema13Up = ema13 > ema13[1]
ema26Up = ema26 > ema26[1]
chk1_allEmaUp = ema5Up and ema13Up and ema26Up
chk2_golden = (ema5 > ema13) and (ema13 > ema26)
chk3_above26_2days = (close > ema26) and (close[1] > ema26[1])
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 4: MACD(掟B:ゼロライン上GC)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
chk4_macdZeroGC = ta.crossover(macdLine, macdSignal) and (macdLine > 0) and (macdSignal > 0)
// 参考:ヒストグラム縮小→上向き(表示だけ)
histShrinkToUp = (macdHist > macdHist[1]) and (macdHist[1] < macdHist[2])
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 5: 出来高(掟C)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
chk5_volOK = not na(volMul) and (volMul >= volMinMul) and (volMul <= volMaxMul)
volStrongOK = not na(volMul) and (volMul >= volFinalMul) // 最終三点
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 6: ローソク(掟D:ピンバー/包み/大陽線)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ピンバー(下ヒゲが実体より長く、上ヒゲが短め、陽線寄り)
longLowerWick = (body > 0) and ((lowerWick / body) >= wickBodyMult) and (upperWick <= lowerWick * upperToLower) and (close >= open)
// 陽線包み足
bullEngulf = (close[1] < open[1]) and (close > open) and (open <= close[1]) and (close >= open[1])
// 大陽線(EMA13を跨ぐ/上に抜け、実体がATR基準)
bigBull = (close > open) and (body >= atr * bigBodyATR) and (open < ema13) and (close > ema5)
chk6_candleOK = longLowerWick or bullEngulf or bigBull
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 7-8: ブレイク後押し目(掟E)
// chk7 = 押し目率(-5〜15%)
// chk8 = ブレイク後&レジスタンス維持(リテストOK)
// ※chk7とchk8を独立させ、二重判定を排除
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
res = ta.highest(high, resLookback)[1]
breakout = ta.crossover(close, res)
// ブレイク状態
var bool inBreak = false
var float breakPrice = na
var int breakBar = na
var float postBreakHigh = na
if breakout
inBreak := true
breakPrice := res
breakBar := bar_index
postBreakHigh := high
if inBreak
postBreakHigh := na(postBreakHigh) ? high : math.max(postBreakHigh, high)
// 押し目率(ブレイク後高値からの下落率)
pullPct = (inBreak and not na(postBreakHigh) and postBreakHigh != 0) ? (postBreakHigh - close) / postBreakHigh * 100.0 : na
chk7_pullOK = not na(pullPct) and (pullPct >= pullMinPct) and (pullPct <= pullMaxPct)
// レジ維持(ブレイク価格を許容範囲内で保持)
retestOK = inBreak and not na(breakPrice) and (close >= breakPrice * (1 - retestAllowPct/100.0))
chk8_breakoutRetestOK = retestOK
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 押し目待ち中:即解除(“二度と戻らない銘柄”を切る)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
breakFail = inBreak and not na(breakPrice) and close < breakPrice * (1 - retestAllowPct/100.0)
below26 = inBreak and close < ema26
ema5Down = inBreak and ema5 <= ema5[1]
shouldCut =
(cutOnBreakFail and breakFail) or
(cutOnBelow26 and below26) or
(cutOnEma5Down and ema5Down)
// 期限切れ or 即解除
if inBreak and not na(breakBar) and (bar_index - breakBar > stateExpireBars)
inBreak := false
breakPrice := na
breakBar := na
postBreakHigh := na
if shouldCut
inBreak := false
breakPrice := na
breakBar := na
postBreakHigh := na
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 8項目チェック(1つでも欠けたら見送り)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
chk1 = chk1_allEmaUp
chk2 = chk2_golden
chk3 = chk3_above26_2days
chk4 = chk4_macdZeroGC
chk5 = chk5_volOK
chk6 = chk6_candleOK
chk7 = chk7_pullOK
chk8 = chk8_breakoutRetestOK
all8 = chk1 and chk2 and chk3 and chk4 and chk5 and chk6 and chk7 and chk8
// 最終三点(ヒゲ×出来高×MACD)
final3 = longLowerWick and volStrongOK and chk4_macdZeroGC
judge = (all8 and final3) ? "判定:買い" : "判定:見送り"
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// コメント文字列
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
fMark(x) => x ? "達成" : "未達"
cutReason =
shouldCut ? (
(cutOnBreakFail and breakFail) ? "即解除:レジ割れ" :
(cutOnBelow26 and below26) ? "即解除:26EMA割れ" :
(cutOnEma5Down and ema5Down) ? "即解除:5EMA下向き" :
"即解除"
) :
(inBreak ? "押し目待ち:継続" : "押し目待ち:未突入/解除")
txt =
"【8項目チェック】\n" +
"1 EMA全上向き: " + fMark(chk1) + "\n" +
"2 黄金隊列: " + fMark(chk2) + "\n" +
"3 26EMA上2日: " + fMark(chk3) + "\n" +
"4 MACDゼロ上GC: " + fMark(chk4) + "\n" +
"5 出来高" + str.tostring(volMinMul) + "-" + str.tostring(volMaxMul) + ": " + fMark(chk5) + "\n" +
"6 ローソク条件: " + fMark(chk6) + "\n" +
"7 押し目-" + str.tostring(pullMinPct) + "〜" + str.tostring(pullMaxPct) + "%: " + fMark(chk7) + "\n" +
"8 ブレイク後リテスト: " + fMark(chk8) + "\n\n" +
"最終三点(ヒゲ×出来高×MACD): " + (final3 ? "成立" : "未成立") + "\n" +
judge + "\n\n" +
"状態: " + cutReason + "\n" +
"(参考)出来高倍率=" + (na(volMul) ? "na" : str.tostring(volMul, "#.00")) +
" / 押し目率=" + (na(pullPct) ? "na" : str.tostring(pullPct, "#.0")) + "%" +
" / hist転換=" + (histShrinkToUp ? "YES" : "NO")
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// Table(位置切替:入力変更時に作り直し)
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
pos =
panelPos == "右上" ? position.top_right :
panelPos == "左上" ? position.top_left :
panelPos == "右下" ? position.bottom_right :
position.bottom_left
var string prevPos = na
var table t = na
if barstate.isfirst or prevPos != panelPos or na(t)
t := table.new(pos, 1, 1)
prevPos := panelPos
drawNow = showPanel and (lastBarOnly ? barstate.islast : true)
bg = (all8 and final3) ? color.new(color.lime, 80) : color.new(color.gray, 15)
fg = color.white
if drawNow
table.cell(t, 0, 0, txt, text_color=fg, bgcolor=bg, text_size=size.small)
else
table.cell(t, 0, 0, "", text_color=fg, bgcolor=color.new(color.black, 100))
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 視覚補助
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
plot(ema5, color=color.new(color.yellow, 0), title="EMA5")
plot(ema13, color=color.new(color.orange, 0), title="EMA13")
plot(ema26, color=color.new(color.red, 0), title="EMA26")
// ブレイク価格(参考)
plot(inBreak ? breakPrice : na, title="BreakPrice", color=color.new(color.aqua, 0), style=plot.style_linebr, linewidth=1)
// BUYサイン
plotshape(all8 and final3, title="BUY", style=shape.triangleup, location=location.belowbar,
color=color.new(color.lime, 0), size=size.tiny, text="BUY")
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.
Script de código abierto
Fiel al espíritu de TradingView, el creador de este script lo ha convertido en código abierto, para que los traders puedan revisar y verificar su funcionalidad. ¡Enhorabuena al autor! Aunque puede utilizarlo de forma gratuita, recuerde que la republicación del código está sujeta a nuestras Normas internas.
Exención de responsabilidad
La información y las publicaciones no constituyen, ni deben considerarse como asesoramiento o recomendaciones financieras, de inversión, de trading o de otro tipo proporcionadas o respaldadas por TradingView. Más información en Condiciones de uso.