AI-Swing/Long Batch 31. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
頻帶和通道
AI-Swing/Long Batch 41. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
AI-Swing/Long Batch 51. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
AI-INTRADAY-NIFTY50_21. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
AI-INTRADAY-NIFTY50_11. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
AI-INTRADAY-INDEX1. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
AI-Swing/Long Batch 11. Introduction
The Supertrend Plus strategy is an advanced technical indicator built on the widely popular Supertrend. It has been designed for traders who want to capture price action across multiple timeframes 1D TO 3M
Thiru TOI TrackerThe "Thiru TOI Tracker" is a Pine Script (version 6) indicator designed to mark specific trading session time windows (London, NY AM, and NY PM) on a chart with vertical and horizontal lines and labels.
It highlights key time-of-interest (TOI) periods for traders, such as London (2:45-3:15 AM and 3:45-4:15 AM), NY AM (9:45-10:15 AM and 10:45-11:15 AM), and NY PM (1:45-2:15 PM and 2:45-3:15 PM) in the New York timezone.
The script includes customizable visual settings (line style, width, colors, and label sizes), timeframe filters, and memory cleanup to optimize performance.
Turtle cloudsTurtle clouds is a clean trading indicator that combines the classic Turtle 20-bar breakout strategy with an EMA cloud filter. It only generates signals when price wicks into the EMA cloud and rejects, confirming the breakout direction. Arrows appear bar-aligned, highlighting high-probability long and short setups while filtering trades with trend confluence.
✅ How it works now:
Long signal only triggers when:
The price wicks into the EMA cloud (low <= EMA zone)
Closes above the EMA cloud
Breaks the previous 20-bar high
EMA trend confirms bullish (emaFast > emaSlow)
Short signal only triggers when:
The price wicks into the EMA cloud (high >= EMA zone)
Closes below the EMA cloud
Breaks the previous 20-bar low
EMA trend confirms bearish (emaFast < emaSlow)
Arrows are bar-aligned and will not float or repaint.
H1 Pivot Close Lines (Blue) — gaps_on v4H1 Pivot Close Lines (Blue) — gaps_on v4
Auto draw line for close price in pivot
Prism Ribbon LitePrism Ribbon Lite (Free)
What it is: A glossy, on-chart trend ribbon that makes market state obvious at a glance—perfect for streamers and screenshots.
What you see: Three EMAs with a smooth color-fill, a soft Bollinger channel glow, optional session VWAP, and a compact HUD (trend, RVOL, BB z-width).
When to use it: Any timeframe, any symbol, when you want a beautiful, low-noise read of expansion vs balance.
Why it’s free: It’s a visual compass—no signals, no backtesting—so you can learn market structure without distractions.
Pro tip: Use the ribbon color + VWAP alignment to decide if you should even be looking for longs/shorts before applying your actual system.
Adaptive Auto-Trend Channel with FibonacciAn advanced trend channel indicator that automatically detects the optimal channel period by analyzing how well price respects support and resistance levels. Unlike traditional regression channels that only use closing prices, this indicator analyzes highs, lows, and closes to create more accurate channels that actually capture price extremes.
Key Features :
Smart Auto-Detection - Tests multiple periods and selects the one where price most frequently touches the channel boundaries
Touch-Based Validation - Counts actual support/resistance touches to ensure channels are respected by price action
Adaptive Channel Width - Automatically adjusts upper and lower channel boundaries based on actual price extremes
Fibonacci Retracement Levels - Displays 5 standard Fibonacci ratios (23.6%, 38.2%, 50%, 61.8%, 78.6%) within the channel
Logarithmic Scale Support - Properly calculates channels and Fibonacci levels on log-scale charts
Dual Scoring System - Combines correlation strength (70%) with touch frequency (30%) for optimal period selection
SLefebvre The Trading DeskGUS Stats
Double Top Stats and lines
Open price
Gap info
Double Top bottom alert
Wahrscheinlichkeits-OszillatorWhat the Indicator Measures (Short Version)
The indicator measures, over several different time windows (eight different historyLength values), the probability that the current indicator value (here, a 14-period SMA of the closing price) is higher than past values in that window.
These probabilities (named prob1 … prob8) are expressed as percentages (0–100). The arithmetic mean of these eight percentages is avgLine. Additionally, there are smoothings (SMMA) and a baseline (SMA of avgLine), similar to Bollinger Bands.
Step-by-Step: How the Values Are Calculated
Source:
sma_val = ta.sma(close, 14) → This is the 14-period simple moving average of the closing price. This smoothed price is used as the "current comparison value" (instead of raw close) to reduce noise.
Historical Array & Counting (Function calculateProbability)
For each probX, the function maintains an array of the most recently stored current values (up to historicalLength entries).
For the current sma_val, it counts how many entries in the historical array are smaller than current.
Then this number is divided by the total number of historical entries → result is a decimal between 0 and 1.
Multiplying by 100 gives probX in percent.
Mathematical (Pseudo):
ini
Kopieren
Bearbeiten
prob = (1 / total) * sum_{i=0}^{total-1} [ current > historical ] * 100
→ This is equivalent to the empirical percentile/rank position of the current value within the history.
Eight Windows / Ensemble:
prob1 … prob8 are calculated with different historyLength values (400, 350, 175, 130, 83, 42, 21, 15).
Longer windows measure “long-term” trend strength; shorter windows measure short-term relative strength/momentum.
avgLine:
ini
Kopieren
Bearbeiten
avgLine = (prob1 + ... + prob8) / 8
→ Ensemble average of all eight percentiles. Useful for smoothing extreme values from individual windows.
Smoothing (SMMA):
SMMA on prob1 and SMMA1 on avgLine reduce short-term fluctuations and make signals more stable.
Baseline & “Bands”:
Finally, basis = ta.sma(avgLine, length) and dev = mult * ta.stdev(avgLine, length) are calculated — this is exactly the baseline + band logic of a Bollinger-style representation, applied to avgLine.
Why It’s Meaningful
Percentiles/ranks are robust to scale changes. Instead of absolute price differences, the indicator answers: “Is the current (smoothed) price higher than usual over the last N periods?”
The ensemble of multiple window lengths captures different market regimes: short windows react quickly to momentum, long windows provide context and reduce false signals.
Smoothing (SMA/SMMA) reduces noise, making signals less sensitive to intraday jitter.
Interpretation: When Is the Market “Overheated” / “Not Overheated”?
High values (e.g., avgLine ≈ 80–100 or individual probX > 90):
The current SMA is higher than almost all previous values in the considered window → strong bullish dominance. This can indicate a strong rally (momentum), but also potential overbought conditions, especially if:
Volume growth is slowing, or
avgLine has remained very high for several periods (overextension).
Low values (e.g., avgLine ≈ 0–20):
The current SMA is below most of the historical values → market is under pressure or potentially oversold. Short-term reversal/recovery opportunities are more likely, especially if multiple windows are simultaneously low.
Values around ~50: Neutral — the current value is typical, in the middle of its historical distribution.
Concrete Rule (Your Specification): Buy / Sell
Buy Signal: When all eight lines (prob1 … prob8) are below lowerLine (e.g., lowerLine = 20).
→ Meaning: In all short- to long-term windows, the current SMA is below most historical values → strong, broadly confirmed undervaluation signal (potential rebound or end of correction).
Recommendation: Strong convergent long signal, especially if accompanied by volume increase or support confirmation.
Sell Signal: When all eight lines are above upperLine (e.g., upperLine = 90).
→ Meaning: In all windows, the current SMA is higher than almost all historical values → broadly confirmed overbought / overheating.
Recommendation: Strong convergent short/take-profit signal, especially if coinciding with divergences, weakening volume, or resistance areas.
Important Limitations & Risks (Pay Attention!)
Trend vs. Mean-Reversion: In a strong trend, all windows can stay high for a long time (trend continuation risk). An “all below lower → buy” signal can continue to fall in a strong downtrend → use stop-loss and trend filter (higher TF).
Historical Length & Sampling: Chosen historyLength values determine sensitivity. Very long windows make the indicator slower; very short windows increase noise.
Statistical Stationarity: Percentile signals assume the distribution remains comparable — in crashes/news events, distributions can break.
Smoothing / Lag: SMMA reduces false breakouts but adds delay — trade entries may occur later.
Practical Examples (Concrete)
Example Buy: prob1..prob8 = , lowerLine = 20 → all below 20 → strong long signal.
Example Sell: prob1..prob8 = , upperLine = 90 → all above 90 → take-profit / short signal.
Conclusion (Short)
Your indicator is a percentile/ranking oscillator over multiple windows — a robust ensemble measuring the relative position of the (smoothed) price to its own history.
Overheated = high, broadly confirmed prob values (e.g., all > upperLine).
Oversold = low, broadly confirmed prob values (e.g., all < lowerLine) → your rule: all below lowerLine = buy, all above upperLine = sell.
Never trade blindly — always use risk management and confirmation (volume, higher timeframes, structure).
TradeIQ 3.29 • Smart Market Direction [TH]TradeIQ is designed to guide traders with predictive arrows that highlight potential market peaks and reversal zones. It also provides entry point guidance along with suggested TP/SL zones, giving you a practical framework for trade planning.
✅ Key Features:
• Predictive arrows for possible turning points
• Visual guide for entry opportunities
• Suggested TP/SL zones for trade management
• Works across Forex, Gold, Crypto, and Indices
• Fully customizable to match your trading style
Built from years of trading experience, TradeIQ gives traders a clear visual roadmap to support decision-making — not rigid signals.
👉 Perfect for traders who want guidance, structure, and clarity in the markets.
TradeIQ 3.29 • Smart Market Direction [EN]TradeIQ is designed to guide traders with predictive arrows that highlight potential market peaks and reversal zones. It also provides entry point guidance along with suggested TP/SL zones, giving you a practical framework for trade planning.
✅ Key Features:
• Predictive arrows for possible turning points
• Visual guide for entry opportunities
• Suggested TP/SL zones for trade management
• Works across Forex, Gold, Crypto, and Indices
• Fully customizable to match your trading style
Built from years of trading experience, TradeIQ gives traders a clear visual roadmap to support decision-making — not rigid signals.
👉 Perfect for traders who want guidance, structure, and clarity in the markets.
SMC + FVG + EMA + TrendlinesSMC + FVG + EMA + Trendlines legRange = math.abs(structureHigh - structureLow) // <-- เปลี่ยนชื่อจาก range -> legRange
if showCurrentStruct and not na(structureHigh) and not na(structureLow)
if na(curHighLine) == false
line.delete(curHighLine)
if na(curLowLine) == false
line.delete(curLowLine)
curHighLine := line.new(sHighIdx, structureHigh, bar_index, structureHigh, xloc.bar_index, color=currentStructColor, style=currentStructStyle, width=currentStructWidth)
curLowLine := line.new(sLowIdx, structureLow, bar_index, structureLow, xloc.bar_index, color=currentStructColor, style=currentStructStyle, width=currentStructWidth)
// ---------- Fibonacci on current leg ----------
if showFibo and legRange > 0
for k = 0 to array.size(fLevels) - 1
lvl = array.get(fLevels, k)
price = sDir == 1 ? structureHigh - (legRange - legRange * lvl)
: structureLow + (legRange - legRange * lvl)
l = line.new(sDir == 1 ? sHighIdx : sLowIdx, price, bar_index, price, xloc.bar_index, color=fiboColorMain, style=fiboStyle, width=fiboWidth)
label.new(bar_index + 10, price, str.tostring(lvl) + " (" + str.tostring(price) + ")", style=label.style_none, textcolor=fiboColorMain)
LUCEO ENVLUCEO ENV — 순차 분할매수 & 타임아웃·익절 관리 인디케이터
개요
LUCEO ENV는 중심선(SMA) 기준 하단 엔벨로프(L1/L2/L3)에 닿을 때 1·2·3차 순차 분할매수를 가정하고, 체결마다 평단을 재계산하여 **평단대비 목표익절(TP)**을 제시합니다. 각 단계 진입 후에는 **타임아웃(예: 20시간)**이 독립적으로 적용되어, 목표가 도달 전 일정 시간이 지나면 강제 종료(타임아웃 청산) 신호를 제공합니다.
동일 봉에서 L1·L2·L3가 동시에 충족되면 동시에 모두 체결될 수 있도록 설계되어 있습니다.
핵심 기능
엔벨로프 기반 3단계 분할매수: L1/L2/L3(%)에 도달 시 단계별 가중치(w1/w2/w3)만큼 매수 가정
동일 봉 다중 체결 허용: L1·L2·L3가 한 캔들에서 동시에 충족되어도 순차/동시 체결 처리
평단/익절 자동 갱신: 체결마다 평단가 및 익절 목표가(평단 × (1+TP%)) 재계산
단계별 타임아웃 종료: 1·2·3차 각각의 마지막 진입 시각으로부터 설정 시간 경과 시 “타임아웃 종료”
리셋 조건 단순화: 익절 또는 타임아웃 시에만 상태·평단·TP 전부 초기화 (중심선 돌파 리셋 없음)
알림(Alerts): 1차/2차/3차 매수, 익절, 타임아웃에 대한 즉시 알림 제공
---------------------------------------------------------------------------------------------------------------------
LUCEO ENV — Sequential Scale-In & Timeout / Take-Profit Management Indicator
Overview
LUCEO ENV assumes 1st/2nd/3rd staged entries when price touches the lower envelopes (L1/L2/L3) built from an SMA baseline. After each fill, it recalculates the weighted average entry and projects a take-profit relative to the average entry (TP). An independent timeout (e.g., 20 hours) starts after each stage is filled; if price fails to hit the target before the timer expires, a forced exit (timeout close) signal is generated.
If L1/L2/L3 are all touched within the same candle, the script allows all stages to fill in that bar.
Key Features
Envelope-based 3-stage scale-in: When price reaches L1/L2/L3 (%), assumes a buy with the corresponding weights (w1/w2/w3).
Same-bar multi-fills allowed: If L1–L3 are met within a single candle, sequential/simultaneous fills are handled.
Auto average/TP updates: After each fill, recalculates the average entry and updates the TP (Average × (1 + TP%)).
Stage-specific timeouts: From the last fill time of each stage; once elapsed, emits a “Timeout Exit”.
Simplified reset logic: Fully resets state/average/TP only on take-profit or timeout (no SMA-cross reset).
Alerts: Instant alerts for 1st/2nd/3rd buy, take-profit, and timeout.
PCV Setup (By Darren.L)The PCV Setup is designed for M15 scalping trading.
It combines Bollinger Bands (volatility), CCI (momentum), and RVI (trend confirmation) to filter false signals and improve accuracy.
Most-Crossed Channels (FAST • Top-K • Flexible Window)//@version=5
indicator("Most-Crossed Channels (FAST • Top-K • Flexible Window)", overlay=true, max_boxes_count=60, max_labels_count=60)
// ---------- Inputs ----------
windowMode = input.string(defval="Last N Bars", title="Scan Window", options= )
barsLookback = input.int(defval=800, title="If Last N Bars → how many?", minval=100, maxval=5000)
sess = input.session(defval="0830-1500", title="Session (exchange tz)")
sessionsBack = input.int(defval=1, title="If Last N Sessions → how many?", minval=1, maxval=10)
minutesLookback = input.int(defval=120, title="If Last X Minutes → how many?", minval=5, maxval=24*60)
sinceTs = input.time(defval=timestamp("2024-01-01T09:30:00"), title="Since time (chart tz)")
channelsK = input.int(defval=3, title="How many channels (Top-K)?", minval=1, maxval=10)
binTicks = input.int(defval=8, title="Bin width (ticks)", minval=1, maxval=200) // NQ tick=0.25; 8 ticks = 2.0 pts
minSepTicks = input.int(defval=12, title="Min separation between channels (ticks)", minval=1, maxval=500)
countSource = input.string(defval="Wick (H-L)", title="Count bars using", options= )
drawMode = input.string(defval="Use Candle", title="Draw channel as", options= )
anchorPart = input.string(defval="Body", title="If Use Candle → part", options= )
fixedTicks = input.int(defval=8, title="If Fixed Thickness → thickness (ticks)", minval=1, maxval=200)
extendBars = input.int(defval=400, title="Extend to right (bars)", minval=50, maxval=5000)
showLabels = input.bool(defval=true, title="Show labels with counts")
// ---------- Colors ----------
colFill = color.new(color.blue, 78)
colEdge = color.new(color.blue, 0)
colTxt = color.white
// ---------- Draw caches (never empty) ----------
var box g_boxes = array.new_box()
var label g_lbls = array.new_label()
// ---------- Helpers ----------
barsFromMinutes(mins, avgBarMs) =>
ms = mins * 60000.0
int(math.max(2, math.round(ms / nz(avgBarMs, 60000.0))))
// First (oldest) candle in whose selected part contains `level`
anchorIndexForPrice(level, useBody, scanNLocal) =>
idx = -1
for m = 1 to scanNLocal - 1
k = scanNLocal - m // oldest → newest
o = open
c = close
h = high
l = low
topZ = useBody ? math.max(o, c) : h
botZ = useBody ? math.min(o, c) : l
if level >= botZ and level <= topZ
idx := k
break
idx
// ---------- Window depth ----------
inSess = not na(time(timeframe.period, sess))
sessStartIdx = ta.valuewhen(inSess and not inSess , bar_index, 0)
sessStartIdxN = ta.valuewhen(inSess and not inSess , bar_index, sessionsBack - 1)
sinceStartIdx = ta.valuewhen(time >= sinceTs and time < sinceTs, bar_index, 0)
avgBarMs = ta.sma(time - time , 50)
depthRaw = switch windowMode
"Last N Bars" => barsLookback
"Today (session)" => bar_index - nz(sessStartIdx, bar_index)
"Last N Sessions" => bar_index - nz(sessStartIdxN, bar_index)
"Last X Minutes" => barsFromMinutes(minutesLookback, avgBarMs)
"Since time" => bar_index - nz(sinceStartIdx, bar_index)
avail = bar_index + 1
scanN = math.min(avail, math.max(2, depthRaw))
scanN := math.min(scanN, 2000) // performance cap
// ---------- Early guard ----------
if scanN < 2
na
else
// ---------- Build price histogram (O(N + B)) ----------
priceMin = 10e10
priceMax = -10e10
for j = 0 to scanN - 1
loB = math.min(open , close )
hiB = math.max(open , close )
lo = (countSource == "Body only") ? loB : low
hi = (countSource == "Body only") ? hiB : high
priceMin := math.min(priceMin, nz(lo, priceMin))
priceMax := math.max(priceMax, nz(hi, priceMax))
rng = priceMax - priceMin
tick = syminfo.mintick
binSize = tick * binTicks
if na(rng) or rng <= 0 or binSize <= 0
na
else
// Pre-allocate fixed-size arrays (never size 0)
MAX_BINS = 600
var float diff = array.new_float(MAX_BINS + 2, 0.0) // +2 so iH+1 is safe
var float counts = array.new_float(MAX_BINS + 1, 0.0)
var int blocked = array.new_int(MAX_BINS + 1, 0)
var int topIdx = array.new_int()
binsN = math.max(1, math.min(MAX_BINS, int(math.ceil(rng / binSize)) + 1))
// reset slices
for i = 0 to binsN + 1
array.set(diff, i, 0.0)
for i = 0 to binsN
array.set(counts, i, 0.0)
array.set(blocked, i, 0)
array.clear(topIdx)
// Range adds
for j = 0 to scanN - 1
loB = math.min(open , close )
hiB = math.max(open , close )
lo = (countSource == "Body only") ? loB : low
hi = (countSource == "Body only") ? hiB : high
iL = int(math.floor((lo - priceMin) / binSize))
iH = int(math.floor((hi - priceMin) / binSize))
iL := math.max(0, math.min(binsN - 1, iL))
iH := math.max(0, math.min(binsN - 1, iH))
array.set(diff, iL, array.get(diff, iL) + 1.0)
array.set(diff, iH + 1, array.get(diff, iH + 1) - 1.0)
// Prefix sum → counts
run = 0.0
for b = 0 to binsN - 1
run += array.get(diff, b)
array.set(counts, b, run)
// Top-K with spacing
sepBins = math.max(1, int(math.ceil(minSepTicks / binTicks)))
picks = math.min(channelsK, binsN)
if picks > 0
for _ = 0 to picks - 1
bestVal = -1e9
bestBin = -1
for b = 0 to binsN - 1
if array.get(blocked, b) == 0
v = array.get(counts, b)
if v > bestVal
bestVal := v
bestBin := b
if bestBin >= 0
array.push(topIdx, bestBin)
lB = math.max(0, bestBin - sepBins)
rB = math.min(binsN - 1, bestBin + sepBins)
for bb = lB to rB
array.set(blocked, bb, 1)
// Clear old drawings safely
while array.size(g_boxes) > 0
box.delete(array.pop(g_boxes))
while array.size(g_lbls) > 0
label.delete(array.pop(g_lbls))
// Draw Top-K channels
sz = array.size(topIdx)
if sz > 0
for t = 0 to sz - 1
b = array.get(topIdx, t)
level = priceMin + (b + 0.5) * binSize
useBody = (drawMode == "Use Candle")
anc = anchorIndexForPrice(level, useBody, scanN)
anc := anc == -1 ? scanN - 1 : anc
oA = open
cA = close
hA = high
lA = low
float topV = na
float botV = na
if drawMode == "Use Candle"
topV := (anchorPart == "Body") ? math.max(oA, cA) : hA
botV := (anchorPart == "Body") ? math.min(oA, cA) : lA
else
half = (fixedTicks * tick) * 0.5
topV := level + half
botV := level - half
left = bar_index - anc
right = bar_index + extendBars
bx = box.new(left, topV, right, botV, xloc=xloc.bar_index, bgcolor=colFill, border_color=colEdge, border_width=2)
array.push(g_boxes, bx)
if showLabels
txt = str.tostring(int(array.get(counts, b))) + " crosses"
lb = label.new(left, topV, txt, xloc=xloc.bar_index, style=label.style_label_down, textcolor=colTxt, color=colEdge)
array.push(g_lbls, lb)
Order Blocks & FVG (Kostya)the indicator is the attempt to visualize the trading opportunities - price magnets and potential reversal zones for intraday and swing trading.
Adaptive Open InterestThis indicator analyzes Bitcoin open interest to identify overbought and oversold conditions that historically precede major price moves. Unlike static levels, it automatically adapts to current market conditions by analyzing the last 320 bars (user adjustable).
How It Works
Adaptive Algorithm:
-Analyzes the last 320 bars of open interest data
-Combines percentile analysis (90th, 80th, 20th, 10th percentiles) with statistical analysis (standard deviations)
-Creates dynamic zones that adjust as market conditions change
Four Key Zones:
🔴 Extreme Overbought (Red) - Major crash risk territory
🟠 Overbought (Orange) - Correction risk territory
🔵 Oversold (Blue) - Opportunity territory
🟢 Extreme Oversold (Green) - Major opportunity territory
For Risk Management:
-When OI enters red zones → Consider reducing long positions, major crash risk
-When OI enters orange zones → Caution, correction likely incoming
For Opportunities:
-When OI enters blue zones → Look for long opportunities
-When OI enters green zones → Strong buying opportunity, major bounce potential
The Table Shows:
-Current status (which zone OI is in)
-Range position (where current OI sits as % of 320-bar range)
-320-bar high/low levels for context
Why It's Effective:
-Adaptive Nature: What's "high" OI in a bear market differs from bull market - the indicator knows the difference and adjusts automatically.
-Proven Approach: Combines multiple statistical methods for robust signals that work across different market cycles.
-Alert System: Optional alerts notify you when OI crosses critical thresholds, so you don't miss important signals.
-The indicator essentially tells you when the futures market is getting "too crowded" (danger) or "too empty" (opportunity) relative to recent history.