High Low with Five Sessions - by Zephyros# High Low with Five Sessions - by Zephyros
High Low with Five Sessions is a configurable market-structure overlay that plots High and Low levels from five completed intraday sessions together with levels from completed Daily, Weekly, and Monthly periods.
The indicator is designed to keep important completed-range boundaries visible until price touches them for the first time. It does not generate buy or sell recommendations. The levels are reference points that can be used as additional context for liquidity analysis, market structure, reactions around previous extremes, or a trader's own entry and exit framework.
## What the indicator displays
The script tracks eight categories of completed High/Low levels:
- Asia session
- London session
- NYM session
- NYAM session
- NYPM session
- Previous completed Daily period
- Previous completed Weekly period
- Previous completed Monthly period
The five intraday sessions are fully configurable. Each session has separate inputs for start time, end time, lookback, line colors, line widths, labels, and line visibility.
## Default session settings
The default session time zone is `America/New_York`.
Default session intervals:
- Asia: 20:00-23:59
- London: 02:00-05:00
- NYM: 07:00-09:00
- NYAM: 09:30-12:00
- NYPM: 13:30-16:00
The Asia session ends at `23:59` instead of `00:00` so that the default interval remains inside one calendar day in the script's hour-and-minute session model. Session end times are exclusive, which means a bar whose opening time is exactly equal to the configured end time is not included in that session.
Custom session intervals should therefore begin and end within the same calendar day. Overnight intervals that cross midnight are not supported by this version.
## Time-zone selection
The `Session Time Zone` setting uses a drop-down list of common time zones. The selected value applies to:
- calculation of all five custom sessions;
- the daily reset of crossing counters;
- the daily reset of accumulated crossing flags.
The default IANA time zone, `America/New_York`, automatically follows daylight-saving-time changes. Other IANA locations in the list behave in the same way. `UTC` uses a fixed UTC clock.
The selected custom-session time zone does not redefine the Daily, Weekly, or Monthly candles. Those levels continue to use the standard periods supplied by the exchange or data source for the current symbol.
## How session levels are calculated
While a custom session is active, the script records the highest High and lowest Low of the chart bars that open inside the configured interval.
The level pair is created only after the session has fully ended:
- Session High = highest High recorded during the completed session.
- Session Low = lowest Low recorded during the completed session.
The indicator does not display developing session High/Low levels before the session closes.
Session calculations use the bars of the current chart timeframe. They do not request a separate lower-timeframe data set.
## Daily, Weekly, and Monthly levels
Daily, Weekly, and Monthly levels are taken only from fully completed standard periods of the current symbol:
- Daily High/Low = High and Low of the previous completed Daily period.
- Weekly High/Low = High and Low of the previous completed Weekly period.
- Monthly High/Low = High and Low of the previous completed Monthly period.
The script requests the preceding closed period, so these reference values do not use the developing High or Low of the current Daily, Weekly, or Monthly candle.
## Historical anchoring and level availability
Every level becomes active only after its source session or standard period has fully closed.
For visual context, the script anchors each completed-session line to the start bar of that session. Daily, Weekly, and Monthly lines are anchored to the start time of their completed source period. As a result, part of each line is drawn retrospectively across the range from which the High or Low was calculated.
That historical segment does not mean the final level was known in real time at the beginning of the session or period. First-touch tracking starts only after the level is created, and the script does not count price interactions that occurred while the source session or period was still forming.
## Timeframe hierarchy
The indicator avoids reconstructing lower-period levels inside larger chart candles.
The period hierarchy is:
- Seconds and intraday charts: Session + Daily + Weekly + Monthly calculations. Session lines are displayed only below 60 minutes.
- Daily chart: Daily + Weekly + Monthly.
- Weekly chart: Weekly + Monthly.
- Monthly chart: Monthly only.
On multi-period chart timeframes larger than a source period, the smaller source period is excluded. For example, Daily levels are not processed on a 2-day chart, Weekly levels are not processed on a 2-week chart, and Monthly levels are not processed on chart timeframes above one month.
## Session-line visibility by timeframe
Session lines and session labels are automatically hidden on chart timeframes of 60 minutes or higher. Session calculations and hidden crossing outputs continue to run from the current chart bars.
On 30-minute and 45-minute charts, a chart candle can overlap a configured session boundary. In that situation, the session High or Low can include the full High or Low of that chart candle. For the most precise session boundaries, use a timeframe whose bars align with the configured start and end times.
## First-touch crossing logic
Each completed level is active until its first touch.
A High level is considered crossed when:
`Current bar High >= level price`
A Low level is considered crossed when:
`Current bar Low <= level price`
Only the first touch of each individual level is counted. Repeated touches of the same level are ignored.
If one candle touches several previously active levels, each level is counted separately. For example, if one candle first touches three High levels, `High Crosses Today` increases by three.
## Crossed-line behavior
The `Delete Crossed Lines` setting controls what happens after the first touch:
- Disabled by default: the line stops at the first-touch bar and remains visible as a completed historical fragment.
- Enabled: the crossed line is removed from the chart.
The `Show High/Low Lines` setting inside each group controls visual display only. Disabling a line group does not disable its level calculations, first-touch tracking, daily flags, counters, or hidden outputs when that category is permitted on the current chart timeframe.
## Lookback Bars
Each level group includes a `Lookback Bars` setting.
It defines the maximum age, measured in bars of the current chart timeframe, for an uncrossed level to remain active and eligible for first-touch processing. The default and maximum value is 5000 bars.
Once a level is crossed, it is removed from active tracking. If `Delete Crossed Lines` is disabled, its truncated line can remain visible until TradingView removes older drawing objects under the platform's drawing limits.
## Labels and debug information
Normal level labels are disabled by default and can be enabled separately for each session or period group.
`Show Debug Information` is also disabled by default. When enabled, it displays:
- a label at each detected first touch;
- a table containing daily counters and flags;
- the number of currently active tracked High/Low levels;
- the current priority values used by the hidden classification outputs.
Debug information is intended for inspection and integration testing, not as a trading recommendation.
## Hidden outputs
The script includes hidden plots for use in the Data Window, data export, or integration with other Pine Script tools.
### Daily accumulated flags
Each flag resets at the beginning of a new calendar day in the selected `Session Time Zone`. After the first qualifying touch during that day, the corresponding flag becomes `1` and remains `1` until the next daily reset.
- `Asia High Cross Flag`
- `Asia Low Cross Flag`
- `London High Cross Flag`
- `London Low Cross Flag`
- `NYM High Cross Flag`
- `NYM Low Cross Flag`
- `NYAM High Cross Flag`
- `NYAM Low Cross Flag`
- `NYPM High Cross Flag`
- `NYPM Low Cross Flag`
- `Daily High Cross Flag`
- `Daily Low Cross Flag`
- `Weekly High Cross Flag`
- `Weekly Low Cross Flag`
- `Monthly High Cross Flag`
- `Monthly Low Cross Flag`
### Daily crossing counters
- `High Crosses Today` = number of individual active High levels first touched during the current selected-time-zone day.
- `Low Crosses Today` = number of individual active Low levels first touched during the current selected-time-zone day.
### Per-bar priority outputs
The following values describe only first-touch events detected on the current bar:
- `ZEP_HL_HIGH_STRENGTH`
- `ZEP_HL_LOW_STRENGTH`
- `ZEP_HL_SIGNAL`
The word `STRENGTH` is retained for compatibility with the output names, but the value is a predefined category priority, not a statistically measured signal strength:
- `1` = custom intraday session level;
- `2` = Daily level;
- `3` = Weekly or Monthly level.
`ZEP_HL_HIGH_STRENGTH` returns the highest High-side priority touched on the current bar.
`ZEP_HL_LOW_STRENGTH` returns the highest Low-side priority touched on the current bar.
`ZEP_HL_SIGNAL` is classified as follows:
- positive value = the strongest current-bar event is a Low-level touch;
- negative value = the strongest current-bar event is a High-level touch;
- `0` = no event, or equal highest priorities occurred on both sides of the same bar.
These values are technical classifications. They are not independent long or short signals.
## Basic usage
1. Add the indicator to a time-based chart.
2. Select the time zone used for the five custom sessions.
3. Adjust the five session intervals when required.
4. Choose which line groups and labels should be visible.
5. Use the extended High/Low levels as contextual references.
6. Observe the first interaction between price and each active level.
7. Combine the information with an independent method such as market structure, price reaction, volume, volatility, or risk-management rules.
## Originality
This is an original implementation by Zephyros.
Its purpose is not simply to display a single previous High or Low. The script combines:
- five independently configurable completed sessions;
- a selectable session time zone with daily state resets;
- completed Daily, Weekly, and Monthly reference levels;
- timeframe-aware period hierarchy;
- first-touch-only lifecycle management for each individual level;
- separate visual and calculation states;
- accumulated daily flags and counters;
- per-bar priority outputs for external integration.
The script is published with open source code so users can inspect, verify, modify, and study its calculations.
## Limitations
- The plotted levels are historical reference points, not predictions.
- A touch of a High or Low does not guarantee a reversal, continuation, liquidity sweep, or profitable trade.
- The indicator does not open positions, place orders, calculate position size, set stop-losses, set profit targets, or provide strategy-test results.
- Custom sessions are calculated from the current chart bars. Boundary precision therefore depends on the selected timeframe and its bar alignment.
- Custom session intervals that cross midnight are not supported.
- Missing market data or exchange closures can reduce the number of bars available inside a session.
- Daily, Weekly, and Monthly boundaries depend on the standard periods supplied for the selected symbol by its exchange or data provider.
- The current open bar can trigger a first touch as its High or Low develops.
- The script is intended for time-based charts. Non-time-based chart types can produce unavailable timeframe classifications or behavior that does not match the intended session model.
- TradingView limits the number of line and label drawings maintained by one script. The indicator requests the platform maximum of 500 lines and 500 labels, but older visual objects can still be removed automatically when those limits are reached.
- Hidden priority values are deterministic category codes, not statistical confidence scores.
- The indicator should not be used as the sole basis for a trading decision.
指标

