インジケーター

Pocket Pivot (Kacher/Morales) - Customsdasd//@version=6
indicator("Pocket Pivot (Kacher/Morales) - Custom", overlay=true)
// ─────────────────────────────────────
// SETTINGS
// ─────────────────────────────────────
smaLength = input.int(
10,
title="SMA Length",
minval=1
)
maxOffset = input.float(
4.0,
title="Max % Offset from SMA",
minval=0.1,
step=0.1
)
lookback = input.int(
10,
title="Lookback Period (Trading Days)",
minval=1
)
// ─────────────────────────────────────
// SMA
// ─────────────────────────────────────
smaValue = ta.sma(close, smaLength)
// ─────────────────────────────────────
// BUY / SELL VOLUME
// Approximation:
// Bullish candle = Buy Volume
// Bearish candle = Sell Volume
// ─────────────────────────────────────
buyVolume = close > open ? volume : 0.0
sellVolume = close < open ? volume : 0.0
// ─────────────────────────────────────
// HIGHEST SELL VOLUME
// Previous 10 candles only
// Current candle is NOT included
// ─────────────────────────────────────
highestSellVolume = ta.highest(
sellVolume ,
lookback
)
// ─────────────────────────────────────
// PRICE DISTANCE FROM SMA
// ─────────────────────────────────────
percentOffset = math.abs(
close - smaValue
) / smaValue * 100
// Price is close enough to SMA
priceNearSMA = percentOffset <= maxOffset
// ─────────────────────────────────────
// POCKET PIVOT CONDITION
// ─────────────────────────────────────
volumeCondition = buyVolume > highestSellVolume
pocketPivot = volumeCondition and priceNearSMA
// ─────────────────────────────────────
// PLOT SMA
// ─────────────────────────────────────
plot(
smaValue,
title="SMA",
color=color.teal,
linewidth=2
)
// ─────────────────────────────────────
// MARK POCKET PIVOT
// ─────────────────────────────────────
plotshape(
pocketPivot,
title="Pocket Pivot",
style=shape.labelup,
location=location.belowbar,
color=color.green,
text="PP",
textcolor=color.white,
size=size.small
)
// ─────────────────────────────────────
// ALERT
// ─────────────────────────────────────
alertcondition(
pocketPivot,
title="Pocket Pivot Detected",
message="Pocket Pivot detected on {{ticker}}"
)//@version=6
indicator("Pocket Pivot (Kacher/Morales) - Custom", overlay=true)
// ─────────────────────────────────────
// SETTINGS
// ─────────────────────────────────────
smaLength = input.int(
10,
title="SMA Length",
minval=1
)
maxOffset = input.float(
4.0,
title="Max % Offset from SMA",
minval=0.1,
step=0.1
)
lookback = input.int(
10,
title="Lookback Period (Trading Days)",
minval=1
)
// ─────────────────────────────────────
// SMA
// ─────────────────────────────────────
smaValue = ta.sma(close, smaLength)
// ─────────────────────────────────────
// BUY / SELL VOLUME
// Approximation:
// Bullish candle = Buy Volume
// Bearish candle = Sell Volume
// ─────────────────────────────────────
buyVolume = close > open ? volume : 0.0
sellVolume = close < open ? volume : 0.0
// ─────────────────────────────────────
// HIGHEST SELL VOLUME
// Previous 10 candles only
// Current candle is NOT included
// ─────────────────────────────────────
highestSellVolume = ta.highest(
sellVolume ,
lookback
)
// ─────────────────────────────────────
// PRICE DISTANCE FROM SMA
// ─────────────────────────────────────
percentOffset = math.abs(
close - smaValue
) / smaValue * 100
// Price is close enough to SMA
priceNearSMA = percentOffset <= maxOffset
// ─────────────────────────────────────
// POCKET PIVOT CONDITION
// ─────────────────────────────────────
volumeCondition = buyVolume > highestSellVolume
pocketPivot = volumeCondition and priceNearSMA
// ─────────────────────────────────────
// PLOT SMA
// ─────────────────────────────────────
plot(
smaValue,
title="SMA",
color=color.teal,
linewidth=2
)
// ─────────────────────────────────────
// MARK POCKET PIVOT
// ─────────────────────────────────────
plotshape(
pocketPivot,
title="Pocket Pivot",
style=shape.labelup,
location=location.belowbar,
color=color.green,
text="PP",
textcolor=color.white,
size=size.small
)
// ─────────────────────────────────────
// ALERT
// ─────────────────────────────────────
alertcondition(
pocketPivot,
title="Pocket Pivot Detected",
message="Pocket Pivot detected on {{ticker}}"
) インジケーター

インジケーター

