OPEN-SOURCE SCRIPT
Small Caps - Range + Breakout (dernier seulement)

//version=5
indicator("Small Caps - Range + Breakout (dernier seulement)", overlay=true)
// -------------------
// Paramètres
// -------------------
lookback = input.int(50, "Période max du range (jours)")
minConsol = input.int(20, "Consolidation minimale (jours)")
volLen = input.int(20, "Période moyenne volume")
volMult = input.float(1.5, "Volume minimum (x moyenne)")
useRSI = input.bool(true, "Filtrer avec RSI > 55 ?")
rsiLength = input.int(14, "RSI période")
// -------------------
// Détection du Range
// -------------------
rangeHigh = ta.highest(high[1], lookback)
rangeLow = ta.lowest(low[1], lookback)
// Vérifier consolidation minimale
consolHigh = ta.highest(high[1], minConsol)
consolLow = ta.lowest(low[1], minConsol)
consolOk = (consolHigh <= rangeHigh) and (consolLow >= rangeLow)
// -------------------
// Conditions breakout
// -------------------
volMa = ta.sma(volume, volLen)
volOk = volume > volMult * volMa
rsi = ta.rsi(close, rsiLength)
rsiOk = useRSI ? rsi > 55 : true
breakoutUp = close > rangeHigh and volOk and rsiOk and consolOk
breakoutDown = close < rangeLow and volOk and rsiOk and consolOk
// -------------------
// Rectangle unique
// -------------------
var box rangeBox = na
if barstate.islast
if not na(rangeBox)
box.delete(rangeBox)
// Couleur par défaut (range gris)
rectColor = color.new(color.gray, 85)
borderCol = color.new(color.gray, 0)
// Modifier couleur si cassure
if breakoutUp
rectColor := color.new(color.green, 85)
borderCol := color.new(color.green, 0)
if breakoutDown
rectColor := color.new(color.red, 85)
borderCol := color.new(color.red, 0)
// Créer rectangle du range courant sur une seule ligne
rangeBox := box.new(left=bar_index - lookback, top=rangeHigh, right=bar_index, bottom=rangeLow, border_color=borderCol, border_width=1, bgcolor=rectColor)
// -------------------
// Flèches breakout
// -------------------
plotshape(breakoutUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny)
plotshape(breakoutDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny)
indicator("Small Caps - Range + Breakout (dernier seulement)", overlay=true)
// -------------------
// Paramètres
// -------------------
lookback = input.int(50, "Période max du range (jours)")
minConsol = input.int(20, "Consolidation minimale (jours)")
volLen = input.int(20, "Période moyenne volume")
volMult = input.float(1.5, "Volume minimum (x moyenne)")
useRSI = input.bool(true, "Filtrer avec RSI > 55 ?")
rsiLength = input.int(14, "RSI période")
// -------------------
// Détection du Range
// -------------------
rangeHigh = ta.highest(high[1], lookback)
rangeLow = ta.lowest(low[1], lookback)
// Vérifier consolidation minimale
consolHigh = ta.highest(high[1], minConsol)
consolLow = ta.lowest(low[1], minConsol)
consolOk = (consolHigh <= rangeHigh) and (consolLow >= rangeLow)
// -------------------
// Conditions breakout
// -------------------
volMa = ta.sma(volume, volLen)
volOk = volume > volMult * volMa
rsi = ta.rsi(close, rsiLength)
rsiOk = useRSI ? rsi > 55 : true
breakoutUp = close > rangeHigh and volOk and rsiOk and consolOk
breakoutDown = close < rangeLow and volOk and rsiOk and consolOk
// -------------------
// Rectangle unique
// -------------------
var box rangeBox = na
if barstate.islast
if not na(rangeBox)
box.delete(rangeBox)
// Couleur par défaut (range gris)
rectColor = color.new(color.gray, 85)
borderCol = color.new(color.gray, 0)
// Modifier couleur si cassure
if breakoutUp
rectColor := color.new(color.green, 85)
borderCol := color.new(color.green, 0)
if breakoutDown
rectColor := color.new(color.red, 85)
borderCol := color.new(color.red, 0)
// Créer rectangle du range courant sur une seule ligne
rangeBox := box.new(left=bar_index - lookback, top=rangeHigh, right=bar_index, bottom=rangeLow, border_color=borderCol, border_width=1, bgcolor=rectColor)
// -------------------
// Flèches breakout
// -------------------
plotshape(breakoutUp, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny)
plotshape(breakoutDown, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny)
오픈 소스 스크립트
진정한 트레이딩뷰 정신에 따라 이 스크립트 작성자는 트레이더가 기능을 검토하고 검증할 수 있도록 오픈소스로 공개했습니다. 작성자에게 찬사를 보냅니다! 무료로 사용할 수 있지만 코드를 다시 게시할 경우 하우스 룰이 적용된다는 점을 기억하세요.
면책사항
이 정보와 게시물은 TradingView에서 제공하거나 보증하는 금융, 투자, 거래 또는 기타 유형의 조언이나 권고 사항을 의미하거나 구성하지 않습니다. 자세한 내용은 이용 약관을 참고하세요.
오픈 소스 스크립트
진정한 트레이딩뷰 정신에 따라 이 스크립트 작성자는 트레이더가 기능을 검토하고 검증할 수 있도록 오픈소스로 공개했습니다. 작성자에게 찬사를 보냅니다! 무료로 사용할 수 있지만 코드를 다시 게시할 경우 하우스 룰이 적용된다는 점을 기억하세요.
면책사항
이 정보와 게시물은 TradingView에서 제공하거나 보증하는 금융, 투자, 거래 또는 기타 유형의 조언이나 권고 사항을 의미하거나 구성하지 않습니다. 자세한 내용은 이용 약관을 참고하세요.