Confluence Engine+Confluence Engine+
Maps the PD arrays taught by ICT. Instead of plotting a dozen isolated objects and leaving you to weigh them by eye, it reads the confluences present at price — a liquidity raid into a discount PD array, confirmed by a breaker, with SMT, inside a killzone — into the ICT directional bias, the current draw on liquidity, and a corner dashboard. It reports context and leaves the trade to you. It is not a signal generator: it does not fire buy or sell orders and it does not place entries or exits.
What it does
Six modules, each toggleable, built so later stages read the state the earlier ones capture.
1 · Killzones & Sessions. Time-gates the London, NY AM and NY PM killzones and marks the Asia, London and New York session highs and lows as unmitigated levels, plus the 00:00 New York Midnight Open — a core daily reference (below it leans the day bullish, above it bearish). Every time window here — the killzones included — is resolved on the session source timeframe rather than the chart's. A killzone is ninety minutes to three hours, narrower than a single higher-timeframe candle, so judged off the chart a candle merely overlapping one would report as fully inside it. The killzone is read at the candle's close, and the Midnight Open the same way, so it still resolves on charts whose own candles never open at 00:00.
2 · Structure & Dealing Range. Pivot highs and lows define the swing structure the arrays build on. The dealing range — the window whose midpoint separates premium from discount — is taken from a fixed higher-timeframe period: the weekly range on 1-hour-and-up charts, the daily range on anything intraday below that.
3 · Liquidity. Session highs and lows (Asia, London, New York) plus prior day and prior week highs and lows are drawn as reference liquidity, each anchored to the candle that formed it. Session extremes are measured on a lower timeframe rather than the chart's: a three-hour London window is shorter than a single 4-hour candle, so read off the chart it would collapse to the high of whichever candle happened to contain it. Sourcing them lower keeps session levels correct on any chart, and charts already at or below that timeframe track natively.
A level tracks the right edge while it rests; the instant price touches it, it is mitigated — the line stops extending at that candle, turns dotted and dims — so taken liquidity stays readable as history and can never be mistaken for a live level. Where levels land close together only the most significant is drawn, a weekly level outranking a prior-day level, which outranks a session level, so near-duplicates never stack. Each level then retires once it ages past its lookback window: the "back" settings are a window in days and weeks, so nothing lingers long after the session or period that formed it.
4 · PD Arrays. Fair Value Gaps (BISI / SIBI), Volume Imbalances, Order Blocks (the candle body before a displacement) and the Order-Block-to-Breaker lifecycle. A FVG registers only when the gap clears a height floor and its middle candle is a genuine displacement candle, so routine three-bar gaps are filtered out. A Volume Imbalance is the FVG's thinner cousin — a two-candle gap between the bodies that a wick still trades through, so the only volume in the gap changed hands in wicks; it carries its own sensitivity floor and lives under the same lifecycle as the FVGs. A new gap also removes any stale opposite-direction gap it overlaps: that range has since been delivered through the other way, so the old one-sided imbalance cannot stand.
An Order Block must earn its place with the full ICT sequence: the close that breaks the prior swing — a structure break grants that credit exactly once, so blocks sit at real breaks rather than printing mid-trend — and the leg must leave a Fair Value Gap behind it. The gap is the displacement evidence: a leg that never gaps did not really displace, and its block never registers. Only the order blocks that matter make the chart. A live block is the body of its origin candle, open to close. When price closes through it the block fails and flips into a Breaker — and a breaker takes the full candle, wick to wick: the displacement behind it is already proven, so the whole candle becomes the array. A percentage-fill mitigation decider governs each array: once price trades a chosen depth into it from the side it is approached from (default 50%, consequent encroachment), the array is mitigated — either faded and kept (dotted, faint, check mark) or removed, whichever you set. A largest-array-wins declutter keeps overlapping zones from stacking.
5 · SMT Divergence. A liquidity-sweep read against a correlated symbol — auto-paired (NQ to ES, ES to NQ, YM to ES, GC to SI, and their micros) or a symbol you set. When your chart takes a swing level but the peer holds its aligned level and refuses to follow, the move lacks participation: a SMT is drawn from the swept level to the sweep. Pooled swings age out after a set number of bars, so a divergence is only ever drawn between swings that were still contemporaries — never between two that are days apart.
6 · Dashboard. A pure confluence read-out of the state each module captures — the ICT bias, and the current draw on liquidity : the nearest unmitigated high above (the resting buyside) and the nearest unmitigated low below (the resting sellside), each named with its distance — where price is being drawn to, read straight from the level engine. When liquidity is taken, the sweep row names the level that was raided — PDH, PDL, a session high or low — rather than a generic flag. Below that, whichever confluences are live (a OB or Breaker tap, a SMT), the killzone, the Midnight Open and the dealing-range position — every row a decision input, nothing that is merely inventory. It reports context; the trade is left to you, and nothing fires.
Visual grammar
Order blocks and breakers draw as levels by default, the way a block is actually read: the proximal edge — the price that gets traded — a solid line in the direction colour, the distal edge dotted, the consequent encroachment dotted grey between them, and a small tag at the right end that renames itself from OB to Breaker when the block flips. Prefer the block as a region instead and one setting draws it as a see-through zone with a hard border. A live gap zone is solid with its label travelling at the live edge; once a zone is mitigated to the chosen fill depth it turns dotted, fades, and its name folds into the zone itself — a faint "✓ name" carried inside the frozen box, quiet by design, so worked zones read as history at a glance. A liquidity level extends while it rests and freezes into a dotted line the moment it is taken — full-strength black by default, with an optional dim. Purple marks bullish arrays, magenta bearish; liquidity and levels are neutral. Nearby level labels merge so the chart stays readable, and objects project a few bars past the last candle so labels sit in clear space, never on price.
Method & repainting
Every detection path — liquidity capture, PD-array formation, mitigation and SMT — evaluates only on closed bars, so nothing is drawn, moved or removed on the strength of an unfinished candle. Once a level, zone or SMT line is on the chart it stays where it was placed. Completed period levels fix at the rollover, and session extremes are read from the closed intrabars of the session source timeframe.
Two things update live, by design. The dashboard reads current price, so the bias and draw rows move during the forming candle and settle at its close; and the right-edge labels re-merge as levels are added or taken. Neither creates or moves a drawn object.
Swing-based features — the order-block structure break and SMT — depend on pivots, which confirm a set number of bars after the swing itself forms. That is a fixed delay, not a revision: a pivot never moves once printed. Session levels also rely on lower-timeframe data, which is available for a limited span of recent history, so they thin out far back on the chart.
Settings
Session timezone, session windows and the session source timeframe, per-array sensitivities and the mitigation decider, block drawing mode (levels or zone), the SMT peer and liquidity memory, and full dashboard controls are all exposed as inputs.
Disclaimer
This is a decision-support tool for discretionary ICT trading. It is not financial advice, and no market's past behaviour is indicative of future results. 指标

Stock Earnings TrackerThis indicator tracks a stock's earnings history directly on the chart. Each time an earnings report is detected, it calculates the price reaction over a defined window, keeps a running record of past earnings reactions, and displays a live statistics table summarizing win rate, average return, sample size, and days elapsed since the last report.
How it works
Earnings detection: The script pulls TradingView's built-in earnings calendar data (via the ESD: ticker syntax) to identify the exact bar on which a company reported earnings. This only works on symbols of type stock or dr (depositary receipts); other instrument types will show no data.
Pre-earnings window return: On each detected earnings day, the script measures the percentage change from the prior day's open to the earnings day's close. This approximates the market's immediate reaction to the report.
Historical sample tracking: Each new earnings-day return is stored in an array (default: last 20 events, adjustable up to 100). Older samples are dropped once the limit is reached, so statistics reflect a rolling recent history rather than the stock's entire earnings record.
Win rate / average return: From the stored sample set, the script calculates the percentage of earnings events with a positive reaction ("win rate") and the average reaction size across all stored samples.
Days since labels: A label is placed at each earnings event; when the next earnings event occurs, the prior label is updated to show how many calendar days elapsed between the two reports.
Visual cues: Labels and a subtle background tint are color-graded (green/red/gray) based on the magnitude of the earnings-day return, and a table in the top-right corner summarizes the current statistics in real time.
Inputs
Show Days Since Last Earnings Labels—toggles the days-since labeling feature on/off.
Max Historical Earnings Samples to Track—controls how many past earnings events (5–100) are retained for the win-rate/average-return calculations.
Limitations
Only functions on stocks and depositary receipts with available earnings-calendar data; results will show "N/A" elsewhere.
Statistics are based on a limited, rolling sample and may carry low statistical significance for stocks with infrequent or sparse earnings history.
The "pre-earnings window" return captures open-to-close price action around the report, not the full multi-day drift some stocks exhibit after earnings.
Recommended Usage: Weekly Timeframe
While the script will run on any timeframe, it's best suited for the WEEKLY chart:
Matches earnings cadence. Public companies report roughly once per quarter (~13 weeks apart). On a daily chart, that's 60+ bars of space between each earnings label—the weekly chart compresses this into a handful of bars, making the historical pattern of reactions much easier to read at a glance.
Cleaner statistics table context. Because max_samples defaults to a rolling window of past events, viewing on weekly lets a 20-sample lookback span roughly 5 years of earnings history in a single, uncluttered view—versus a daily chart where the same 20 samples are scattered across a much wider, harder-to-navigate range.
Less label overlap. The "Pre-E Window" and "Days Since" labels are less likely to visually collide with price action or with each other when spaced out across weekly bars.
Disclaimer
This script is provided for informational and educational purposes only. Past earnings-day performance shown by this indicator does not predict or guarantee future results. It is not financial advice and should not be used as the sole basis for any trading decision. Always combine with your own analysis and risk management.
This description was written with the assistance of AI and reviewed by the author before publishing.
Original code © patinum, licensed under the Mozilla Public License 2.0. 指标

VWAP MTF Adaptive Levels
VWAP MTF Adaptive Levels
DESCRIPTION
VWAP MTF Adaptive Levels is a multi-timeframe VWAP indicator designed to provide clear volume-weighted reference levels without covering the candles.
Instead of plotting complete VWAP curves across historical price action, the indicator displays the current levels as short horizontal lines positioned to the right of the latest candle. This keeps the chart clean while preserving the most important VWAP information.
MAIN FEATURES
• Adaptive main VWAP based on the active chart timeframe
• Daily, Weekly and Monthly VWAP reference levels
• Optional ±1, ±2 and ±3 standard-deviation levels
• Short horizontal lines displayed only on the right side
• Exact price displayed next to every level
• BULL/BEAR dashboard
• Fully customizable colors, line width, line length and text size
• Adjustable distance from the latest candle
• Built-in crossover alerts
• America/New_York timezone with automatic daylight-saving adjustment
AUTO ANCHOR MODE
When “Auto” is selected, the VWAP anchor changes automatically:
• Intraday charts → Daily VWAP
• Daily chart → Monthly VWAP
• Weekly chart → Quarterly VWAP
• Monthly chart → Yearly VWAP
BULL/BEAR DASHBOARD
The dashboard provides a simple directional context:
• BULL: price is above the main VWAP
• BEAR: price is below the main VWAP
The dashboard also displays the active chart timeframe, current VWAP anchor and main VWAP price.
The BULL/BEAR status is a market-bias filter and should not be considered a standalone entry signal.
CUSTOMIZATION
Users can independently configure:
• Visible VWAP levels
• Standard-deviation multipliers
• Distance from the latest candle
• Horizontal-line length and thickness
• Solid, dashed or dotted line style
• Price-label size
• Dashboard position and size
• BULL and BEAR colors
• Individual colors for every VWAP level
NOTES
The script does not use request.security() lookahead logic. VWAP values on the open candle update in real time as price and volume change; confirmed historical values remain stable after the candle closes.
VWAP requires volume information. On Forex and CFD symbols, results can vary between brokers because these markets may use tick volume instead of centralized exchange volume.
This indicator was created primarily for XAUUSD analysis, but it can be used on other instruments and timeframes that provide volume data.
Suggested workflow:
• H4/H1 for directional context
• M15/M5 for execution analysis
• Combine VWAP with market structure, liquidity sweeps, PDH/PDL, PWH/PWL, FVG and confirmed break/retest setups
DISCLAIMER
This indicator is intended for educational and analytical purposes only. It does not constitute financial advice or guarantee future results. Always apply independent analysis and appropriate risk management.
TAGS
VWAP, Multi-Timeframe, MTF, Volume, Standard Deviation, XAUUSD, Gold, Intraday, Dashboard, Support and Resistance
指标

GoldAlgo NewsGoldAlgo News marks the high-impact US economic releases that move Gold (XAUUSD) — directly on your chart, with a no-trade window around each one and a plain-language note on what to expect.
THE EVENTS
1. NFP — Non-Farm Payrolls. Computed automatically as the first Friday of every month, 8:30 ET. The single most violent recurring move on gold: a two-way spike on release, widened spreads, and then the real move. Stand aside and let the first M5 candle close.
2. CPI — the US inflation report, 8:30 ET. Dates loaded from the official BLS release calendar. Hot inflation = USD up, gold down; cool inflation = gold up. The fastest repricing of all — never hold a position into it.
3. FOMC — the Fed rate decision, 14:00 ET. Dates loaded from the Fed's published meeting calendar. Two waves: the statement at the release, then the press conference 30 minutes later — the second often reverses the first. The widest no-trade window of the month.
Release times are stored in US Eastern time and converted to UTC with proper daylight-saving handling, so the marks stay accurate all year round.
HOW IT WORKS
Around every enabled event the chart background shades red for a configurable blackout window (default: 30 minutes before to 60 minutes after). Upcoming events are drawn ahead of price as dashed vertical lines with a labeled marker — hover the label to read the full "what to expect" note for that release.
ON-CHART DASHBOARD
A live panel shows the current status (clear to trade, or which news window you are inside), the next red event with its date, time and a live countdown, and a one-line expectation for it.
ALERTS
An alert condition fires the moment a news blackout window opens, so you can flatten or stand aside before the release — straight to your phone.
SETTINGS
Each event type on/off, how many upcoming events to draw, the blackout window before and after each release, and full color customization.
IMPORTANT
GoldAlgo News works only on Gold (XAUUSD). On any other symbol it displays a notice instead of drawings. Event dates are taken from the official published calendars; agencies occasionally reschedule a release, so always confirm against an economic calendar before trading. This is an educational analysis tool: it does not predict the market and it is not financial advice. Always use proper risk management and never risk capital you cannot afford to lose. 指标

指标