Institutional Flow Signalswww.tradingview.com
Institutional Flow Signals is an advanced market analysis indicator developed to help traders understand the hidden relationship between institutional order flow, directional volume, trend structure, and market participation. Instead of relying on a single technical indicator or a simple volume histogram, it combines multiple market components into one unified analytical framework that continuously evaluates the balance between buyers and sellers. The objective is to simplify complex institutional activity into an easy-to-read visual format so traders can better understand who currently controls the market and whether that control is strengthening or weakening.
The indicator was created for traders who want more than traditional trend indicators. Standard indicators often react after the market has already moved, while Institutional Flow Signals is designed to continuously monitor the changing relationship between price movement, volatility, market pressure, directional volume, and trend transitions. By combining these elements into one adaptive system, the indicator helps identify the strength behind every move instead of simply showing whether price is moving up or down.
Institutional Flow Signals works by continuously measuring buying pressure and selling pressure as the market develops. Every completed candle contributes new information to the internal calculations. Strong bullish candles supported by increasing participation contribute to positive institutional flow, while aggressive bearish candles contribute to negative institutional flow. As this information accumulates, the indicator builds a live representation of market conviction rather than reacting only to short-term price fluctuations.
The indicator continuously evaluates whether buyers or sellers are currently dominating the market. During strong bullish conditions, positive flow expands while bearish participation weakens. During bearish environments the opposite occurs, allowing traders to quickly recognize which side currently has greater control over market direction. This continuous adaptation makes the indicator suitable for both trending and transitional market conditions.
A major component of the indicator is its trend recognition engine. Rather than relying solely on moving averages or crossover systems, the trend model evaluates multiple market conditions together before confirming a directional shift. This helps reduce unnecessary noise while allowing meaningful trend changes to become visible as they develop. When market conditions change, the indicator automatically adjusts its internal calculations to begin tracking the new directional phase without requiring manual intervention.
The trend boundary displayed on the price chart acts as a dynamic reference area that follows market structure instead of remaining fixed. During bullish environments the adaptive boundary follows below price, highlighting areas where buyers maintain control. During bearish conditions the boundary shifts above price, emphasizing seller dominance. The transparent trend fill between price and the boundary allows traders to visually identify the current market regime with a quick glance.
The lower Institutional Flow panel serves as the primary analytical engine. Positive histogram values represent increasing buying participation while negative values represent increasing selling participation. The size of each histogram bar reflects the intensity of institutional activity rather than simple candle direction. Strong institutional participation produces larger movements within the oscillator, while quiet market conditions naturally compress the readings. This creates an adaptive view of market pressure that continuously reflects changing participation levels.
An additional smoothing component helps traders observe the broader flow trend by reducing short-term fluctuations. This allows the underlying direction of institutional participation to remain visible even during temporary market pullbacks or consolidation periods.
Trend summary labels are generated whenever a completed market phase finishes. These labels summarize important information collected throughout that trend, including cumulative participation, total directional flow, and overall market pressure. Instead of examining every individual candle, traders receive a concise overview of what occurred during the completed market cycle.
The live information label continuously updates with the most recent market statistics. This provides an immediate view of current institutional flow, buying pressure, selling pressure, overall trend condition, and directional strength. Because the information updates on every completed candle, traders always have an accurate snapshot of current market conditions without manually calculating multiple indicators.
Institutional Flow Signals is designed to assist traders throughout the complete decision-making process rather than acting as a simple entry generator. A typical bullish setup begins when buying pressure gradually strengthens, the trend engine confirms bullish control, institutional flow shifts into positive territory, and the adaptive trend boundary supports price movement. As additional bullish participation enters the market, confidence in the prevailing trend increases. The same process applies in reverse for bearish conditions, where strengthening selling pressure, negative institutional flow, and confirmed trend weakness collectively support short-selling opportunities.
The indicator is equally useful for identifying weakening trends. When directional pressure begins fading, cumulative flow loses momentum, or institutional participation decreases, traders receive an early indication that the existing trend may be approaching exhaustion. This allows better management of open positions and helps reduce the tendency to remain in trades after institutional momentum has already begun to decline.
Because all calculations continuously adapt to changing volatility and market participation, Institutional Flow Signals performs across multiple asset classes including Forex, cryptocurrencies, stocks, commodities, futures, indices, and precious metals. The internal calculations automatically adjust to the selected timeframe, making the indicator suitable for scalping, intraday trading, swing trading, and long-term position trading without requiring separate versions for different markets.
The purpose of publishing Institutional Flow Signals is to provide traders with an advanced yet practical analytical tool capable of translating complex institutional market behavior into a clear visual framework. Rather than overwhelming traders with numerous disconnected indicators, it integrates trend analysis, directional volume, cumulative flow, market participation, and adaptive visualization into a single professional workspace that supports more informed trading decisions.
Verification
This indicator is an independently developed Pine Script created exclusively for Michael_Fx_Trader. The complete implementation has been written as an original work and is intended to represent an independent analytical solution based on generally recognized market concepts rather than copied source code. The calculations, structure, organization, variable design, visual presentation, and overall implementation are independently engineered to achieve the intended analytical objectives.
The author identification included within the script represents ownership and authorship only. It does not imply endorsement, certification, verification, partnership, or approval by TradingView or any external organization. Similarity to publicly known trading methodologies reflects common market analysis principles that are widely understood throughout the trading community and should not be interpreted as evidence of copied implementation or reproduced source code.
Clarification
Institutional Flow Signals has been developed for educational, analytical, and research purposes. The indicator is intended to assist traders in evaluating institutional participation, market structure, directional pressure, and trend development by presenting market information in a structured visual format. It does not predict future prices with certainty, does not guarantee profitable trading outcomes, and should not be considered financial or investment advice. Trading financial markets involves significant risk, and every trading decision remains the sole responsibility of the individual trader. Users are encouraged to combine this indicator with sound risk management, proper market analysis, and their own trading methodology before making any investment decisions.
www.tradingview.com インジケーター