HashCost - Bitcoin Mining CostHashCost estimates the electricity or hosting energy cost of producing one Bitcoin using a user-defined mining fleet.
Unlike a generic network-wide mining-cost model, HashCost is built around the miner's own operating history. Users enter dated fleet configurations containing effective hashrate, average paid power, electricity cost, and pool fee. Each configuration takes effect on its specified date, while previous configurations remain intact, allowing the plotted production-cost history to reflect changes in the user's mining setup over time.
HOW IT WORKS
HashCost combines the active fleet configuration with Bitcoin network difficulty and block subsidy data to estimate the expected BTC production per day.
Production Cost = Daily Paid Energy Cost / Expected Net BTC per Day
The model uses:
- Effective hashrate in TH/s
- Average paid power in kW
- Electricity or hosting-energy rate in USD/kWh
- Pool fee
- Bitcoin network difficulty
- Bitcoin block subsidy
Effective hashrate and paid power are entered as 24-hour averages. This makes it possible to represent miners who operate for only part of each day.
For example, a 300 TH/s miner consuming 6 kW for 8 hours per day can be represented as:
100 TH/s effective hashrate
2 kW average paid power
FLEET HISTORY
Each line represents one complete mining configuration:
YYYY-MM-DD | Effective TH/s | Avg Paid kW | $/kWh | Pool %
Example:
2026-01-01 | 1000 | 20 | 0.05 | 1
Add a new line whenever the mining setup changes. Keep previous lines in chronological order from oldest to newest.
HashCost preserves those historical configurations rather than retroactively applying the latest settings to the entire chart.
NETWORK DATA
Bitcoin difficulty and block-height data are sourced from Glassnode's crypto metrics on TradingView.
HashCost checks the freshness of the underlying network data and fails closed if the selected source becomes stale rather than silently continuing to calculate with outdated forward-filled values.
INFO PANEL
BTC Cost
Estimated energy production cost of one BTC.
BTC vs Cost
Percentage difference between current BTC market price and estimated production cost.
BTC / Day
Expected net BTC production per day after the entered pool fee.
Cost / Day
Average paid electricity or hosting energy cost per day.
Eff. Hashrate
Effective 24-hour mining hashrate.
SCOPE AND LIMITATIONS
HashCost is an electricity/hosting-energy operating-cost model. It is not an all-in accounting cost model.
It does not include hardware purchase cost, depreciation, repairs or maintenance, financing, taxes, labor, rent, or other expenses unless already incorporated into the entered energy rate.
Transaction-fee revenue is excluded.
HashCost is intended for standard 1D Bitcoin charts quoted in USD or supported USD-like markets such as USDT, USDC, and FDUSD.
It is a mining production-cost analysis tool, not a trading signal or price prediction. 指标