Neural Trend Oscillator [Forex_Market_Insights]Neural Trend Oscillator
www.tradingview.com
Neural Trend Oscillator is a professional trend-following and momentum analysis indicator developed to help traders evaluate market direction, trend quality, momentum strength, and potential reversal opportunities through a single adaptive oscillator. Instead of relying on one traditional calculation, the indicator combines multiple layers of market analysis into a smooth neural-inspired model that continuously evaluates whether buyers or sellers currently have greater control of the market.
The primary goal of this indicator is to reduce market noise while providing traders with a clearer understanding of price behavior. Rather than reacting to every small fluctuation, the Neural Trend Oscillator is designed to filter insignificant movements and emphasize meaningful changes in momentum and trend direction. This makes it suitable for traders who want a cleaner view of market conditions without sacrificing responsiveness.
Unlike conventional oscillators that only measure overbought and oversold conditions, the Neural Trend Oscillator focuses on the relationship between momentum, trend continuation, volatility, directional pressure, and market persistence. By combining these factors, the indicator attempts to estimate the current probability of bullish or bearish dominance and presents this information in a visually intuitive format.
The oscillator continuously monitors live market data and dynamically adapts as new price information becomes available. As market conditions change, the oscillator responds by adjusting its internal calculations, allowing traders to identify strengthening trends, weakening momentum, and potential reversal zones in real time.
Why This Indicator Was Created
Financial markets are constantly changing. During trending markets, traditional oscillators often generate premature reversal signals, while during ranging markets they frequently produce excessive market noise.
The purpose of developing the Neural Trend Oscillator was to create a more balanced solution that adapts to different market environments while maintaining smooth, reliable trend visualization.
The indicator was designed to help traders:
Better understand the current market direction.
Measure the strength behind bullish and bearish movements.
Detect trend continuation opportunities.
Recognize weakening momentum before major reversals.
Filter unnecessary market noise.
Improve confidence when combining momentum with price action.
Support discretionary trading decisions with additional market context.
Rather than replacing price action analysis, the indicator is intended to complement it by providing a structured view of underlying market dynamics.
How the Indicator Works
The Neural Trend Oscillator processes multiple layers of market information simultaneously.
Instead of relying on a single mathematical formula, it evaluates various characteristics of price movement, including trend persistence, momentum behavior, directional acceleration, smoothing techniques, and adaptive volatility adjustments.
As these components interact, the indicator continuously calculates the current balance between bullish and bearish pressure.
The oscillator operates within a normalized range, allowing traders to quickly determine whether buying pressure or selling pressure is becoming dominant.
When bullish momentum begins increasing, the oscillator gradually rises and transitions into stronger bullish territory.
When bearish momentum strengthens, the oscillator falls toward the lower region, reflecting increasing selling pressure.
Because the calculations continuously adapt to changing market conditions, the indicator remains responsive without becoming excessively sensitive to minor price fluctuations.
Neural Trend Engine
At the core of the indicator is a custom neural-inspired trend engine designed to analyze market behavior in a more adaptive manner than conventional oscillators.
The engine evaluates multiple characteristics of market movement, including:
Directional momentum
Trend persistence
Price acceleration
Market velocity
Volatility behavior
Adaptive smoothing
Internal market pressure
Trend confidence
Oscillation stability
These components work together to generate a smooth and dynamic oscillator capable of following evolving market conditions across different trading environments.
Oscillator Structure
The indicator consists of several visual components that work together.
Main Neural Line
The primary oscillator line represents the current trend state.
Its movement reflects the balance between bullish and bearish market pressure while remaining smooth enough to minimize unnecessary fluctuations.
Signal Line
A secondary smoothing line provides confirmation of changes in trend direction.
Interactions between the neural line and signal line can help traders identify shifts in market momentum.
Momentum Histogram
The histogram visualizes the current momentum difference between buyers and sellers.
Positive histogram bars indicate strengthening bullish momentum.
Negative histogram bars indicate strengthening bearish momentum.
The histogram expands during periods of increasing momentum and contracts as momentum begins weakening.
Dynamic Color Zones
The oscillator includes visually separated bullish and bearish regions.
Upper areas emphasize bullish conditions.
Lower areas emphasize bearish conditions.
These zones make trend interpretation significantly easier during fast-moving markets.
Overbought and Oversold Analysis
The oscillator also highlights areas where momentum reaches extreme conditions.
When the oscillator moves into higher zones, it suggests that bullish momentum has become extended.
When it reaches lower zones, bearish momentum may be approaching exhaustion.
These areas should not automatically be interpreted as reversal signals.
Instead, they indicate regions where traders may begin monitoring price action for confirmation.
Trend Confirmation
One of the primary functions of the indicator is trend confirmation.
When both the neural oscillator and signal line move in agreement while momentum continues expanding, the probability of trend continuation generally improves.
Conversely, when momentum weakens while the oscillator begins diverging from price movement, traders may recognize early signs of slowing trend strength.
Momentum Exhaustion
The indicator also attempts to identify situations where buying or selling pressure begins losing strength.
Rather than relying solely on fixed overbought or oversold levels, it monitors changes in momentum behavior, helping traders recognize possible transition phases before major reversals develop.
Dashboard
The integrated dashboard provides a live summary of important market conditions.
Depending on current market behavior, it dynamically displays information such as:
Overall market trend
Bullish percentage
Bearish percentage
Trend confidence
Trend quality
Current market volatility
This allows traders to quickly assess market conditions without manually interpreting every oscillator movement.
The dashboard automatically updates as new candles form and adapts to the currently selected timeframe.
Multi-Timeframe Compatibility
The Neural Trend Oscillator has been designed for use across virtually every TradingView timeframe.
Whether a trader is analyzing:
1 Minute
3 Minute
5 Minute
15 Minute
30 Minute
1 Hour
4 Hour
Daily
Weekly
Monthly
the indicator dynamically recalculates using the active chart's data, allowing it to adapt naturally to different market speeds and trading styles.
Markets Supported
The indicator is suitable for a wide variety of financial markets, including:
Forex
Cryptocurrency
Stocks
Commodities
Indices
Futures
CFDs
Its adaptive calculations are designed to remain effective across markets with different volatility characteristics.
Who Can Benefit
This indicator is appropriate for:
Price Action Traders
Swing Traders
Day Traders
Scalpers
Position Traders
Momentum Traders
Trend Following Traders
Multi-Timeframe Analysts
It serves as an analytical confirmation tool rather than an automated trading system.
Purpose of Publishing
The Neural Trend Oscillator was developed to provide traders with a professional, adaptive, and visually intuitive trend analysis solution capable of simplifying market interpretation without oversimplifying price behavior.
The objective is not to predict future prices with certainty but to help traders evaluate the current market structure, identify momentum shifts, measure directional strength, and improve confidence when combining oscillator analysis with their own trading methodology and risk management.
By publishing this indicator, the goal is to offer an original analytical tool that enhances market awareness, encourages disciplined decision-making, and provides traders with a cleaner framework for evaluating trend quality across multiple financial markets and timeframes.
Verification & Clarification
Author: Forex_Market_Insights
Original Development Verification
This indicator has been independently researched, engineered, designed, and implemented by Forex_Market_Insights. The mathematical framework, neural-inspired oscillator architecture, adaptive smoothing methodology, visualization system, dashboard structure, trend evaluation process, momentum engine, and overall user interface represent original development work created specifically for this project.
Ownership & Intellectual Property
The Neural Trend Oscillator is the intellectual property of Forex_Market_Insights. Its calculations, implementation, visual presentation, signal-generation methodology, and internal architecture were developed as an original Pine Script v6 project. It is not a cloned, reverse-engineered, decompiled, translated, or modified version of any proprietary TradingView indicator or third-party commercial script.
Clarification
While certain visual elements—such as oscillators, dashboards, histograms, or momentum displays—may resemble common analytical concepts found in technical analysis, the underlying mathematical logic, filtering techniques, adaptive calculations, trend assessment model, and neural-inspired processing have been independently implemented from scratch. Any similarity in appearance is for usability and interface familiarity only and does not imply shared source code or duplicated proprietary algorithms.
TradingView Compliance Statement
This indicator has been prepared with the intention of complying with TradingView House Rules regarding originality, independent development, and responsible publication. It is presented as an original analytical tool designed to assist traders in interpreting market conditions and should be used alongside sound risk management and independent trading judgment.
www.tradingview.com インジケーター