Precision Volume Profile [AxeAlgo]OVERVIEW
Precision Volume Profile is a native Pine Script volume
profile tool: it rebuilds a full price-by-volume histogram for whatever
range you anchor it to — the visible chart, a fixed bar count, the
current day, week, month, or a custom trading session — and derives the
Point of Control (POC), Value Area High/Low (VAH/VAL), a Prior Period
Value Area with open-type and POC-migration classification, and a
session VWAP with standard-deviation bands, all from the same underlying
bar history.
This is the classic Market Profile / Volume Profile toolkit used to
judge where the market has actually traded the most volume — not just
where price is right now — and how today's activity compares to the
period before it. Everything here runs natively on your own chart data;
there are no external requests, no repainting of confirmed history, and
no hidden calculations.
This script is free and open-source, published so the full methodology
described below is verifiable directly in the source code.
============================================================
HOW IT WORKS
============================================================
Volume Profile Histogram
----------------------------
For the selected range, price is divided into rows (automatically sized
to the range, or set manually) and every historical bar's volume is
distributed across the rows its high-low span touches. Each bar's
volume is split into an estimated buy side and sell side based on where
that bar's close sits between its low and high — a bar that closed near
its high is treated as more buy-weighted, one that closed near its low
as more sell-weighted. The row with the most total volume becomes the
POC; rows are colored on a gradient between two configurable colors
based on that estimated buy/sell split, with opacity scaled to each
row's relative strength versus the POC.
Value Area
----------------------------
The Value Area is expanded outward from the POC two rows at a time —
comparing the volume of the next pair of rows above versus the next
pair below and adding whichever pair holds more volume — until the
accumulated volume reaches the configured Value Area percentage (70% by
default, the standard Market Profile convention). This is the same
textbook two-row-pair expansion method used for both the live profile
and the Prior Period snapshot below, so the two stay directly
comparable.
Anchor Modes
----------------------------
Six ways to define what range the profile is built from: Visible Range
(whatever's currently on screen), Fixed Bars (a set lookback), Day,
Week, Month, or a fully custom Session (configurable start/end time and
timezone, e.g. 0930-1600 for US regular trading hours). A dotted
vertical line marks exactly where the current profile's lookback
begins whenever that boundary isn't simply the edge of your screen.
Prior Period Value Area, Open Type & POC Migration
----------------------------------------------------
At each period boundary (Day or Week, configurable), the script
snapshots the period that just closed: its Value Area is drawn as a
dashed box extending forward, today's open is classified as Above,
Below, or Inside that prior value, and the new POC is compared against
the previous one to report whether it's migrating up, down, or holding
flat. This is the standard "open-type" read used to gauge whether a
session is likely to be rotational or trending.
Session VWAP & Standard Deviation Bands
------------------------------------------
A running volume-weighted average price with up to two configurable
standard-deviation bands on each side, calculated with the same
volume-weighted variance formula as TradingView's own VWAP tool. It can
reset either at calendar midnight or at your custom session's open
time — the same session window used by the Session anchor mode above,
so the two can be kept in sync.
Stats Panel
----------------------------
An optional on-chart table summarizing the active anchor mode, bar/row
count, POC, VAH/VAL, Value Area width, estimated buy/sell split and
delta, total volume, open type, POC migration, and current VWAP —
everything the script computes, in one place, without needing to
hover over individual lines.
Alerts
----------------------------
Two alert conditions: price crossing the POC, and price entering or
exiting the Value Area.
============================================================
ACCURACY NOTE — HOW BUY/SELL VOLUME IS ESTIMATED
============================================================
Pine Script does not have access to real trade-by-trade tape or
bid/ask data on standard bars, so no volume profile indicator can
measure "true" buy versus sell volume directly. This script — like
essentially every volume profile tool on TradingView — estimates it
from each bar's own OHLC: where the close sits between the low and the
high. This is a widely used, reasonable proxy, but it is an estimate,
not measured order flow. Treat the buy/sell split and Delta reading as
directional context, not a precise execution metric.
============================================================
HOW TO USE IT
============================================================
Add the indicator, pick an Anchor mode that matches how you trade
(Visible Range for manual exploration, Day/Week/Session for a
consistent recurring reference), and set the Value Area percentage if
you want something other than the 70% default. Every input has an
in-editor tooltip explaining exactly what it changes. The Prior Period
panel rows (Open Type, POC Migration) are most useful checked once at
the start of a session; the POC/VAH/VAL lines and histogram are
intended as a persistent reference for the rest of the period.
============================================================
REPAINTING & REAL-TIME BEHAVIOR
============================================================
The profile, its lines, and the stats panel are only (re)computed on
the most recent bar (barstate.islast) — not on every historical bar —
for performance, and are cleared and redrawn from scratch each time
they update. In Visible Range or Fixed Bars mode this means the profile
legitimately changes as you scroll, zoom, or as new bars form — that's
the tool responding to a different input range, not repainting of a
fixed historical value. In Day/Week/Month/Session mode, once a period
has closed its POC, VAH, and VAL are fixed and do not change on
subsequent reloads; only the currently forming period's profile updates
live as new bars print. The Prior Period Value Area snapshot is
computed once, at the moment its period closes, and is never
recalculated afterward.
============================================================
LIMITATIONS — PLEASE READ
============================================================
- Buy/sell volume is an OHLC-based estimate, not real tape data (see
the Accuracy Note above).
- The Value Area expansion is a discrete two-row-pair algorithm; on
very coarse row counts it can land a percentage point or two away
from the exact target rather than hitting it precisely.
- "Max Bars Stored" caps how much history is kept in memory for
performance; extremely long Fixed Bars or Visible Range lookbacks on
very low timeframes can exceed it and get truncated.
- The custom Session anchor and VWAP session-open reset depend on the
Session Time and Timezone inputs actually matching your instrument's
real trading session — mismatched inputs will produce a
technically-correct but practically meaningless boundary.
- This is a discretionary analysis tool intended to support your own
read of the market, not a mechanical, guaranteed-signal system.
============================================================
RISK DISCLAIMER
============================================================
This script is provided for educational and informational purposes
only. It is not financial advice, and it is not a recommendation to buy
or sell any security or instrument. Trading and investing involve
substantial risk of loss and are not suitable for every investor. Past
performance is not indicative of future results. Always do your own
research and consider consulting a licensed financial advisor before
making trading decisions. Use this indicator, and any alerts it
generates, entirely at your own risk.
============================================================
ORIGINALITY
============================================================
This is original work: the row-building and Value Area expansion
algorithms, the Prior Period snapshot and open-type/migration logic,
the session-anchor handling, and the visual design are all written
from scratch for this script. It is published free and open-source so
the full methodology described above is verifiable directly in the
source code.
指标

Ultimate Bull Score - Multi-Factor Bullish Stock ScannerUltimate Bull Score is a multi-factor technical analysis indicator designed to measure the overall bullish strength of a stock using a single 0–100 Bull Score.
Rather than relying on one indicator or chart pattern, Ultimate Bull Score evaluates multiple categories of bullish evidence simultaneously, including:
Trend Strength — moving-average alignment, price position, and trend direction
Momentum & Oscillators — RSI, MACD, Stochastic, Stochastic RSI, CCI, MFI, ROC, Williams %R, PPO, TSI, Ultimate Oscillator, Chaikin Money Flow, Aroon, and related momentum conditions
Volume & Accumulation — relative volume, OBV behavior, and buying-volume characteristics
Bullish Chart Patterns — searches for structures including Bull Flags, Cup & Handle, Ascending Triangles, Falling Wedges, Double Bottoms, Flat Bases, Rounded Bottoms, VCP-style contractions, volatility coils, and breakout/retest setups
Price Structure — higher highs, higher lows, resistance pressure, breakouts, support behavior, and proximity to 52-week highs
Analyst Sentiment — when analyst data is available, incorporates consensus recommendations and potential upside to the average analyst price target
These factors are combined into one easy-to-read Bull Score from 0 to 100.
Score Guide
90–100 — Excellent Bullish Setup
Strong agreement across multiple bullish factors.
75–89 — Strong Bullish Setup
A high-quality setup with substantial bullish confirmation.
60–74 — Bullish
Positive overall conditions, although some confirmation may still be missing.
Below 60 — Weak / Incomplete Setup
Bullish factors are limited or conflicting.
The dashboard breaks the total score into its individual components, making it possible to see whether a stock's strength is coming from trend, oscillators, volume, chart patterns, price structure, or analyst sentiment.
Ultimate Bull Score is also designed for use with Pine Screener, exposing numeric outputs that can be filtered and sorted to help identify the strongest setups in a watchlist or stock universe.
Important: This indicator is intended as a research and screening tool. A high Bull Score does not guarantee that a security will rise. Technical conditions can change rapidly, and the indicator should be used alongside appropriate risk management and independent research. 指标

Earnings Overview & Valuation ToolkitEarnings Overview & Valuation Toolkit
Understanding how corporate earnings impact a stock’s price is one of the most critical challenges for stock traders and investors. The Earnings Overview & Valuation Toolkit is a comprehensive, institutional-grade analysis suite designed to combine macro fundamental valuation, historical announcement reaction patterns, and forward-looking volatility forecasting into a single, unified indicator.
By utilizing the latest Pine Script® v6 force_overlay capabilities, this toolkit runs in a separate sub-panel to display clean percentage-based metrics (like earnings surprises and price reactions), while simultaneously overlaying price-based valuation bands, volatility cones, and a statistical dashboard directly onto the main price chart.
Key Features & Components
Dynamic P/E Valuation Bands (Main Chart Overlay) Instead of static valuation lines, this component tracks the company's Trailing Twelve Month (TTM) EPS and projects historical valuation multiples onto the chart. It calculates the 10th percentile (Undervalued), 50th percentile (Median/Fair Value), and 90th percentile (Overvalued) P/E ratios over a rolling lookback window (default: 500 bars). The zones are color-coded in soft green and red to help you immediately identify when a stock like
NASDAQ:AAPL or NASDAQ:NVDA is entering a historical discount or premium zone.
Earnings Surprise & Price Reaction Tracker (Sub-Pane) This panel analyzes analyst bias and the subsequent market response.
Earnings Surprise Column : Plots the percentage beat (green) or miss (red) compared to consensus analyst estimates.
Reaction Dot : Calculates the percentage price change over a configurable window (default: 5 bars) post-earnings. A negative offset is applied so that this dot aligns directly above or below the earnings column on the day of the release, helping you visually correlate the surprise with the subsequent momentum.
Catalyst Countdown & Volatility Predictor (Main Chart Overlay) To protect you from binary earnings day risk, this tool pulls the upcoming expected earnings date ( earnings.future_time ) and projects a dynamic Volatility Cone directly onto the chart starting from the last candle. The boundaries of the cone represent the expected trading range on the release day, calculated using the absolute average return from the last 8 earnings releases.
Unified Stats Dashboard (Main Chart Table) A clean, real-time table anchored to the top-right of your main chart that consolidates:
Trailing Twelve Months (TTM) EPS & Latest Reported EPS.
Current P/E multiple relative to price.
Dynamic Valuation Status ("Undervalued", "Fair Value", "Overvalued").
Average Earnings Day Move % and the Volatility Multiplier compared to standard daily ATR (e.g. "2.5x normal daily volatility").
Consensus Analyst Estimates for the next quarter (EPS and formatted Revenue).
Next Earnings Release Date and countdown (days/hours).
How to Use this Toolkit Profitably
The Post-Earnings Announcement Drift (PEAD) Strategy Scan for stocks that have reported earnings in the last 1 to 5 days. Look for a positive surprise (green column) paired with a positive price reaction (green dot). If the stock is currently trading below its orange Median PE Band , this confirms institutional buying momentum with a margin of safety. Hold for 2 to 4 weeks, placing your stop-loss below the low of the earnings day candle.
The Pre-Earnings Volatility Ride Scan for stocks with an upcoming earnings countdown of 7 to 10 days. Verify they have a strong track record of beating earnings (high 8-quarter average surprise) and a high Volatility Multiplier (e.g. >1.5x normal ATR). Buy the Call/Put option contract expiring the week after earnings to capture rising Implied Volatility (IV) and price run-up. Crucial Rule: Sell to close the contract the afternoon before the release to capture the maximum IV peak and avoid the overnight gap and IV crush.
The Macro Value Rebound For long-term investors, monitor your watchlist for high-quality, profitable companies whose stock prices fall to or below the green Undervalued Band . Wait for a technical reversal or a positive earnings reaction dot to confirm a floor, and buy shares or long-dated LEAP options to ride the reversion back to the orange Median and red Overvalued bands.
Indicator Inputs & Customization
The toolkit is designed to be highly customizable to fit your trading style: Reaction Window (Bars) : Change the length of time used to measure the post-earnings price impact. Max Surprise Clamp % : Caps extreme surprise % columns to keep the sub-pane scale readable. P/E Lookback (Bars) : Adjust the length of history used to compute valuation percentiles. Show Volatility Cone : Toggle the dynamic future projection lines and box on/off. Color Customization : Easily match the bands, fills, and columns to your light or dark chart theme.
Disclaimer: Corporate earnings data is subject to reporting schedules and analyst revisions. Always practice proper risk management and size your option plays according to your account size. Past performance does not guarantee future results. 指标

Seasonality Calculation & StatisticsSeasonality Calculation & Statistics
The Seasonality Calculation & Statistics indicator is a quantitative tool designed to backtest, track, and visually analyze specific seasonal recurring calendar patterns across historical data directly on the daily timeframe
It eliminates guesswork by isolating user-defined date windows (e.g., May 1 to May 15), calculating historical performance metrics, projecting upcoming seasonal cycles, and providing detailed table dashboards
Key Features
Custom Seasonal Windows: Define exact start and end dates (Day/Month) and evaluate both Long and Short seasonal directions
Smart Vertical Timeline Markers: Clean visual boundaries marking every historical cycle and projecting upcoming future opportunities
Shifted Exit Boundary for Visual Clarity: The vertical exit line is deliberately placed one trading day to the right ($t + 1$), cleanly enclosing the entire holding period so you can analyze every historical price bar inside the pattern without overlapping visual obstruction
Three Built-in Statistical Tables: Comprehensive performance summaries, year-by-year logs, and multi-period lookback comparisons
SQN & Risk Metrics: Real-time calculation of System Quality Number (SQN), Win Rate, Average Return, Average Profit, and Maximum/Average Drawdown
Visual Chart Elements
Entry Line & Label: A vertical line (default lime) placed on the entry candle close
Shifted Exit Line & Label: A vertical boundary line (default red) shifted one trading day to the right of the exit candle, framing the trade window perfectly for post-trade review
Result Badges: Clean floating labels displaying the percentage return and maximum intra-trade drawdown for each individual year
Future Projections: Forward-projected dashed lines plotted into empty chart space to highlight when the next seasonal window opens and closes
Dashboard Tables
1. Summary Table: Displays overall strategy performance across the entire selected backtest horizon
Direction (Long / Short)
Calendar Window & Trade Duration
Winning Trades ratio and Win Rate percentage
Average Return and Average Winning Trade Profit
Average Drawdown and Maximum Intra-trade Drawdown
System Quality Number (SQN) to evaluate statistical edge
2. Yearly Table: Provides a granular, year-by-year historical audit containing
Specific trading cycle year
Executed start and end dates
Trade Return (%)
Trade Maximum Drawdown (%)
3. Period Summary Table: Breaks down win rates across customizable historical segments (e.g., last 3, 5, 10, or 15 years) to help identify if a seasonal pattern is strengthening, decaying, or completely cooked in modern market regime
How to Use
Apply the indicator to any asset on the Daily (1D) timeframe
Set your desired seasonal window via Start Day / Start Month and End Day / End Month
Select Long or Short bias
Adjust the lookback starting years to focus on specific economic cycles
Use the projected lines to prepare for upcoming seasonal setups ahead of time
指标

RAMO Triangle & Wedge Family Pro V1.2.4.2 - MTF Bias, Alerts & TRAMO Triangle & Wedge Family Pro V1.2.4.2 is an advanced pattern-detection indicator designed to identify, classify, and monitor triangle and wedge formations with multi-timeframe context.
The script currently supports:
Ascending Triangle
Descending Triangle
Symmetrical Triangle
Rising Wedge
Falling Wedge
The detection engine is based on confirmed pivot structures, multi-candidate boundary analysis, convergence, touch quality, containment, pattern duration, apex position, and structural validation. Instead of forcing every consolidation into a pattern, the system attempts to reject weak or inconsistent geometry.
For ascending and descending triangles, horizontal support/resistance areas are additionally validated using pivot clustering rather than relying only on trendline slope.
For symmetrical triangles, direction is intentionally kept neutral before a confirmed breakout. A separate multi-timeframe RSI and volume bias system evaluates larger timeframes to provide a directional preference such as LONG or SHORT bias without treating that bias as a confirmed trade signal. The actual direction is still determined by a confirmed breakout.
The indicator also includes a parent/child timeframe structure check. Lower-timeframe formations can be compared with larger-timeframe structures to reduce conflicting classifications when both charts are showing the same broader pattern.
Breakout and Retest Logic
Breakouts are evaluated using candle closes rather than wick-only movements. After a confirmed breakout, the indicator can track a possible retest and update the formation state accordingly.
The panel displays:
Pattern type
Pattern stage
Confidence score
Direction / MTF bias
Entry reference
Alarm level
Stop reference
Target
Touch count / formation progress
Pattern detected on another relevant timeframe
For symmetrical triangles, both possible upside and downside targets may be displayed before the breakout. Once direction is confirmed, the active target is updated accordingly.
Wedge Direction Logic
Rising Wedge: bearish / SHORT bias after downside confirmation.
Falling Wedge: bullish / LONG bias after upside confirmation.
The wedge engine operates separately from the triangle-selection engine so that wedge candidates do not distort or replace otherwise valid triangle geometry.
Alerts
The script provides alert conditions for:
LONG breakout
SHORT breakout
New triangle or wedge structure
Rising wedge detection
Falling wedge detection
Retest
Failed breakout
The displayed alarm level is intended to show the price area where the relevant breakout or retest condition becomes important.
Important Disclaimer
This indicator is provided for educational, informational, and technical-analysis purposes only. It does not constitute financial or investment advice and is not a recommendation to buy, sell, or hold any financial asset.
Pattern detection, RSI/volume bias, entry references, alarm levels, stop levels, breakout conditions, and projected targets are technical calculations only and may fail or produce false signals. Historical pattern behavior does not guarantee future results.
Always perform your own research and use appropriate risk management before making any trading or investment decision.
Comments and suggestions for improving the indicator are always welcome. 指标

RAMO Cup Family Pro V3.8.8 - Smart Handle and Forecast TraceRAMO CUP FAMILY PRO V3.8.8 is an advanced chart-pattern detection tool designed specifically for identifying and monitoring cup-based price structures in real time.
This updated version focuses on structural pattern recognition rather than simple curve matching. It evaluates price geometry, rim structure, depth, recovery, symmetry, rounded-bottom characteristics, handle behavior, breakout conditions, and pattern development to distinguish meaningful formations from random U-shaped price movements.
The indicator can identify Cup, Inverse Cup, Cup with Handle, Inverse Cup with Handle, and developing cup structures. It is designed to recognize formations before full completion when sufficient structural evidence is available, while continuously reassessing the pattern as new price data develops.
SMART HANDLE analysis evaluates the handle separately from the main cup structure. Handle position, depth, geometry, recovery behavior, pivot relationship, and price contraction are considered when determining whether a valid handle is developing. An invalid or failed handle does not automatically invalidate the underlying cup structure.
FORECAST TRACE provides a visual projection of the developing structure to help traders understand how the current formation may evolve. This projection is a structural visualization only and does not predict future prices.
The indicator also provides a compact analytical panel including the detected formation, development stage, confidence score, neckline/pivot level, potential entry area, invalidation/stop reference, and calculated pattern targets.
The system is designed with a STRICT / NO GUESS philosophy: if the structural requirements are not sufficiently satisfied, the indicator should avoid forcing a pattern classification.
This version has been updated and refined for improved structural detection, cleaner visualization, better handle classification, and more consistent pattern tracking across cryptocurrency charts.
Important Disclaimer:
This indicator is provided for educational, informational, and technical-analysis purposes only. It does not constitute financial or investment advice, a recommendation to buy or sell any asset, or a guarantee of future market performance. Pattern recognition, projected traces, entry levels, stop levels, and price targets are mathematical/technical references and may fail. Always perform your own research and apply appropriate risk management before making any trading or investment decision. 指标

Flow Sate CVD [by Oberlunar]Flow Sate CVD framework combining cumulative volume delta gap and fair-value gap geometry with an adaptive order-flow and market-state model. It maps Absorption, AAA and Exhaustion structures to price while continuously tracking Flow, Response, Structure and Regime states.
The indicator detects two CVD discontinuity models across configurable timeframes: two-bar TimeFixed CVD gaps and same-anchor three-bar CVD FVGs. Detected events are projected onto their corresponding price zones, with opacity determined solely by the relative magnitude of the CVD gap.
An adaptive classifier evaluates signed CVD pressure, flow persistence, price-impact efficiency, resistance, impact decay, ATR regime, EMA fan structure, multi-scale TRIX/RSI momentum, liquidity and price/CVD divergence. Internal thresholds and fast/mid/slow weights adapt to the observed market state automatically.
The resulting structures are classified as Absorption, AAA (Absorption-Acceptance-Aggression) or Exhaustion. Absorption and AAA create persistent, directionally polarised price zones; Exhaustion is displayed as a point event.
Four continuous lanes summarise the underlying model:
FLOW: directional pressure and persistence.
RESPONSE: The Drive, Resistance or Decay pattern.
STRUCTURE: simple EMA/TRIX/RSI alignment adjusted for price/CVD divergence.
REGIME: liquidity and volatility environment.
A Flow State meter provides the same four states in compact form. A separate composite combines FLOW, RESPONSE and STRUCTURE, while REGIME adjusts confidence. Its current state is displayed on the price chart through a colour-coded EMA(7): aqua for bullish consensus, red for bearish consensus and grey when the adaptive threshold is not reached.
The UK, US1, and US2 liquidity windows are shown with adaptive session backgrounds and opening labels and can be independently filtered for structural events.
The script uses confirmed historical information with barmerge.lookahead_off for its MTF requests and does not intentionally access future data.
How to Use
Set TF1 for the displayed CVD and optionally enable additional MTF references. Use TimeFixed GAP CVD, CVD FVG, or both. Read the four lanes and Flow State meter as contextual diagnostics; projected Abs/AAA zones identify persistent price areas associated with classified CVD events, while Exhaustion circles mark decay events.
The EMA(7) is a compact visualisation of the composite state: increasing aqua intensity indicates stronger bullish agreement across the model, increasing red intensity indicates stronger bearish agreement, and grey indicates insufficient consensus.
Some specifications
CVD is derived from the volume data available to TradingView and is not equivalent to full limit-order-book order flow. The FLOW component is therefore a CVD-derived signed-flow proxy, not true exchange-level OFI. Classification is contextual and descriptive; Absorption, AAA, Exhaustion and composite states do not imply future price outcomes. MTF structures may also become available later than lower-timeframe observations because higher-timeframe information must develop and be confirmed.
Enjoy,
Oberlunar 👁★ 指标

FRFFlat Range Finder (FRF)
FRF is a high-performance analysis tool developed to detect consolidation (sideways movement) zones in the market.
About FRF Drawing
Purpose and Usage:
The primary purpose of the FRF drawing is to objectively identify zones where the price is compressed within a channel without forming a significant trend over a certain period. This channel allows you to visualize the "uncertain" or "rest" phase of the market.
Update Mechanism:
The FRF drawing periodically scans within the "Min FRF Search Length" and "MAX FRF Search Length" range defined by the system. At each new bar close, the most appropriate channel length is recalculated using the "Channel Fixed R" coefficient. If a stronger consolidation structure forms in the current data, the channel automatically updates itself to adapt to this new data.
Fibonacci & Risk/Reward Box
This feature helps you determine entry, target, and stop-loss levels by using the boundaries of the detected channel.
Why and How to Use It?
Why: In moments of market uncertainty, it provides a disciplined Risk/Reward management based on the channel's own internal dynamics (statistical deviations) rather than arbitrary levels.
How: Activate the box by selecting "Long" or "Short" from the "Position Mode" setting. The box uses the 0.236 Fibonacci ratio as the entry level. The badges on the box dynamically display the current Open P&L status and the Risk/Reward Ratio at the end of the channel.
⚠️ WARNING: THE FIBONACCI & RISK BOX IS AUTOMATICALLY RECALCULATED UPON EVERY NEW CHANNEL DETECTION OR CHANGE IN PRICE DATA. PREVIOUS BOXES AND LABELS ARE DELETED AND REDRAWN ACCORDING TO THE MOST CURRENT CHANNEL DATA. TO AVOID LOSING YOUR PREVIOUS TRADE ANALYSES, ENSURE YOU ARE TRACKING THE LATEST BOX DATA.
Technical Specifications of the Indicator
FRF is equipped with the following capabilities within the classic TradingView library:
MTF (Multi-Timeframe) Support: The indicator can process data from a different timeframe regardless of the current timeframe. You can select your desired TF by activating the Enable MTF option.
Dynamic Channel Fixed R Analysis: This is a statistical metric used to determine the strength of the consolidation. You can optimize how "flat" the channel should be using the Target Threshold <= this setting.
Breakout Alerts: When the upper or lower boundaries of the channel are broken by the body of a candle, the indicator triggers the alert() function to send you a notification.
Advanced Visualizations:
Debug Table: You can view the statistical data of the channel in real-time in the corner of your screen.
Channel Customization: You can fully adjust the channel line style, transparency, and fill colors according to your personal chart preferences.
Midline: You can display the middle baseline within the channel, allowing you to distinguish more clearly which half of the channel the price is dominant in.
Debugging: You can toggle the labels on the bars to understand the indicator's operational logic by using the Show Debug Label option.
This indicator is not a prediction tool, but a data-driven channel detection engine. 指标

指标

IST Trading SessionsSession ranges plotted in Indian Standard Time (UTC+5:30).
This is for traders trading forex in IST hours.
WHAT IT DRAWS
- A live box around each session's high and low, labelled inside the box
with the session name and its current range in dollars. No floating
labels cluttering the chart.
- Two dotted lines carrying the last completed session's high and low
forward, so you can see whether price is reacting to the Tokyo high or
the London low without scrolling back.
- Killzone shading over the first 90 minutes of the London and New York
opens.
- Previous day high and low.
- A summary table with each session's range in dollars and pips, and a
marker showing which session is currently live.
DEFAULT TIMES (IST)
Tokyo 05:30 – 14:30
London 12:30 – 21:30
New York 17:30 – 02:30
DAYLIGHT SAVING
India does not observe daylight saving, but London and New York do. The
defaults above are set for summer (BST / EDT), roughly mid-March to late
October. During winter, add one hour to the London and New York session
inputs. All three sessions are editable, so you can also set them to
whatever windows you actually trade.
KEEPING IT READABLE
Boxes are only drawn for the last N days, adjustable, which stops the
chart filling up on long scrollbacks. Carry-forward lines extend a set
number of bars and older ones are removed automatically. Background tint
is off by default; turn it on if you prefer shading over boxes.
NOTES
This is a visual reference tool. It generates no signals and makes no
suggestion about direction. Works on any intraday timeframe, though
session boxes are most useful on 5m to 1h. 指标

BitcoinOnChainWHAT IT IS
BitcoinOnChain reads the Bitcoin network rather than the price chart. It pulls six on-chain metrics from the Glassnode feeds on TradingView, scores each against its own recent history, and blends them into one line called ChainPulse, shown in MACD form with a composite line, a signal line, a histogram and an information table.
The purpose is context. Price shows what the market did; these metrics describe what the network did underneath it - who transacted, whether coins moved at a profit or a loss, whether miners stayed committed, whether new users arrived. When the two stories disagree, that disagreement is the thing worth seeing.
THE METHOD
Raw on-chain numbers are hard to read directly. Whether 654,000 active addresses is a lot depends entirely on the last few months, so nothing here is compared to a fixed level. Each metric is percentile ranked over its own trailing window, 90 periods by default, and mapped onto a scale from -100 to +100. Zero means the metric sits at its own median; positive is healthier than its recent norm, negative is weaker. That is what lets one setting work across different price regimes.
The six scores are blended using adjustable weights, defaulting to SOPR 25, Active Addresses 20, New Addresses 15, Transaction Fees 15, Hash Rate 15 and Sending Addresses 10. The blend is smoothed into ChainPulse; smoothing that again gives the signal line, and the gap between them is the histogram.
Two metrics are handled specially. SOPR is ranked on its distance from 1.0 rather than its level, because 1.0 is its natural breakeven. Sending Addresses is inverted before blending, since heavy spending is treated as distribution rather than health.
THE SIX METRICS
SOPR, the Spent Output Profit Ratio, shows whether coins moving on the network are spent at a profit or a loss. Above 1.0 the average coin sold for more than it was acquired for; below 1.0, for less. Sustained readings under 1.0 describe holders realising losses. It carries the heaviest default weight.
Active Addresses counts unique addresses transacting, a direct read on participation. Participation holding up while price falls is a different situation from participation falling with it.
New Addresses counts first-time addresses, standing in for the rate of fresh adoption.
Transaction Fees, in dollars, measures demand for limited block space. Fees rise when people will pay to transact and fall when the network is quiet.
Hash Rate measures the computing power securing the network, standing in for miner commitment.
Sending Addresses counts addresses spending Bitcoin, and is the one metric scored in reverse: heavy movement out is treated as distribution, so a high reading pushes the composite down.
READING THE CHART
The histogram is the gap between ChainPulse and its signal, drawn in four states: gold above zero, blue below, bright while the gap widens and faded while it narrows. The fade softens before the histogram crosses zero.
ChainPulse is the thick white line, the lime green line is its signal, and the gold line across the middle is zero. The shading between ChainPulse and zero grows more solid the further the composite sits from normal.
Circular dots mark crosses between ChainPulse and its signal and are deliberately restrictive: a dot prints only when both lines are still on the same side of zero and the histogram is expanding, so a cross up marks a recovery beginning from weak territory and a cross down marks deterioration beginning from strong territory. They describe turns in on-chain flow, not trade instructions.
Green and red triangles mark divergence between price and ChainPulse: green where price made a lower low while the composite made a higher low, red for the mirror. Pivots define those highs and lows, defaulting to five bars left, three right, with a maximum reach of twenty four bars between compared pivots.
THE INFORMATION TABLE
Five columns, ten rows, placeable in any of nine positions.
The top row summarises: the labels BTC and ONCHAIN, then a regime word, the composite value, and a feed count. The regime word comes from the composite, reading STRONG at 50 or above, HEALTHY from 20 to 50, NEUTRAL between -20 and +20, WEAK down to -50 and STRESSED below that. The last cell shows how many of the six metrics are reporting; anything under six out of six means a feed has stopped and the composite is running on the rest.
The second row holds the headline numbers. Comp is ChainPulse, Signal is its signal line, and the last cell is the histogram, Comp minus Signal.
The third row holds the column headings for the six metric rows beneath: Metric, Raw, Score, Rank and Contrib.
Each metric row shows Raw, the measurement in its own units, with SOPR to four decimals, address counts and fees abbreviated in thousands and hash rate in exahashes per second; Score, the normalised -100 to +100 reading; Rank, the underlying percentile, so 70 percent means it sits above 70 percent of its own readings in the window; and Contrib, how many points that metric contributes to the composite given its weight. Score and Rank describe the same thing two ways, with one exception: Sending Addresses is inverted, so a rank above 50 percent beside a negative score is expected. The six Contrib values add up to the composite before smoothing, so the column shows directly which metrics are moving the number. A metric whose feed has stopped shows DEAD there and is excluded from the blend.
The bottom row covers timing. Div reports a recent divergence as BULL, BEAR or a dash. Last X reports how many bars since the most recent cross dot, and whether it was a buy or sell type.
SETTINGS AND DATA
The lookback, on-chain resolution, all six weights, divergence and pivot settings, smoothing lengths, colours and table position are adjustable, and any weight can be set to zero to drop that metric. A dead feed guard, on by default, removes a non-reporting metric from the blend and rescales the rest, because a missing value read as zero would rank at the bottom of its history and look like an extreme bearish reading when nothing had happened. Eleven alert conditions cover the cross dots, zero line crosses, strong and stressed readings, SOPR extremes, both divergences and a feed failure warning.
Data comes from the Glassnode feeds carried on TradingView, and availability depends on your account. On-chain data updates far less often than price: at the default daily resolution these values change once a day, so an intraday chart holds the same reading all session. Requests use a one bar shift with lookahead disabled, so history does not repaint. Divergence markers are the exception by design, since a pivot cannot be confirmed until the required bars have printed after it. The triangle is placed on the pivot it describes but appears only once those bars complete, while the exported divergence values are stamped on the confirmation bar, showing when the divergence could actually have been known.
LIMITATIONS
This is built for Bitcoin. The feeds are Bitcoin network metrics, so applying it to another symbol shows Bitcoin data beside an unrelated price series. On-chain metrics describe network conditions; they do not measure or forecast price, and there are long stretches where the network reads healthy while price falls, or the reverse. Every score is relative to the chosen lookback, so a metric can rank high simply because the recent past was quiet, which is why the Rank column is always shown.
This script is a research and analysis tool. It is not financial advice, not a recommendation to buy or sell, and not a signal service. The dots and triangles describe what the data has already done. No indicator predicts future price. Do your own research and manage your own risk. 指标

XauLabs Sessions & Kill ZonesENGLISH
What it does
Gold does not behave the same way around the clock. This indicator draws one box around each trading session — Asia, London, New York — covering exactly the price range that session has traded, and highlights two narrower windows inside them, commonly called Kill Zones, where volatility and participation concentrate. It answers one question only: what time is it, in market terms — and what has each part of the day actually done?
How it works (full method)
Session definition. Five time windows are defined in UTC and are all user-editable. Defaults: Asia 23:00–08:00, London 07:00–16:00, New York 12:30–21:00, London Kill Zone 07:00–10:00, New York Kill Zone 13:30–16:00. UTC is used deliberately so the display does not shift with the chart's timezone or with daylight saving changes in a single region.
Range boxes. When a session opens, a box is created at that bar. On every following bar of the session, the box extends to the right and its top and bottom are pushed to the highest high and lowest low reached so far. When the session ends, the box stops: what remains is the session's true footprint — its duration and its full price range.
Visual hierarchy. Sessions are drawn as thin outlines with no fill, one colour each (Asia blue, London amber, New York violet). Kill Zones are the only filled boxes, in red with a thicker border, and carry their name. A Kill Zone lives inside its parent session: you see a red block inside a thin frame, not two shapes fighting.
Dashboard. A panel in the top-right corner names the window currently active, then lists all five windows with a colour swatch and a countdown: "ends in 1h04" for an open window, "in 7h15" for the next occurrence of a closed one. The panel doubles as the colour legend.
Timeframe guard. Above H1 the whole display is suppressed and the panel says so. A four-hour candle spans several sessions, so a session reading on it would be meaningless. Rather than draw something wrong, the tool draws nothing.
No repainting
Boxes are anchored to bar timestamps and only ever extend forward as bars close; the countdown panel is informational and recomputed on the last bar. Nothing is redrawn after the fact: a box you see in history is exactly what was drawn live.
On-chart output
One outlined box per session occurrence, kept in history for day-to-day comparison.
Filled red boxes on both Kill Zones, with their names.
The dashboard panel with current window and countdowns, selectable text size.
Two alert conditions: London Kill Zone opening, New York Kill Zone opening.
Suggested use
M15 or M5. Watch how narrow the Asian box builds overnight, how the London open attacks its boundaries, and how often the day's real move starts inside a red window. Comparing box heights across days gives an immediate feel for which sessions are carrying the volatility. Used as a context filter, it answers when a setup is worth taking, not what the setup is.
All colours, fill strengths, session hours and display options are user-configurable.
This is an educational timing tool. It gives no buy or sell signals and makes no performance claim. Trading involves substantial risk of loss.
FRANÇAIS
Ce que fait l'indicateur
L'or ne se comporte pas de la même façon selon l'heure. Cet indicateur dessine une boîte autour de chaque session de cotation — Asie, Londres, New York — couvrant exactement l'amplitude de prix parcourue par cette session, et met en évidence deux fenêtres plus étroites à l'intérieur, communément appelées Kill Zones, où la volatilité et la participation se concentrent. Il répond à une seule question : quelle heure est-il, au sens du marché — et qu'a réellement fait chaque partie de la journée ?
Comment il fonctionne (méthode complète)
Définition des sessions. Cinq fenêtres horaires sont définies en UTC et toutes modifiables par l'utilisateur. Par défaut : Asie 23h00–08h00, Londres 07h00–16h00, New York 12h30–21h00, Kill Zone Londres 07h00–10h00, Kill Zone New York 13h30–16h00. L'UTC est un choix délibéré : l'affichage ne se décale ni avec le fuseau du graphique, ni avec les changements d'heure d'une seule région.
Boîtes d'amplitude. À l'ouverture d'une session, une boîte est créée sur cette bougie. À chaque bougie suivante de la session, la boîte s'étend vers la droite et ses bords haut et bas sont poussés jusqu'au plus haut et au plus bas atteints. À la fin de la session, la boîte s'arrête : il reste l'empreinte réelle de la session — sa durée et son amplitude complète.
Hiérarchie visuelle. Les sessions sont tracées en contour fin sans remplissage, une couleur chacune (Asie bleu, Londres ambre, New York violet). Les Kill Zones sont les seules boîtes remplies, en rouge avec bordure renforcée, et portent leur nom. Une Kill Zone vit à l'intérieur de sa session : on voit un bloc rouge dans un cadre fin, pas deux formes qui se disputent.
Tableau de bord. Un panneau dans le coin supérieur droit nomme la fenêtre en cours, puis liste les cinq fenêtres avec une pastille de couleur et un décompte : « finit dans 1h04 » pour une fenêtre ouverte, « dans 7h15 » pour la prochaine occurrence d'une fenêtre fermée. Le panneau sert aussi de légende des couleurs.
Garde-fou d'unité de temps. Au-dessus de H1, tout l'affichage est supprimé et le panneau l'indique. Une bougie de 4 heures couvre plusieurs sessions : y lire une session n'aurait aucun sens. Plutôt que d'afficher quelque chose de faux, l'outil n'affiche rien.
Aucun repaint
Les boîtes sont ancrées sur l'horodatage des bougies et ne font que s'étendre vers l'avant à mesure que les bougies clôturent ; le panneau de décomptes est informatif et recalculé sur la dernière bougie. Rien n'est redessiné après coup : une boîte visible dans l'historique est exactement celle qui a été tracée en direct.
Affichage
Une boîte en contour par occurrence de session, conservée dans l'historique pour comparer les journées.
Des boîtes rouges remplies sur les deux Kill Zones, avec leur nom.
Le tableau de bord avec fenêtre en cours et décomptes, taille de texte réglable.
Deux conditions d'alerte : ouverture de la Kill Zone de Londres, ouverture de celle de New York.
Utilisation suggérée
M15 ou M5. Observer comme la boîte asiatique se construit étroite pendant la nuit, comment l'ouverture de Londres attaque ses bornes, et combien de fois le vrai mouvement du jour démarre dans une fenêtre rouge. Comparer la hauteur des boîtes d'un jour à l'autre donne une lecture immédiate des sessions qui portent la volatilité. Utilisé comme filtre de contexte, il répond à la question de savoir quand un setup vaut la peine d'être pris, pas de quel setup il s'agit.
Toutes les couleurs, intensités de remplissage, heures de session et options d'affichage sont réglables.
Outil éducatif de lecture horaire. Il ne donne aucun signal d'achat ou de vente et ne formule aucune promesse de performance. Le trading comporte un risque de perte important. 指标

CAN SLIM CheckerWHAT THIS IS
A single diagnostic table that scores the chart's symbol against William O'Neil's CAN SLIM criteria - 17 pass/fail checks plus 4 informational rows - and tells you plainly which ones it clears, which it fails, and which cannot be evaluated because the data does not exist.
Every row shows three things: the actual value , the threshold it has to clear , and the verdict . The threshold string is generated from the same input the pass/fail test reads, so retuning a setting can never leave the table displaying a stale target.
Every check is evaluated on every bar, not just the last one, so the chart background can be shaded across the whole history wherever the symbol met a threshold you set. That turns a snapshot into a timeline: you can see which stretches of a stock's past actually satisfied CAN SLIM and which did not.
This is a checker, not a signal generator . It plots no entries, no arrows, no alerts. It answers one question - how much of CAN SLIM does this stock actually satisfy right now, and when has it satisfied it before - and shows its working.
WHERE CAN SLIM COMES FROM
CAN SLIM is the growth-stock methodology William J. O'Neil set out in "How to Make Money in Stocks" (1988), derived from a study of the biggest US stock market winners going back to the 1950s. It is an acronym for seven characteristics those winners shared before their major advances:
C - Current quarterly earnings up sharply. O'Neil's floor: +25% year over year; he preferred 40%+.
A - Annual earnings growth of 25%+ in each of the last three years, with return on equity of 17%+.
N - Something New: a new product, new management, or a new price high. O'Neil bought new highs, not bargains.
S - Supply and demand: a smaller float moves further on the same demand, and volume should be flowing in on up days.
L - Leader, not laggard: buy the best-performing stocks, not the cheap ones.
I - Institutional sponsorship: funds should be accumulating it.
M - Market direction: three of four stocks follow the market, so nothing else matters in a correction.
This script implements each letter as one or more concrete tests. Where O'Neil's criterion cannot be computed from data Pine Script can reach, the row says so instead of substituting something weaker and calling it a pass.
HOW EACH LETTER IS CALCULATED
C - Current quarterly earnings
Quarterly EPS (diluted by default, basic as fallback) against the same quarter a year ago, and the same for revenue. Optionally the prior quarter must clear the threshold too, because O'Neil wanted a run of strong quarters rather than one good print. A loss turning into a profit has no percentage growth rate, so it is detected separately and counted as a pass. A fourth row shows whether growth is accelerating quarter over quarter - O'Neil's ideal, not his floor, so it is informational and never scored.
Reaching "four reports ago" needs care. request.financial() returns step series that only change when a filing posts, so the usual change-detection trick fails silently whenever two consecutive reports carry an identical value - which share counts do constantly:
// Breaks when two reports carry the same value - the occurrence is skipped
// and this silently reads 5 or 6 reports back instead of 4.
ta.valuewhen(ta.change(totShares) != 0, totShares, 4)
// One report clock, driven by revenue, which effectively never repeats.
newFQ = f_moved(revFq)
shares4 = ta.valuewhen(newFQ, totShares, 4)
A - Annual earnings
Annual EPS growth in each of the last three fiscal years, all three required. Return on equity from the latest annual report. Debt-to-equity computed from TOTAL_DEBT / TOTAL_EQUITY rather than the packaged ratio field so the units are unambiguous, displayed alongside its own value a year earlier, because O'Neil cared about the direction of leverage as much as the level.
N - New high
Distance below the 52-week high on daily bars, upgrading to NEW HIGH when today sets one. Two informational companions: breakout volume against the 50-day average (only meaningful within 2% of the high), and distance above the 50-day MA as a climax warning - a stand-in for O'Neil's "never chase more than 5% past the pivot", since Pine cannot locate a pivot without base detection.
S - Supply and demand
Free-float share count, share-count change year over year (buybacks pass, dilution fails), and the up/down volume ratio: volume on up-closes divided by volume on down-closes over the lookback.
L - Leader
Three tests:
The stock holding above its own 50- and 200-day moving averages.
The RS line (close divided by the index) at or near its own 52-week high. O'Neil's ideal breakout has the RS line making a new high with or before price.
An IBD-weighted 12-month momentum score - 40% on the 3-month return, 20% each on the 6/9/12-month legs - required to beat the index's own score.
I - Institutional sponsorship
This one is honestly not computable. request.financial() exposes no ownership, fund-count or 13F data, so the row is permanently gray and excluded from the score rather than faked. A liquidity proxy sits beside it - 50-day average dollar volume and a minimum share price - which establishes that institutions COULD hold it, not that they ARE buying it.
M - Market direction
Three rows feeding a three-state gate:
Index structure - the market symbol above its 21-day EMA and 50-day SMA, with the 50 above the 200. Deliberately slow; this is the "is the tide in" question.
Power Trend - IBD's own rule set, and the reason a plain fast-MA cross is the wrong tool for a market gate. It turns ON only when four conditions hold simultaneously: the index LOW has stayed above the 21-day EMA for 10 straight sessions (not merely the close - the index has not even dipped to it), the 21-EMA has held above the 50-SMA for 5 sessions, the 50-SMA is rising, and today closed up. It ends on a 21/50 cross back down, or on a circuit breaker: a close under the 50-SMA while already 10% off the three-month high. Those persistence counters are what stop a fast pair of averages whipsawing the gate.
Distribution days - index closing down 0.2%+ on volume higher than the previous session, counted over a rolling 25-session window, with days retired once the index rallies 5% above the close of that day. IBD treats 5-6 as a correction signal.
Those three produce a state rather than a boolean, because "not a confirmed uptrend" and "get out" are different instructions:
CONFIRMED UPTREND - Power Trend on, distribution contained. Buy normally.
UNDER PRESSURE - One of those failing but the index still holds its 50-day. Smaller size, best setups only.
CORRECTION - Power Trend off with the 50-day lost, or distribution past the danger threshold. The one O'Neil said to sit out.
By default a correction stamps the score row regardless of how good the stock looks, which is what O'Neil meant when he called M the most important letter.
THE BACKGROUND SHADING
The chart is shaded on every bar where the symbol met a CAN SLIM bar you define, so the qualifying windows are visible across history instead of only the latest reading. An optional second shade marks bars where the stock cleared your bar but the market gate vetoed it - the setups worth remembering, where the stock was ready and the tape was not.
Three conditions must all hold, and the third is the one that matters:
An absolute floor on the number of checks passed.
A percentage floor on passed / evaluable.
A data-coverage floor on how many checks resolved at all.
Unresolved rows leave the denominator rather than counting as failures, which is correct for a checker but has a nasty consequence for shading: a symbol with almost no reported financials posts a clean 3 / 3 and would shade its entire chart green on nothing at all. The coverage floor refuses to shade until enough checks actually resolved. Without it the shading would be brightest exactly where the data is thinnest, which is the opposite of useful. Keep that floor high.
What the shading is, and what it is not. It is honest about time: request.financial() delivers each figure on its publication date, so a bar in 2019 only ever sees numbers that were public in 2019. There is no lookahead and the green stretches are real. It is not a backtest . It says "this symbol met your bar here", never "buying here worked" - no entry, no exit, no position and no return is implied or computed anywhere in this script.
Turning the market-gate requirement off is worth doing deliberately: it shows whether a name held up THROUGH a correction, which is where O'Neil looked for the next cycle's leaders.
HOW TO USE IT
Put it on a daily chart of an individual stock. Everything price- and volume-based is pulled from a daily request.security() on the chart's own symbol, so the moving averages, the 52-week high and the momentum legs stay correct on weekly, monthly and intraday charts too. One row - the RS line's own 52-week high - cannot be built that way and grays out on intraday charts rather than reporting a nonsense number.
Read the market state row first. In a correction, the rest of the table is academic.
Read the score as a fraction of what was resolvable , not out of 17. Gray rows leave the denominator rather than being waved through, so 13/13 on a symbol with no financial data means far less than 13/17.
Set the shading thresholds to your own standard, then scroll back. The green stretches tell you how often and for how long this name has actually met that standard. The Shading row in the table explains why the current bar is or is not shaded, and how many bars the current run has lasted.
Use the tooltips. Every row carries the rule it implements, its limitations, and why it fails when it fails. Hover the row name.
Scrub the Data Window for raw numbers on a historical bar. The table itself always reflects the most recent bar.
Best used as the last filter before a watchlist entry, or as a post-mortem on a position that is not working. It will not find candidates for you - point it at names you already like.
SETTINGS
C - Current Quarterly Earnings
Use diluted EPS (on) - Diluted accounts for options and convertibles; basic flatters heavy issuers. Falls back to basic when diluted is unavailable.
Min EPS YoY growth (FQ) % (25) - O'Neil's stated floor. He preferred 40%+.
Require the prior quarter to clear it too (on) - Demands a run of quarters, not one print.
Min Sales YoY growth (FQ) % (20) - EPS growth without revenue behind it is cost-cutting.
A - Annual Earnings Growth
Min annual EPS growth, each of last 3 years % (25) - All three years must clear it.
Min Return on Equity % (17) - O'Neil's efficiency threshold.
Max Debt / Equity (1.0) - Industry-dependent. Utilities and REITs fail this by construction.
N - New High
Max distance below 52-week high % (15) - The buyable zone: basing near highs, not repairing damage.
Min share price (10) - Institutions largely cannot buy below this. Folded into the liquidity row rather than scored separately.
Breakout volume vs 50-day avg (x) (1.4) - O'Neil wanted 40-50%+ above average on the breakout. Informational.
Climax warning: % above 50-day MA (12) - Proxy for "too extended to start". Informational.
S - Supply & Demand
Max float (millions of shares) (100) - O'Neil's 1988 examples used under 25M; floats have inflated since.
Max shares-outstanding growth YoY % (2) - New supply works against the holder.
Up/Down volume lookback (daily bars) (50) - Window for the accumulation ratio.
Min U/D volume ratio (1.0) - 1.0 is neutral; real leaders usually read 1.25+.
L - Leader
Max RS-line distance below its 52-week high % (5) - How close to a new RS high counts as leadership.
Required momentum margin over index (0) - Zero means "merely beating the market", a low bar in a bear market. Raise it to demand real leadership.
I - Institutional (proxy only)
Min avg daily dollar volume ($ millions) (20) - Depth at which funds CAN build a position. Not evidence that they are.
M - Market Direction
Market index (AMEX:SPY) - SPY rather than SPX because distribution days need volume and SPX has none. Use QQQ for tech-heavy portfolios.
Distribution-day window (days) (25) - IBD's trailing count.
Max distribution days (4) - Pass threshold.
Distribution-day decline threshold % (0.2) - How far down counts as distribution.
Expire a distribution day after a rally of % (5) - IBD retires days the index has rallied past. Set 0 to count purely by age.
Power Trend: days the low must hold above the 21-EMA (10) - Persistence condition 1.
Power Trend: days the 21-EMA must hold above the 50-SMA (5) - Persistence condition 2.
Power Trend circuit breaker: % below 3-month high (10) - The rare early exit in a fast decline.
Distribution days that force a correction call (6) - Above the pass threshold but at or below this reads UNDER PRESSURE; beyond it, CORRECTION.
Treat M as a gate (on) - Off makes M ordinary points in the score.
Gate blocks when the market is (Correction only) - Or "Correction or Under Pressure" for a stricter stance.
Background Shading
Shade the chart while the score qualifies (on) - Paints the background on every bar meeting the criteria below.
Min checks passed (12) - Absolute floor, out of 17 scored checks. The main dial.
Min % of evaluable checks passed (70) - Ratio floor on top of the absolute one. Both must be satisfied.
Min evaluable checks, data coverage floor (12) - The guard that makes this honest. Refuses to shade until enough checks actually resolved, so a symbol with no reported financials cannot shade green on a 3 / 3. Keep it high.
Also require the market gate to allow buying (on) - Applies the same three-state gate the score row uses. Off judges the stock alone.
Shade differently when only the market blocks it (on) - A second shade for bars where the stock cleared your bar and the market vetoed it.
Qualifying shade / Stock-only shade - Colour pickers, so you can tune them to your chart theme.
Display
Table position (Top right) - Five anchor points.
Layout (Full) - Full = all 21 rows, 5 columns, plus the Shading status row. Compact = 17 scored rows, shortened labels, informational rows dropped. Minimal (phone) = one row per CAN SLIM letter with that letter's tally, 9 rows total. The score and the shading are identical in all three - layouts hide rows, they do not skip arithmetic.
Table text size (Small) - Auto scales to the chart pane, which is usually what you want on a phone.
Show the "Needs" column (on) - The threshold column. Turning it off collapses the column rather than leaving an empty strip.
LIMITATIONS - READ THESE
The shading is not a backtest and not a strategy. It marks bars where the symbol met a threshold you chose. No entry, exit, position or return is implied or computed anywhere in this script, and a long green stretch is not evidence that trading it would have worked.
Institutional sponsorship cannot be evaluated. No ownership or 13F data exists in Pine. That row is permanently gray by design. Check IBD's Accumulation/Distribution rating or 13F filings directly.
The L rows are not IBD's RS Rating. That rating is a percentile rank across the entire market; a Pine script sees one symbol at a time. The RS line and the weighted momentum score are single-symbol stand-ins, and beating the index is a floor, not a top-20% ranking.
No base or pivot detection. There is no cup-with-handle recognition, no pivot point, no proper buy point. "Within 15% of the high" will keep passing stocks that are 14% down in a downtrend - pair it with the 50/200-day row before trusting it.
Float is an annual figure. TradingView publishes FLOAT_SHARES_OUTSTANDING only as FY, so it can be up to a year stale, and it is missing outright for many symbols.
Annual rows need history. Three years of annual growth requires four annual reports inside the chart's history - roughly five years of bars. Recent listings show gray, and the early years of any chart will sit unshaded for want of data rather than want of quality.
Restatements are not modelled. Each figure appears on its publication date, which is what keeps the history free of lookahead, but a later revision is not reflected back onto the bars it would have changed.
Fundamentals are as reported by TradingView , which is GAAP. IBD works from adjusted operating earnings, so numbers will not match IBD's screens exactly.
Non-equity symbols (indices, forex, crypto) have no financials at all. Most rows will be gray, the score will be small and meaningless, and the coverage floor will correctly refuse to shade anything.
The current day's volume is still forming until the close, so the breakout-volume row and today's distribution-day count can move intraday.
NOTES
Open source - read the code. The header comment documents every design decision and every place a shortcut was taken. Built in Pine Script v6.
This is a research and education tool. It is not financial advice, not a recommendation to buy or sell anything, and no combination of green rows or green bars predicts a future price. CAN SLIM is a rules framework for narrowing a universe, not a system with an edge you can automate. Do your own work.
指标

指标

Fair Value Gap (FVG) Statistics with Placebo Control█ OVERVIEW
On the same instrument, measured against a 50% baseline, fair value gaps looked significantly profitable in one period and significantly unprofitable in another. Both readings were artifacts of a baseline that was never 50%.
This indicator measures what actually happens after price returns to a gap, then compares the result against fake, or placebo, zones of the same size placed at bars where no gap occurred. Because a hit rate tells you nothing until you know what a meaningless zone scores on the same chart.
The following description consists of two parts. Part 1 is written in plain English and covers everything most readers need. Part 2 contains the full methodology and results for anyone who wants to examine the numbers in detail.
═══════════════════════════════════════
PART 1 — WHAT THIS IS AND WHY
═══════════════════════════════════════
█ THE PROBLEM
Zone-based tools are everywhere: fair value gaps, order blocks, breakers, imbalances. Yet almost none of them tell you how often a zone actually led anywhere. And when a number is quoted, it is often built on one of three flawed foundations.
1. The zone is counted before it could have been known.
This problem is easiest to see with order blocks. An order block is commonly defined as the last opposite candle before a move that breaks structure. That means the block cannot be identified until the structure break occurs, often several bars later. Yet it is drawn back on the earlier candle as though it had been known at the time.
Any hit rate measured from that earlier candle therefore counts a zone that nobody could actually have traded.
Fair value gaps suffer less from this problem because their three-bar pattern completes quickly, but the same principle applies: a zone becomes active only when it becomes knowable, and nothing before that bar should be counted.
2. Failed zones disappear.
Many tools remove a zone from the chart once price has passed through it. That makes sense for keeping a chart clean. It is disastrous for statistics, because the zones being removed are disproportionately the ones that failed.
Count only what remains on the chart and you are counting the survivors.
3. The hit rate is compared with 50%.
This is the most important problem, and it is extremely common.
The reasoning seems straightforward: if the target and stop are equally far from the entry, then no edge should mean a 50/50 outcome.
But a rule that enters when price reaches a level inherits a baseline from the way price moves. That baseline is not necessarily 50%. It changes with the instrument, direction, and market conditions. Across the three markets tested here, it ranged from roughly 45% to 55%.
A hit rate by itself therefore tells you very little.
What matters is how the same measurement performs on zones that have no informational meaning at all.
█ WHAT THIS INDICATOR DOES
For every real fair value gap the indicator identifies, it also generates placebo zones of the same height, direction, and distance from price, anchored at bars where no fair value gap occurred.
Real and placebo zones are then measured by exactly the same rules.
The difference between them — real minus placebo — is the result that matters.
If real gaps perform like the placebo zones, then the pattern is not adding anything, regardless of how attractive the raw hit rate may look.
The placebo comparison does not ask whether fair value gaps win more than 50% of the time.
It asks a harder question:
Do fair value gaps perform better than comparable zones that carry no fair value gap information at all?
█ HOW THE COMPARISON IS KEPT FAIR
Statistical libraries for Pine already exist, and many indicators will draw fair value gaps. What is not otherwise available is a matched control built into the measurement itself, so that every figure the indicator reports arrives together with the baseline it should be judged against.
Three design choices make that possible, and they only work together.
A matched placebo control. Each placebo zone has the same height, the same direction, and the same distance from price as the real zone it is meant to compare with. Both are scored by identical rules.
Confirmation-honest timing. A zone enters the sample only when it becomes knowable, never earlier. Every confirmed zone remains in the sample from that point onward, including zones that fail immediately.
Bias controls that are reported rather than hidden. Cases that are genuinely difficult to score — such as bars that touch both exits and trades that never resolve — are counted and displayed for real and placebo zones side by side. Ambiguous cases are treated conservatively rather than silently discarded.
The combination matters. A matched control is useful only if both sides are measured under the same timing and scoring rules.
█ WHAT THE TESTS FOUND
Across three asset classes, three timeframes, and two separate periods — fourteen measurements in total — fair value gaps showed no detectable advantage over size-matched zones placed at meaningless bars.
The difference remained below about one percentage point of hit rate, and none of the fourteen individual measurements reached conventional statistical significance.
That is a bound on what was observed, not a claim that the true effect is exactly zero.
A different market or a different period could produce a different result. That is precisely why the comparison is built into the tool rather than left as an assumption or a footnote.
The broader conclusion is more useful:
A hit rate quoted without its baseline does not tell you whether something works. On the same instrument, measured against 50%, this pattern looked significantly profitable in one period and significantly unprofitable in another. Both readings were created by the baseline, not by the gaps.
That lesson applies to zone-based tools generally, not only to fair value gaps.
If you take one thing from this script, take that.
█ HOW IT WAS TESTED
A single result on a single chart is easy to produce and easy to overinterpret. Before publication, the same measurement was therefore repeated while changing one assumption at a time.
Three asset classes — crypto, currencies, and equity index futures
Three timeframes — 5 minutes, 30 minutes, and 1 hour
Two separate, non-overlapping time periods
Three different target and stop distances
Two different limits on how long a trade could remain open
Each of these choices is partly arbitrary. If a finding appears only under one particular setting, it may belong to the setting rather than to the market.
Fourteen separate measurements were made in total.
Two standard statistical tools are used. A confidence interval shows the range in which the underlying value plausibly lies, which is more informative than a single headline estimate. Results from independent markets are also combined so that their evidence can be considered together rather than one chart at a time.
The measurement procedure was additionally checked against artificial data for which the correct answer was known in advance. This allowed the method itself to be tested independently of any market result.
█ HOW TO READ AND USE THE INDICATOR
Add the indicator to any chart. It works on any symbol and any timeframe and needs no configuration to produce a result.
The panel
By default, the panel shows a compact view: the number of zones found, the number revisited by price, the hit rate with its confidence interval, the placebo baseline, and the difference between real and placebo.
Turn off Compact panel for the full breakdown: wins, losses, unresolved cases, the direction split, and side-by-side rates for the cases that are hardest to score.
Everything used to produce the headline result is available for inspection.
Reading the result
Check the sample size first. Below roughly 1000 resolved zones, the confidence interval is usually too wide to conclude much. Recognizing that the sample is inconclusive is a valid result, not a failure of the indicator. Lower timeframes and longer histories both increase the sample.
Then read real − placebo . That is the headline result.
A positive number means the gaps outperformed the placebo zones. A negative number means they underperformed them.
The z-score beside it indicates how far the observed difference sits from what chance alone can produce. As a rough guide, an absolute z-score below 2 is not conventionally distinguishable from noise.
The raw hit rate is shown for context, not as the answer. Judging the pattern from that number alone is the mistake this indicator is designed to expose.
Setting up a measurement
To measure a specific period, turn on Limit to date range and set the dates.
The panel reports the sample actually achieved. This can be shorter than the requested period if the chart has not loaded enough historical data, so scroll left when necessary to load more history.
To check whether a result depends on your choice of exits, change Barrier size and run the measurement again. A finding that appears only at one setting may belong to the setting rather than to the pattern.
As a chart indicator
Zones are drawn as they form and can also be used in the usual visual way.
A zone that price has not yet returned to is drawn solid and continues extending to the right while it remains open.
When price reaches the zone, the box stops extending and fades to a dotted outline. The width of a completed box therefore shows how long that gap survived before price returned to it, while the chart makes it easy to see which zones remain active.
Turning off Draw real zones leaves only the statistics panel.
█ SETTINGS
Measurement — Risk unit selects whether exit distance scales with ATR or with the zone's own height. Barrier size sets that distance. Time limit controls how many bars a trade may remain open before being recorded as unresolved.
Entry price and Evaluate exits on the entry bar provide alternative scoring conventions so their effect can be measured rather than assumed. Both are labeled where they introduce a known bias.
Minimum zone height filters out small gaps. Exclude overlapping zones and Overlap lookback prevent several gaps created by the same move from being treated as independent observations.
Sample — restricts the measurement to a date range, entered as year, month, and day so the sample remains reproducible.
Placebo control — Placebos per zone sets how many comparison zones each real zone generates; more placebos produce a tighter estimate of the baseline. Placebo offset controls how far from the original bar the comparison zones are anchored.
Validation — replaces market price with a random walk so the measurement can be checked against data whose correct answer is known in advance rather than only against real markets.
Display — Compact panel shows the headline rows only; turning it off reveals the full breakdown. Draw real zones toggles the boxes on the chart.
═══════════════════════════════════════
PART 2 — DETAILED ANALYSIS
═══════════════════════════════════════
█ HOW A ZONE IS SCORED
A gap becomes active on the bar after its three-bar pattern closes. From that point onward, every confirmed zone remains in the sample, including zones that fail immediately.
When price returns to a zone, the entry is recorded at that bar's close , not at the zone edge.
This matters more than it may appear.
A touch condition means that price reached or passed the edge, so the bar may have overshot it by an unknown amount. Assuming a fill at the edge while beginning the measurement only from the following bar would start the trade from an artificial price and can systematically distort the result.
Two exits are then placed at equal distances on either side of the entry. Because the exits are symmetric, real and placebo zones can be compared directly.
If one bar touches both exits, its open, high, low, and close do not reveal which level was reached first. Those cases are shown separately and counted as losses, making the published result the conservative one.
Zones that reach neither exit within the time limit are excluded from the hit-rate calculation. They did not resolve, so they provide no evidence for either outcome.
█ RESULTS
Results below use the following settings. The sample ends 1 August 2026.
SETTING VALUE
Risk unit (R) ATR(14) at confirmation
Barrier 2.0 R each side
Time limit 100 bars after entry
Entry close of the touch bar
Overlapping zones excluded
Placebos per zone 3
Three markets, 30-minute charts, 2025-01-01 to 2026-08-01:
INSTRUMENT RAW NAIVE z PLACEBO REAL-PLAC
BTCUSDT 49.5% -0.67 49.0% +0.5
EURUSD 51.4% +1.65 51.7% -0.2
ES1! 49.2% -0.92 49.9% -0.7
POOLED -0.04
The panel on the chart above is not restricted to that fixed window — it runs to the most recent bar — so its figures differ slightly from the table. That is expected: it is a different sample, not a different result.
Read the raw column alone and the markets appear different: 49.5% for crypto versus 51.4% for currencies, a spread of 1.9 percentage points.
Now look at the placebo column. Its spread is 2.7 points.
The apparent difference between markets is therefore better explained by the baseline than by the fair value gaps themselves.
One example makes the problem especially clear:
BTCUSDT, 1 hour, calendar year 2024
Raw hit rate 54.0% (n = 1390)
Naive z vs 50% +2.95 "significant"
Placebo baseline 51.5%
Real minus placebo +2.5% z 1.49, not sig.
Against an assumed 50% baseline, a 54% hit rate gives a p-value near 0.003 — exactly the kind of number that can look compelling when published in isolation.
Against its observed control baseline, however, the evidence is not statistically significant.
The same indicator, on the same instrument, over a different period and with a tighter target, produced a raw hit rate of 48.4% with a z-score of -2.25 — apparently significant in the opposite direction.
Both apparent conclusions arise from comparing with an assumed 50% baseline rather than the observed control baseline.
█ ROBUSTNESS
DIMENSION TESTED RESULT
Barrier size 1R / 2R / 3R no change
Time limit 50 / 100 bars no change
Asset class crypto / FX / index no change
Timeframe 5m / 30m / 1h no change
Period 2024 / 2025-26 no change
Across fourteen separate estimates of real minus placebo, the largest result was 1.49 standard errors from zero.
With fourteen estimates, even if the true effect were zero, the largest absolute result would be expected to reach roughly 1.9 standard errors by chance alone.
Pooled across three independent markets, the estimate was -0.04 percentage points, with a 95% interval of approximately -1.2 to +1.1 points.
█ LIMITATIONS
One symbol and one timeframe can be analyzed per chart. Pine cannot pool results across markets, so each chart represents one sample rather than proof by itself. The pooled figures reported above were combined separately.
Trading costs are not included. Entries assume execution at the bar close with no spread, commission, or slippage. Real-world trading costs would make absolute performance worse.
Ambiguous bars are counted as losses. This lowers both real and placebo hit rates by roughly the ambiguous-case rate and therefore tends to cancel when the difference between them is calculated.
The bull and bear rows should not be interpreted independently in a trending market.
The placebo control matches zone size, direction, and distance from price, but it cannot match the fact that a real gap forms immediately after a strong move in the same direction.
For example, in an uptrend, a fake bearish zone is more likely to be run over by the prevailing trend, whereas a real bearish gap can only form after an actual downward move. These effects work in opposite directions and largely cancel in the combined result.
For that reason, the total should be treated as the primary statistic rather than the directional split.
This limitation was identified during testing and is the main known weakness of the methodology.
Finally, all results come from a sample. Another market or another period may produce a different estimate. That uncertainty is the reason the placebo comparison is built into the indicator rather than assumed away.
█ METHOD AND PRIOR WORK
None of the statistics here are new, and it is worth being clear about that.
Assigning a treatment to units or moments where it did not actually occur, then checking that no effect appears, is a standard falsification test in causal inference, where it is usually called a placebo test. The placebo zones in this indicator are that idea applied to bars instead of subjects.
The trading application is not new either. David Aronson's Evidence-Based Technical Analysis (2006) argues that a rule should be judged against the returns of random entry signals rather than against zero, and uses Monte Carlo permutation and White's Reality Check to do it.
The scoring rule — a target, a stop, and a time limit, whichever is reached first — is the triple-barrier method described by Marcos López de Prado.
What this script adds is not the method but its availability. The control is generated and scored automatically alongside the real zones, on any chart and any symbol, so the baseline arrives together with the number instead of requiring a separate study that most people will never run.
█ OPEN SOURCE
The source is open. Every figure above can be reproduced — or shown to be wrong — by anyone who wants to check it.
Order blocks are next, measured by the same rule: from the bar that breaks structure, not from the earlier candle on which the block is drawn.
指标

Fulcrum: volume-weighted average of a two-market ratioA volume-weighted average price computed on the relationship between two markets rather than on a single price, with dispersion bands built from the same weighted pass.
What it does
Most relative-value work is done by eye: put two markets on one chart, watch the spread, decide when it looks stretched. This computes that judgement. It takes the ratio between two instruments, defaults to the Nasdaq and S&P futures contracts, and runs a volume-weighted average through it with standard deviation bands around that average. It lives in its own pane on its own scale, so the symbol you happen to have loaded is irrelevant to the reading.
What is different here
Volume-weighted average price, standard deviation bands and ratio charting are all public methodology and I claim none of them. The reason this is one script rather than three is the problem in the middle, which is that a ratio has no volume of its own.
If you divide one market by another, the resulting series has a price and no trade behind it. Every implementation has to decide what to weight by, and most sidestep it by using a simple moving average, which throws away the participation information entirely.
Three specific choices follow from taking that problem seriously.
First, the weight is the geometric mean of both legs' volume rather than either leg alone or their sum. A bar where both markets traded heavily is genuine two-sided participation in the relationship. A bar where one leg was busy and the other was dead is not, and the geometric mean punishes that asymmetry in a way an average does not.
Second, the variance is accumulated in the same volume-weighted pass as the mean, using running sums of weighted value and weighted squared value. The bands therefore describe the dispersion of the ratio as it was actually traded, not the standard deviation of the drawn line. Those two are not the same number and the difference matters most exactly when participation is uneven.
Third, the ratio can be normalised by a volatility and rates term, and that term is frozen at each anchor reset rather than updated daily. This matters more than it sounds. The volatility and rates inputs move once a day, so on any anchor longer than a session the divisor would step in the middle of the window being averaged, and you cannot take a volume-weighted average of a quantity whose units change halfway through: the mean chases the step and the variance ends up describing the divisor instead of the two markets. Freezing it means the unit is constant across the window and the level shift lands exactly where the average restarts anyway. Both inputs are read from the prior session's confirmed close, so the value is identical live and on reload, and when either feed is unavailable the table reports the fallback rather than changing every number on screen silently.
How it works
The ratio is computed from both legs bar by bar, including a high and low estimate taken from the most and least favourable combination of the two legs' extremes, so the typical price is a real range rather than just the close.
Volume for the weighting is the geometric mean of the two legs. The average, and the variance around it, accumulate from the anchor point using running weighted sums.
The anchor resets on a schedule, and by default that schedule is chosen from your chart: session on intraday timeframes up to twenty minutes, weekly up to four hours, monthly above that. The point is that an anchor should outlive more than a handful of bars, and a session anchor on a four hour chart does not. You can override it if you disagree.
Bands are hidden for the first few bars after each reset, and the distance reading is suppressed along with them. Cumulative dispersion on two or three samples is tiny but not zero, and dividing by it turns a two-basis-point wiggle into a double-digit sigma reading. Until the window has enough behind it to have measured anything, the readout says it is warming up rather than inventing an extension, and the band alerts stay silent.
The ratio line is coloured by which side of the average it sits on, with a small dead zone so that a ratio hugging its average does not strobe the line bar by bar.
How to use it
Load it on any chart. The pane draws the relationship, not your symbol.
Read the distance in standard deviations rather than the absolute level, which is reported in the table. The absolute number depends on the multiplier and the divisor and means nothing on its own.
The table reports whether both feeds are live, the current average, the current ratio, the distance from the average in percent and in standard deviations, which zone the ratio occupies, and the divisor with a fallback flag if either input is missing. Check the feed status first if the numbers look wrong.
Change the two symbols to compare any pair you like. The scaling multiplier exists to bring the ratio into a readable range and has no effect on the shape.
What it cannot do
It describes a relationship and not a direction. A stretched ratio tells you the two markets have diverged from how they have recently traded together. It does not tell you which leg corrects, or whether either does, or when. Relationships can stay stretched for as long as the reason for the stretch persists.
Standard deviation bands assume a distribution that ratio spreads do not reliably follow. Two sigma here is a description of the recent sample, not a probability of anything.
Requesting two symbols means depending on two data feeds. If either is unavailable on your plan or a symbol is wrong, the reading is incomplete, which is why the table reports feed status rather than drawing a confident line over missing data.
The volatility and rates divisor falls back to fixed placeholder values when its feeds are missing. Those numbers are arbitrary and they change the scale of everything on screen. The table flags it.
There are no entries, exits or trade marks anywhere in this script, and no performance of any kind is claimed or implied.
On authorship
The methodology is public and I have said so plainly. The implementation is not borrowed. Every line is written from scratch, and no code in it is copied or adapted from another author's script on this platform or anywhere else.
Settings
The two ratio symbols and a scaling multiplier; the volatility and rates divisor with its two symbols and an on-off switch; anchor period with an automatic default, band multipliers, band visibility and the post-reset warm-up length; and visual settings for colours, line width, fill, labels, the info table and the extension tint.
指标