インジケーター

jrhSMCjrhSMCDashboard — Documentation
Smart Money Concepts (SMC/ICT-style) dashboard indicator built from scratch. Implements standard, publicly-documented concepts — market structure (BOS/CHoCH), premium/discount zones, equal highs/lows, liquidity sweeps, multi-timeframe VWAP.
Input Groups
Dashboard
Setting Purpose
Show Dashboard Master on/off for the table
Position Top Right / Top Left / Bottom Right / Bottom Left
Text Size Table text size (independent of on-chart label sizes below)
Market Structure (BOS / CHoCH)
Setting Purpose
Swing Pivot Length Bars on each side required to confirm a swing high/low (ta.pivothigh/ta.pivotlow). Larger = fewer, more significant pivots
Show BOS / CHoCH Labels Toggle the on-chart structure-break labels
Label Text Size Size of CHoCH/BOS labels and pivot dots (Tiny–Huge)
Show Pivot Dots Toggle the aqua/fuchsia dots marking confirmed swing highs/lows
Liquidity (Equal Highs/Lows + Sweeps)
Setting Purpose
Show Equal High/Low Labels Toggle EQH/EQL labels
Tolerance % How close two consecutive pivots must be (as a % of price) to count as "equal"
Label Text Size Size of EQH/EQL and SWEEP labels (Tiny–Huge)
Show Liquidity Sweep Markers Toggle the on-chart SWEEP labels
Premium / Discount / Equilibrium
Setting Purpose
Show Premium/Discount Zones Toggle the purple (premium) / blue (discount) zone boxes
Range Lookback (bars) Rolling window used to define the swing high/low that anchors the zones, Fib levels, and the dashboard's Levels row
Fibonacci Auto-Levels
Setting Purpose
Show Fib Levels Toggle the 5 auto-plotted retracement lines/labels, computed from the same Range Lookback swing
Label Text Size Size of the Fib ratio/price labels (Tiny–Huge)
Multi-Timeframe VWAP
Setting Purpose
Show VWAP Stack in Dashboard Toggle the VWAP (LTF) / VWAP (HTF) rows
Momentum (RSI / CVD Proxy)
Setting Purpose
RSI Length Standard RSI period
On-Chart Elements
Pivot Dots
Aqua dot = confirmed swing high. Fuchsia dot = confirmed swing low. Plotted Swing Pivot Length bars back from the current bar (pivots can only be confirmed in hindsight).
EQH / EQL Labels
Orange labels marking two consecutive pivot highs (EQH) or lows (EQL) within Tolerance % of each other — these represent liquidity pools resting just beyond the level, a common SMC concept for where stop-runs/sweeps are likely to occur.
CHoCH / BOS Labels
• CHoCH (Change of Character): the first break of structure against the prevailing trend — a potential reversal signal
• BOS (Break of Structure): a break continuing the prevailing trend — confirms trend continuation
Direction colors: bullish CHoCH = blue, bullish BOS = teal, bearish CHoCH = purple, bearish BOS = red.
SWEEP Labels
Marks a liquidity sweep: price wicks beyond a prior swing high/low (taking the resting liquidity) but the candle closes back inside — a classic stop-hunt/reversal pattern. Red "SWEEP" above the bar = buy-side liquidity taken (bearish implication). Green "SWEEP" below the bar = sell-side liquidity taken (bullish implication).
Premium / Discount Zone Boxes
Purple box = Premium (upper half of the Range Lookback swing — the "expensive"/sell zone in ICT terms). Blue box = Discount (lower half — the "cheap"/buy zone). Gray dashed line = Equilibrium (midpoint). The box slides with the current bar, always covering the most recent Range Lookback bars.
Fibonacci Levels
Five standard retracement ratios (0.236, 0.382, 0.5, 0.618, 0.786) computed from the same swing range as the Premium/Discount zone, plotted as dotted yellow lines with price labels.
Dashboard Table — Row Reference
Row Meaning
Trend Current market structure bias: Bullish (last break was bullish), Bearish (last break was bearish), or Neutral (no break yet)
Session Approximate UTC-based session window (Tokyo/London/New York) and which session comes next. Approximate — verify against your broker's actual session times
Levels Premium / Equilibrium / Discount price levels from the Range Lookback swing
Indicators RSI (standard) and CVD (approximation — up-candle volume minus down-candle volume; not true tick-level bid/ask delta, since that data isn't available in standard Pine Script)
Structure Flip The exact price level that needs to be closed beyond to flip the current Trend reading, phrased as "close above/below X to flip bull/bear"
VWAP (LTF) Anchored VWAP for 4H, 1D, and 1W periods
VWAP (HTF) Anchored VWAP for 1M, 6M, and 12M periods
Sweep Status Most recent liquidity sweep direction, with a (N bars ago) tag for staleness
Confluence Own 0–5 composite score counting agreement across Trend, RSI (>50/<50), CVD direction, Premium/Discount position, and Sweep direction. Not a replication of any commercial product's proprietary scoring — a simple vote-count of 5 independent factors
インジケーター

jrhMultORB+CLjrhMultORB_Checklist — Documentation
Non-destructive fork of the real jrhMultORB indicator. Every original input, calculation, marker, and alert is untouched — this version adds one new group ("Execution Checklist") and a second table wired directly to jrhMultORB's actual internal state, so the checklist can never disagree with the chart markers the way a separate/standalone recreation could.
What's New vs. the Original jrhMultORB
Only one new input group was added:
Setting What it controls
Show Checklist Table Master on/off for the new table
Position Where it renders (Top Right / Top Left / Bottom Right / Bottom Left)
Text Size Tiny / Small / Normal / Large
Everything else — Opening Range, Custom Range, Breakout Signals, Targets, Bull/Bear Target levels, Session Moving Average, Trend & Momentum, the original Info Table, and Style — is 100% identical to your source file.
Execution Checklist Table — Row Reference
OR Levels
Locked Opening Range high–low (orh–orl) once the OR session ends. Shows "forming..." while still building.
Day Bias / ADX
Same two readouts as your original Info Table:
• Bullish / Bearish / Neutral — day_dir, comparing this session's OR midpoint to the previous session's
• ADX value — same adxVal as the ADX row in your Info Table
Breakout Up / Breakout Down
Reflects upSignalUsed / downSignalUsed directly — "Fired this session" or "Not yet".
Retest (Up) / Retest (Down)
The core entry-decision row, reading waitRetestUp/waitRetestDown, retest_up/retest_down, and rtUpOutcome/rtDownOutcome directly from the real script:
Status Meaning Action
Not yet (from Breakout row) No breakout Wait
Armed - awaiting retest of ORH/ORL Breakout fired, watching for the retest touch Wait
RTC - continuation confirmed Retest candle closed back through the level Entry signal in the breakout direction
RTF - retest failed Retest candle closed back inside the range Don't enter continuation; watch the opposite Rev/Fade row
Retest window expired (stale) No touch within your Max Bars to Wait Void
Includes (N bars ago), computed from waitRetestUpBar/waitRetestDownBar — the actual bar index your real script arms the retest watch on. This tells you whether an RTC/RTF is live or historical context.
Rev/Fade (after Up-fail) / (after Dn-fail)
Only activates after the matching Retest shows RTF. Reads waitRevFadeLong/waitRevFadeShort and revLong/fadeLong/revShort/fadeShort directly:
Status Meaning
— Not armed
Armed - watching ORL/ORH for reversal/fade Watching the opposite level after an RTF
REV - reversed through ORL/ORH, fresh short/long Opposite level closed through — new opportunity in the new direction
FADE - rejected at ORL/ORH, range holding Opposite level touched but rejected — range is holding
Also includes (N bars ago), from waitRevFadeLongBar/waitRevFadeShortBar.
Signal vs Bias Check
Compares a confirmed RTC direction against day_dir (the same Day Bias shown two rows up — not a separate ADX-based proxy):
Display Meaning
No conflict No confirmed RTC yet, or it agrees with Day Bias
⚠ Confirmed LONG vs Bearish Day Bias RTC long confirmed while Day Bias reads Bearish
⚠ Confirmed SHORT vs Bullish Day Bias RTC short confirmed while Day Bias reads Bullish
A caution flag, not a stop signal — it's a cue to size down, tighten stops, or be skeptical of extended targets, not an automatic skip.
Important Usage Notes
• Retest/Rev-Fade rows are historical snapshots. They hold whatever text they last resolved to until the next OR session resets them — always check the (N bars ago) tag before treating a status as a live signal.
• Day Bias / ADX recalculates live, so it can visibly diverge from an older Retest status as the session progresses.
• All checklist state resets automatically at the start of each new OR session (or_start), same as your original script's own state.
• This checklist reads your actual script's internal variables — it cannot disagree with the breakout/retest/REV/FADE markers drawn on the chart, since both come from the same calculation.
• Still no automatic stop/target/position-size calc — pair with your own risk rules, same as before.
インジケーター

インジケーター

インジケーター

インジケーター

インジケーター

インジケーター

インジケーター

Basee//@version=6
indicator("Trade, Travel, Talk AI DATA — Base M5 v1", shorttitle="TTT Base M5", overlay=true, max_boxes_count=300, max_labels_count=50)
// ─────────────────────────────────────────────────────────────────────────────
// Trade, Travel, Talk AI DATA — Base M5
// Detects a compact 1–3 candle base immediately before displacement + BOS.
// Default zone boundaries use the complete wick range (High–Low).
// Designed for XAUUSD M5. Use alerts only after confirming the symbol/session.
// ─────────────────────────────────────────────────────────────────────────────
groupDetect = "1) Base Detection"
enforceM5 = input.bool(true, "ทำงานเฉพาะกราฟ M5", group=groupDetect)
maxBaseBars = input.int(3, "จำนวนแท่ง Base สูงสุด", minval=1, maxval=5, group=groupDetect)
impulseBars = input.int(2, "จำนวนแท่ง Impulse ที่ใช้ยืนยัน", minval=1, maxval=4, group=groupDetect)
atrLength = input.int(14, "ATR Length", minval=2, group=groupDetect)
impulseAtr = input.float(1.20, "แรง Impulse รวมขั้นต่ำ (ATR)", minval=0.20, step=0.05, group=groupDetect)
maxBaseBodyAtr = input.float(0.55, "Body ของ Base สูงสุด (ATR)", minval=0.05, step=0.05, group=groupDetect)
maxBaseRangeAtr = input.float(1.00, "ความกว้าง Base สูงสุด (ATR)", minval=0.10, step=0.05, group=groupDetect)
zoneBoundary = input.string("Wick", "ขอบเขต Base", options= , group=groupDetect)
requireOpposite = input.bool(true, "แท่ง Base ใกล้ Impulse ต้องเป็นสีตรงข้าม", group=groupDetect)
requireSameImpulseColor = input.bool(true, "แท่ง Impulse ต้องไปทิศเดียวกันทั้งหมด", group=groupDetect)
confirmOnClose = input.bool(true, "ยืนยัน Base หลังแท่งปิด (ลด Repaint)", group=groupDetect)
groupStructure = "2) Structure Confirmation"
requireBos = input.bool(true, "ต้องมี BOS", group=groupStructure)
bosLookback = input.int(10, "BOS Lookback", minval=3, maxval=100, group=groupStructure)
fvgBonus = input.bool(true, "เพิ่มคะแนนเมื่อมี FVG", group=groupStructure)
groupLife = "3) Zone Lifecycle"
maxZones = input.int(24, "จำนวนโซนสูงสุด", minval=2, maxval=100, group=groupLife)
rightPaddingBars = input.int(8, "ยื่นกรอบเลยแท่งปัจจุบัน (แท่ง)", minval=1, maxval=100, group=groupLife)
invalidationMode = input.string("Close", "ยกเลิกโซนด้วย", options= , group=groupLife)
invalidationAtrBuffer = input.float(0.05, "Invalidation Buffer (ATR)", minval=0.0, step=0.01, group=groupLife)
deleteInvalid = input.bool(true, "ลบโซนเมื่อ Invalid", group=groupLife)
fadeAfterFirstRetest = input.bool(true, "ลดสีหลัง First Retest", group=groupLife)
showScore = input.bool(true, "แสดงคะแนน Base", group=groupLife)
groupStyle = "4) Style"
buyBorder = input.color(color.rgb(70, 125, 255), "Buy Base Border", group=groupStyle)
sellBorder = input.color(color.rgb(70, 125, 255), "Sell Base Border", group=groupStyle)
buyFill = input.color(color.new(color.rgb(35, 60, 140), 72), "Buy Base Fill", group=groupStyle)
sellFill = input.color(color.new(color.rgb(35, 60, 140), 72), "Sell Base Fill", group=groupStyle)
testedFill = input.color(color.new(color.gray, 88), "Tested Base Fill", group=groupStyle)
showDashboard = input.bool(true, "แสดง Dashboard", group=groupStyle)
bool isM5 = timeframe.isminutes and timeframe.multiplier == 5
bool enabled = not enforceM5 or isM5
float atr = ta.atr(atrLength)
// Zone storage: direction 1 = Buy/Demand, -1 = Sell/Supply.
var box zoneBoxes = array.new_box()
var float zoneTops = array.new_float()
var float zoneBottoms = array.new_float()
var int zoneDirections = array.new_int()
var int zoneStates = array.new_int() // 0 Fresh, 1 Tested, 2 Invalid (when retained)
var int zoneCreatedBars = array.new_int()
var int zoneScores = array.new_int()
bool newBuyZone = false
bool newSellZone = false
bool buyRetest = false
bool sellRetest = false
bool buyInvalidated = false
bool sellInvalidated = false
// Confirm a displacement sequence after the base.
float impulseBodySum = 0.0
bool impulseAllBull = true
bool impulseAllBear = true
for j = 0 to impulseBars - 1
impulseBodySum += math.abs(close - open )
impulseAllBull := impulseAllBull and close > open
impulseAllBear := impulseAllBear and close < open
bool enoughHistory = bar_index > impulseBars + maxBaseBars + bosLookback + 2
float priorHigh = ta.highest(high , bosLookback)
float priorLow = ta.lowest(low , bosLookback)
bool strongDisplacement = impulseBodySum >= atr * impulseAtr
bool bullImpulse = strongDisplacement and (not requireSameImpulseColor or impulseAllBull)
bool bearImpulse = strongDisplacement and (not requireSameImpulseColor or impulseAllBear)
// Grow a compact base from the candle nearest the impulse, up to maxBaseBars.
// A lone opposite candle naturally remains a one-candle base; a true compact
// cluster is retained as 2–3 candles instead of being cut down artificially.
int chosenBaseBars = 0
float candidateTop = na
float candidateBottom = na
if enabled and enoughHistory
for n = 1 to maxBaseBars
float tempTop = na
float tempBottom = na
bool bodiesCompact = true
for k = 0 to n - 1
int idx = impulseBars + k
float candleTop = zoneBoundary == "Wick" ? high : math.max(open , close )
float candleBottom = zoneBoundary == "Wick" ? low : math.min(open , close )
tempTop := na(tempTop) ? candleTop : math.max(tempTop, candleTop)
tempBottom := na(tempBottom) ? candleBottom : math.min(tempBottom, candleBottom)
bodiesCompact := bodiesCompact and math.abs(close - open ) <= atr * maxBaseBodyAtr
bool rangeCompact = tempTop - tempBottom <= atr * maxBaseRangeAtr
if bodiesCompact and rangeCompact
chosenBaseBars := n
candidateTop := tempTop
candidateBottom := tempBottom
bool bullBaseColor = not requireOpposite or close <= open
bool bearBaseColor = not requireOpposite or close >= open
bool bullBos = close > priorHigh
bool bearBos = close < priorLow
bool bullFvg = low > high
bool bearFvg = high < low
bool confirmationReady = not confirmOnClose or barstate.isconfirmed
bool rawBuySetup = confirmationReady and enabled and enoughHistory and chosenBaseBars > 0 and bullImpulse and bullBaseColor and close > candidateTop and (not requireBos or bullBos)
bool rawSellSetup = confirmationReady and enabled and enoughHistory and chosenBaseBars > 0 and bearImpulse and bearBaseColor and close < candidateBottom and (not requireBos or bearBos)
// Do not recreate an almost identical active zone.
bool duplicateBuy = false
bool duplicateSell = false
if array.size(zoneBoxes) > 0 and chosenBaseBars > 0
for i = 0 to array.size(zoneBoxes) - 1
float oldTop = array.get(zoneTops, i)
float oldBottom = array.get(zoneBottoms, i)
int oldDir = array.get(zoneDirections, i)
float tolerance = atr * 0.10
bool sameArea = math.abs(candidateTop - oldTop) <= tolerance and math.abs(candidateBottom - oldBottom) <= tolerance
duplicateBuy := duplicateBuy or (oldDir == 1 and sameArea)
duplicateSell := duplicateSell or (oldDir == -1 and sameArea)
if rawBuySetup and not duplicateBuy
int score = int(math.min(100.0, 35.0 + math.min(30.0, impulseBodySum / atr * 15.0) + (bullBos ? 20.0 : 0.0) + (fvgBonus and bullFvg ? 10.0 : 0.0) + (chosenBaseBars == 1 ? 5.0 : 0.0)))
string zoneText = "BUY BASE M5 • FRESH" + (showScore ? " • " + str.tostring(score) + "/100" : "")
box newBox = box.new(left=bar_index - (impulseBars + chosenBaseBars - 1), top=candidateTop, right=bar_index + rightPaddingBars, bottom=candidateBottom, xloc=xloc.bar_index, extend=extend.none, border_color=buyBorder, border_width=1, bgcolor=buyFill, text=zoneText, text_color=color.white, text_size=size.tiny, text_halign=text.align_right, text_valign=text.align_center)
array.push(zoneBoxes, newBox)
array.push(zoneTops, candidateTop)
array.push(zoneBottoms, candidateBottom)
array.push(zoneDirections, 1)
array.push(zoneStates, 0)
array.push(zoneCreatedBars, bar_index)
array.push(zoneScores, score)
newBuyZone := true
if rawSellSetup and not duplicateSell
int score = int(math.min(100.0, 35.0 + math.min(30.0, impulseBodySum / atr * 15.0) + (bearBos ? 20.0 : 0.0) + (fvgBonus and bearFvg ? 10.0 : 0.0) + (chosenBaseBars == 1 ? 5.0 : 0.0)))
string zoneText = "SELL BASE M5 • FRESH" + (showScore ? " • " + str.tostring(score) + "/100" : "")
box newBox = box.new(left=bar_index - (impulseBars + chosenBaseBars - 1), top=candidateTop, right=bar_index + rightPaddingBars, bottom=candidateBottom, xloc=xloc.bar_index, extend=extend.none, border_color=sellBorder, border_width=1, bgcolor=sellFill, text=zoneText, text_color=color.white, text_size=size.tiny, text_halign=text.align_right, text_valign=text.align_center)
array.push(zoneBoxes, newBox)
array.push(zoneTops, candidateTop)
array.push(zoneBottoms, candidateBottom)
array.push(zoneDirections, -1)
array.push(zoneStates, 0)
array.push(zoneCreatedBars, bar_index)
array.push(zoneScores, score)
newSellZone := true
// Keep chart objects within the user's selected limit.
while array.size(zoneBoxes) > maxZones
box oldest = array.shift(zoneBoxes)
box.delete(oldest)
array.shift(zoneTops)
array.shift(zoneBottoms)
array.shift(zoneDirections)
array.shift(zoneStates)
array.shift(zoneCreatedBars)
array.shift(zoneScores)
// Update Fresh/Tested/Invalid lifecycle.
if array.size(zoneBoxes) > 0
for i = array.size(zoneBoxes) - 1 to 0
box z = array.get(zoneBoxes, i)
float zTop = array.get(zoneTops, i)
float zBottom = array.get(zoneBottoms, i)
int zDir = array.get(zoneDirections, i)
int zState = array.get(zoneStates, i)
int zCreated = array.get(zoneCreatedBars, i)
int zScore = array.get(zoneScores, i)
float buffer = atr * invalidationAtrBuffer
bool invalidBuy = zState < 2 and zDir == 1 and (invalidationMode == "Close" ? close < zBottom - buffer : low < zBottom - buffer)
bool invalidSell = zState < 2 and zDir == -1 and (invalidationMode == "Close" ? close > zTop + buffer : high > zTop + buffer)
bool invalid = invalidBuy or invalidSell
if invalid
buyInvalidated := buyInvalidated or invalidBuy
sellInvalidated := sellInvalidated or invalidSell
if deleteInvalid
box.delete(z)
array.remove(zoneBoxes, i)
array.remove(zoneTops, i)
array.remove(zoneBottoms, i)
array.remove(zoneDirections, i)
array.remove(zoneStates, i)
array.remove(zoneCreatedBars, i)
array.remove(zoneScores, i)
else
array.set(zoneStates, i, 2)
box.set_extend(z, extend.none)
box.set_right(z, bar_index)
box.set_bgcolor(z, color.new(color.gray, 92))
box.set_border_color(z, color.new(color.gray, 65))
box.set_text(z, (zDir == 1 ? "BUY" : "SELL") + " BASE M5 • INVALID")
else
if zState < 2
box.set_right(z, bar_index + rightPaddingBars)
bool overlapsNow = zState < 2 and high >= zBottom and low <= zTop
bool overlapsPrev = high >= zBottom and low <= zTop
bool firstEntry = bar_index > zCreated and overlapsNow and not overlapsPrev
if zState == 0 and firstEntry
array.set(zoneStates, i, 1)
buyRetest := buyRetest or zDir == 1
sellRetest := sellRetest or zDir == -1
if fadeAfterFirstRetest
box.set_bgcolor(z, testedFill)
box.set_text(z, (zDir == 1 ? "BUY" : "SELL") + " BASE M5 • TESTED" + (showScore ? " • " + str.tostring(zScore) + "/100" : ""))
// Compact dashboard.
var table dashboard = table.new(position.top_right, 2, 4, border_width=1, border_color=color.new(color.aqua, 45))
if barstate.islast and showDashboard
int freshBuy = 0
int freshSell = 0
int tested = 0
if array.size(zoneBoxes) > 0
for i = 0 to array.size(zoneBoxes) - 1
int d = array.get(zoneDirections, i)
int s = array.get(zoneStates, i)
freshBuy += d == 1 and s == 0 ? 1 : 0
freshSell += d == -1 and s == 0 ? 1 : 0
tested += s == 1 ? 1 : 0
table.cell(dashboard, 0, 0, "TTT BASE M5", text_color=color.white, bgcolor=color.rgb(5, 30, 45))
table.cell(dashboard, 1, 0, isM5 ? "ACTIVE" : "USE M5", text_color=isM5 ? color.lime : color.yellow, bgcolor=color.rgb(5, 30, 45))
table.cell(dashboard, 0, 1, "Fresh Buy", text_color=color.white)
table.cell(dashboard, 1, 1, str.tostring(freshBuy), text_color=buyBorder)
table.cell(dashboard, 0, 2, "Fresh Sell", text_color=color.white)
table.cell(dashboard, 1, 2, str.tostring(freshSell), text_color=sellBorder)
table.cell(dashboard, 0, 3, "Tested", text_color=color.white)
table.cell(dashboard, 1, 3, str.tostring(tested), text_color=color.silver)
// Alert events. Create alerts from TradingView's Create Alert dialog.
alertcondition(newBuyZone, "New Buy Base M5", "TTT AI DATA: New BUY Base M5 detected")
alertcondition(newSellZone, "New Sell Base M5", "TTT AI DATA: New SELL Base M5 detected")
alertcondition(buyRetest, "Buy Base First Retest", "TTT AI DATA: Price entered a BUY Base M5 for the first retest")
alertcondition(sellRetest, "Sell Base First Retest", "TTT AI DATA: Price entered a SELL Base M5 for the first retest")
alertcondition(buyInvalidated, "Buy Base Invalidated", "TTT AI DATA: A BUY Base M5 was invalidated")
alertcondition(sellInvalidated, "Sell Base Invalidated", "TTT AI DATA: A SELL Base M5 was invalidated")
インジケーター

インジケーター

インジケーター

インジケーター

Combined Market Breadth Table Overview
Combined Market Breadth Table is an overlay indicator that brings key market breadth data directly onto your chart in a clean, compact visual display. It tracks the percentage of stocks trading above major moving averages across two of the most heavily watched benchmarks: the Nasdaq 100 (NDX) and the S&P 500 (SPX).
Instead of clogging your screen with multiple lower-pane indicators, this script compiles short-term, medium-term, and long-term breadth metrics into a single table anchored to the top-right corner of your chart.
Key Features
Multi-Timeframe Moving Average Tracking: Displays the percentage of stocks trading above their 200-day, 50-day, 20-day, and 5-day moving averages simultaneously.
Dual-Index Comparison: Tracks both the Nasdaq 100 (NDX) and S&P 500 (SPX) side-by-side to easily spot divergence between tech heavyweights and the broader market.
Color-Coded Rows: Each moving average timeframe uses a distinct, color-coded text palette for quick scanning:
🟡 200-Day (Yellow): Macro / long-term structural trend.
🔵 50-Day (Blue): Intermediate trend.
🟢 20-Day (Green): Short-term trend.
🟠 5-Day (Orange): Ultra-short-term / momentum pulse.
Non-Intrusive Design: Renders only on the latest bar inside a dark, framed table box in the top-right corner, leaving your price action uncluttered.
インジケーター

Sprung Ladder Signals v1//@version=6
indicator("Sprung Ladder Signals v1", "SLS", overlay=true)
// ---------- Inputs (set from the gear icon, no code edits needed) ----------
shelf = input.float(0.0, "Sprung Ladder shelf level (0 = off)")
springWindow = input.int(3, "Spring reclaim window (bars)", minval=1)
lvl1 = input.float(0.0, "Alert level 1 (0 = off)")
lvl2 = input.float(0.0, "Alert level 2 (0 = off)")
hlLen = input.int(2, "Higher-low pivot strength", minval=1)
hiLen = input.int(20, "Session-high lookback (bars)", minval=5)
// ---------- Webhook payload helper ----------
f_fire(ev) =>
alert('{"event":"' + ev + '","symbol":"' + syminfo.ticker + '","tf":"' + timeframe.period + '","price":' + str.tostring(close) + ',"t":' + str.tostring(timenow) + '}', alert.freq_once_per_bar_close)
// ---------- SWEEP: pokes below a defended shelf, closes back above ----------
sweep = shelf > 0 and low < shelf and close > shelf
var float sweepHigh = na
var int sweepBar = na
if sweep
sweepHigh := high
sweepBar := bar_index
// ---------- ta.* calls hoisted to globals so they run every bar (fixes CW10002) ----------
crossSweepHigh = ta.crossover(close, sweepHigh)
pl = ta.pivotlow(low, hlLen, hlLen)
recentHigh = ta.highest(high, hiLen)
crossRecent = ta.crossover(close, recentHigh)
crossLvl1 = ta.cross(close, lvl1)
crossLvl2 = ta.cross(close, lvl2)
// ---------- SPRING: reclaim of the sweep bar's high within the window ----------
spring = not na(sweepBar) and (bar_index - sweepBar) <= springWindow and crossSweepHigh
if spring
sweepBar := na
// ---------- HL_RECLAIM: shallow pullback holds above prior pivot low, breaks recent high ----------
var float lastPivotLow = na
if not na(pl)
lastPivotLow := pl
hlReclaim = not na(lastPivotLow) and low > lastPivotLow and crossRecent
// ---------- Visuals ----------
plotshape(sweep, "SWEEP", shape.triangleup, location.belowbar, color.orange, size=size.small)
plotshape(spring, "SPRING", shape.labelup, location.belowbar, color.green, size=size.small)
plotshape(hlReclaim, "HL_RECLAIM", shape.diamond, location.belowbar, color.aqua, size=size.tiny)
plot(shelf > 0 ? shelf : na, "Shelf", color.new(color.yellow, 30), 2, plot.style_linebr)
// ---------- Fire webhooks (one TV alert: 'Any alert() function call') ----------
if sweep
f_fire("SWEEP")
if spring
f_fire("SPRING")
if hlReclaim
f_fire("HL_RECLAIM")
if lvl1 > 0 and crossLvl1
f_fire("LEVEL1_HIT")
if lvl2 > 0 and crossLvl2
f_fire("LEVEL2_HIT") インジケーター

インジケーター

MACD PRO + Filtro + Genesis//@version=6
indicator("MACD PRO + Filtro + Delay", overlay=true)
// ======================
// 🔧 INPUTS
// ======================
source = close
fastLen = input.int(12, "Fast")
slowLen = input.int(26, "Slow")
signalLen = input.int(9, "Signal")
delay = input.int(1, "Delay (velas após cruzamento)", minval=0, maxval=5)
emaFilterLen = input.int(100, "EMA Tendência")
// ======================
// 📊 MACD
// ======================
= ta.macd(source, fastLen, slowLen, signalLen)
// ======================
// 📈 FILTRO DE TENDÊNCIA
// ======================
ema = ta.ema(close, emaFilterLen)
trendBuy = close > ema
trendSell = close < ema
// ======================
// 🔀 CRUZAMENTOS
// ======================
buyCross = ta.crossover(macd, signal)
sellCross = ta.crossunder(macd, signal)
// ======================
// ⏱️ DELAY (controle de vela)
// ======================
buySignal = buyCross
sellSignal = sellCross
// ======================
// ✅ CONFIRMAÇÃO DE CANDLE
// ======================
candleBuy = close > open
candleSell = close < open
// ======================
// 🎯 SINAL FINAL (FILTROS)
// ======================
finalBuy = buySignal and trendBuy and candleBuy
finalSell = sellSignal and trendSell and candleSell
// ======================
// 📍 PLOTAGEM
// ======================
plotshape(finalBuy,
title="Compra",
style=shape.triangleup,
location=location.belowbar,
color=color.lime,
size=size.small,
text="BUY")
plotshape(finalSell,
title="Venda",
style=shape.triangledown,
location=location.abovebar,
color=color.red,
size=size.small,
text="SELL")
// ======================
// 📉 EMA NO GRÁFICO
// ======================
plot(ema, "EMA 200", color=color.orange)
// ======================
// 🔔 ALERTAS
// ======================
alertcondition(finalBuy, "Compra", "Sinal de COMPRA confirmado")
alertcondition(finalSell, "Venda", "Sinal de VENDA confirmado" インジケーター

インジケーター
