Daily Deviation Range and Gap Stats - NikaQuant
## What It Does
This indicator projects six pairs of deviation levels above and below a defined session range, draws a daily gap line at a configurable time, and shows a live stats panel with historical hit rates, mean-revert rates, gap fill statistics, and trade-decision suggestions.
The range itself is captured as the high and low of 5-minute closes during a configurable New York time window (default 19:30 to 20:30 NY). Once the window closes, the range is locked and six fibonacci-style deviation levels at multiples 1, 2.5, 5, 8, 13, and 19 of the range size are projected forward both upward and downward across the next trading day until a configurable cutoff (default 16:00 NY next day).
A separate gap line is captured at a configurable time (default 15:55 NY) using the close of that 5-minute bar. The gap line extends visually across the overnight session and is monitored for fill during the next session's open-to-close window (default 09:30 to 16:00 NY). When price crosses the gap level inside that window, the line is locked at the fill bar.
A live statistics table aggregates historical performance per day for the lookback period, showing per-level touch frequencies, mean-revert frequencies, close-inside-level frequencies, and gap fill statistics, then turns these into actionable trade-setup suggestions.
## Why It Is Original
Unlike a standard pivots or fibonacci-retracement indicator, this script is not a static price-level projection. It is a session-range deviation framework combined with an integrated gap tracker and a per-level historical statistics engine.
This script combines three distinct functional modules because each one addresses a different question about session structure:
(1) The range-multiple deviation levels answer "how far has price moved from session balance, in units of session range?" — analogous to standard-deviation channels but anchored to a user-defined range window rather than a rolling average.
(2) The daily gap line answers "is there an unfilled overnight reference price and what is the historical edge of trading toward it?" — different from standard gap detectors that only flag open-to-close gaps because it captures a specific price (the close at gap-time) and tracks fill behaviour inside a defined session window.
(3) The historical statistics engine answers "given today's structure, what has actually happened on past days when price reached the same levels or when a gap was open at this distance?" — turning the visual levels into probability-weighted decision inputs rather than just lines on a chart.
Together, the three modules produce something none of them would alone: a session-relative deviation map with quantified historical edge per level, plus a context-aware trade decision suggestion that combines current position, time remaining in the session, and historical revert behaviour.
The script also enforces a strict 5-minute internal data resolution regardless of chart timeframe (1-minute through 1-hour), so the levels and gap stay consistent whether the user is on a 5m chart or a 1H chart. This is accomplished via a dual-path data fetch that adapts to the chart's timeframe — pulling individual 5-minute samples on lower-timeframe charts and aggregating 5-minute closes per chart bar on higher-timeframe charts.
## How It Works
On each chart bar the script collects the 5-minute bars that have closed since the last update. For each 5-minute bar it checks whether the bar falls inside the range window, the extension window, the gap trigger time, or the gap fill window, and updates the relevant state.
When a 5-minute bar marks the end of the range window, the script locks in the highest and lowest 5-minute closes of the window, computes the range size and midline, and draws the deviation levels at multiples of the range above the high and below the low, projected forward to the configured extension-end time. A range-outline box is drawn over the range window for visual reference.
When a 5-minute bar matches the gap-trigger time, the script captures that bar's close as the gap price and starts drawing a horizontal line. On every subsequent 5-minute bar inside the next session's gap-fill window, the script checks whether the bar's high-low straddles the gap price. If so, the line is locked and the gap is recorded as filled.
Every time a deviation level is touched intraday — the 5-minute high reaches an upper level or the 5-minute low reaches a lower level — the script records that touch for the day. If price subsequently revisits the midline before the extension window ends, all touched levels for that day are also recorded as having reverted. When the extension window ends, the day's data is appended to a rolling history.
Each day's gap statistics (occurred, filled, minutes from fill-window open to fill) are appended at the next gap trigger, which ensures the gap is paired with its complete fill outcome before the next gap overwrites the live tracking state.
The stats table reads the history and renders per-level touch frequency, per-level revert frequency, close-inside-level frequency, gap fill rate, gap fill-time distribution (average, median, percent filled within 1 hour, percent filled within 4 hours), daily directional bias, range expansion vs contraction regime, day-type classification, time-elapsed in the active extension, and a context-aware trade-setup suggestion with stop and target prices for active fade setups.
The setup engine includes a time-remaining guard: when fewer minutes remain in the extension than the configured threshold, time-sensitive setups (fades and gap targets) are suppressed and the panel shows a "late session" status instead.
## How To Use It
- A range outline box appears over the range window once the window closes — this is the visual reference for the session range.
- Six pairs of lines extend forward from range-end to extension-end at multiples 1, 2.5, 5, 8, 13, and 19 of the range above and below the range high and low.
- Numerical labels at each level show the multiple — labels can be placed at the left or right end of the line via the "Level Label Side" setting.
- The gap line appears horizontally at the gap price after the configured gap time and extends until either price crosses through it during the fill window or the next day's gap is set.
- The live stats panel shows current price location vs midline (in range-multiples), today's range vs historical average, the current zone between two adjacent levels, the furthest level tagged today, per-level historical touch and revert rates, gap fill statistics, and a live setup suggestion.
Recommended timeframes: 1-minute through 1-hour. The script always uses 5-minute data internally, so behavior is consistent across chart timeframes.
Recommended markets: 24-hour markets such as index futures (ES, NQ), major FX pairs, and crypto majors, where overnight session structure matters and the configured NY-time windows align with meaningful session boundaries.
Avoid using when: less than 30 sessions of chart history are loaded (statistics will be unreliable) or on instruments that close before the configured range window (the range simply will not populate).
## Settings
- Max Deviation Days (default 11): how many past days to keep deviation levels visible. Older days are removed automatically.
- Show Deviation Levels: toggle the level lines.
- Normalize Range Size: when on, the range box and level distances use the average range over N past days instead of today's actual range.
- Normalize over N Days (default 500): number of past days to average for the normalization.
- Range Start and End Hour and Minute (default 19:30 to 20:30 NY): the window during which the range is captured.
- Extension Start and End Hour and Minute (default 20:30 to 16:00 NY next day): the window during which the deviation levels are drawn forward.
- Show Gap Level: toggle the gap line.
- Max Gap Days (default 11): number of past gap lines to keep visible.
- Gap Time Hour and Minute (default 15:55 NY): the 5-minute bar whose close becomes the gap price.
- Gap Close Start and End Hour and Minute (default 09:30 to 16:00 NY next day): the window during which gap fill is detected.
- Show Range Outline (default on): toggle the range outline box.
- Range Outline Color, Width, Style, Fill Transparency: visual settings for the box.
- Gap Width, Style, Color: visual settings for the gap line.
- Levels Width, Style: visual settings for the deviation lines.
- Level 1 through Level 6 (defaults 1, 2.5, 5, 8, 13, 19): numeric multiples of the range used for each level pair.
- Level 1 to 6 Color: per-level color.
- Level Label Side (default Left): place the level number labels at the left or right end of each line.
- Font Size (default 9): label font size.
- Show Stats Table (default on): toggle the live statistics panel.
- Stats Lookback in Days (default 5000): number of past completed days to include in historical statistics. Higher means more reliable percentages but requires more chart history loaded.
- Min Revert Percent for Fade Setup (default 55): a FADE setup is suggested only if the historical mean-revert rate at the touched level is at or above this threshold and the level was tagged at least 3 times in the lookback.
- Min Remaining Minutes for Setup (default 60): suppresses time-sensitive setups when fewer than this many minutes remain in the extension. Set to 0 to disable.
- Table Position (default Top Right): where the stats table is anchored.
- Table Size (default Normal): text size inside the stats table.
- Bull / Setup Color, Bear / Warning Color, Table Background, Table Text, Table Border: color settings for the panel.
## Alerts
Five alert conditions are exposed and can be selected from PulseWire's "Add Alert" dialog:
- Range Locked: fires when the range window closes and the levels are projected.
- Level Tagged: fires the first time price reaches any deviation level on either side.
- Gap Set: fires when the daily gap level is captured.
- Gap Filled: fires when price crosses through an open gap during the fill window.
- Session End: fires when the extension window ends and stats are finalized.
## Notes
The script does not repaint after a 5-minute bar closes. The range, deviation levels, and gap line are drawn from confirmed data only. The live distance-from-midline and live setup suggestions update intrabar based on current price.
Future bar-index positions for projected lines and labels are estimated based on the chart timeframe's bar duration. On charts with weekend gaps the projected end positions may visually diverge from the configured extension-end time by a small amount, but the underlying logical end time is correct.
Indicator

Volatility Signal-to-Noise Ratio🙏🏻 this is VSNR: the most effective and simple volatility regime detector & automatic volatility threshold scaler that somehow no1 ever talks about.
This is simply an inverse of the coefficient of variation of absolute returns, but properly constructed taking into account temporal information, and made online via recursive math with algocomplexity O(1) both in expanding and moving windows modes.
How do the available alternatives differ (while some’re just worse)?
Mainstream quant stat tests like Durbin-Watson, Dickey-Fuller etc: default implementations are ALL not time aware. They measure different kinds of regime, which is less (if at all) relevant for actual trading context. Mix of different math, high algocomplexity.
The closest one is MMI by financialhacker, but his approach is also not time aware, and has a higher algocomplexity anyways. Best alternative to mine, but pls modify it to use a time-weighted median.
Fractal dimension & its derivatives by John Ehlers: again not time aware, very low info gain, relies on bar sizes (high and lows), which don’t always exist unlike changes between datapoints. But it’s a geometric tool in essence, so this is fundamental. Let it watch your back if you already use it.
Hurst exponent: much higher algocomplexity, mix of parametric and non-parametric math inside. An invention, not a math entity. Again, not time aware. Also measures different kinds of regime.
How to set it up:
Given my other tools, I choose length so that it will match the amount of data that your trading method or study uses multiplied by ~ 4-5. E.g if you use some kind of bands to trade volatility and you calculate them over moving window 64, put VSNR on 256.
However it depends mathematically on many things, so for your methods you may instead need multipliers of 1 or ~ 16.
Additionally if you wanna use all data to estimate SNR, put 0 into length input.
How to use for regime detection:
First we define:
MR bias: mean reversion bias meaning volatility shorts would work better, fading levels would work better
Momo bias: momentum bias meaning volatility longs would work better, trading breakouts of levels would work better.
The study plots 3 horizontal thresholds for VSNR, just check its location:
Above upper level: significant Momo bias
Above 1 : Momo bias
Below 1 : MR bias
Below lower level: significant MR bias
Take a look at the screenshots, 2 completely different volatility regimes are spotted by VSNR, while an ADF does not show different regime:
^^ CBOT:ZN1!
^^ INDEX:BTCUSD
How to use as automatic volatility threshold scaler
Copy the code from the script, and use VSNR as a multiplier for your volatility threshold.
E.g you use a regression channel and fade/push upper and lower thresholds which are RMSEs multiples. Inside the code, multiply RMSE by VSNR, now you’re adaptive.
^^ The same logic as when MM bots widen spreads with vola goes wild.
How it works:
Returns follow Laplace distro -> logically abs returns follow exponential distro , cuz laplace = double exponential.
Exponential distro has a natural coefficient of variation = 1 -> signal to noise ratio defined as mean/stdev = 1 as well. The same can be said for Student t distro with parameter v = 4. So 1 is our main threshold.
We can add additional thresholds by discovering SNRs of Student t with v = 3 and v = 5 (+- 1 from baseline v = 4). These have lighter & heavier tails each favoring mean reversion or momentum more. I computed the SNR values you see in the code with mpmath python module, with precision 256 decimals, so you can trust it I put it on my momma.
Then I use exponential smoothing with properly defined alphas (one matches cumulative WMA and another minimizes error with WMA in moving window mode) to estimate SNR of abs returns.
…
Lightweight huh?
∞ Indicator

[CLX] Library Motion - Examples📑 Showcase
This is ready-to-show indicator version of the example code form the `motion` library. It can be used to create string- or color-based effects.
Library:
================================================================================
📑 Setup
To use this library in your own scripts, you must first import it. To do this, add the following line to the top of your script:
import cryptolinx/Motion/1 as motion
Next, create a `keyframe` object by using the `varip` keyword.
varip myKeyframe = motion.keyframe.new(_intv = 1, _steps = 1)
Based on your needs, you can now use one of the simplified functions to create a transition effect, or you can use the `transition()` or `iteration()` function to create a custom transition effect.
📑 Simplified Functions:
(direct output)
// motion.marquee(keyframe myKeyframe, string _seq, int _ws, int _maxLoops, bool _ltr)
motion.marquee(myKeyframe, 'Hello World!', 3, 0) // 0 = infinite loops
// motion.slideInLeft(keyframe myKeyframe, string _seq, int _ws, int _maxLoops, bool _refill)
motion.slideInLeft(myKeyframe, 'Hello World!', 3, 0) // 0 = infinite loops
// motion.slideOutLeft(keyframe myKeyframe, string _seq, int _ws, int _maxLoops, bool _refill)
motion.slideOutLeft(myKeyframe, 'Hello World!', 3, 0) // 0 = infinite loops
// motion.slideInRight(keyframe myKeyframe, string _seq, int _ws, int _maxLoops, bool _refill)
motion.slideInRight(myKeyframe, 'Hello World!', 3, 0) // 0 = infinite loops
// motion.slideOutRight(keyframe myKeyframe, string _seq, int _ws, int _maxLoops, bool _refill)
motion.slideOutRight(myKeyframe, 'Hello World!', 3, 0) // 0 = infinite loops
// motion.blink(keyframe myKeyframe, string _seq, int _ws, int _maxLoops)
motion.blink(myKeyframe, 'Hello World!', 3, 0) // 0 = infinite loops
(indirect output)
// After you create a transition, you can use the `output` field of the `keyframe` object to get the result.
// motion.marquee(myKeyframe, 'Hello World!', 3, 0)
myKeyframe.output
Indicator

Indicator

Indicator

Indicator

Indicator

PivotBoss TriggersI have collected the four PivotBoss indicators into one big indicator. Eventually I will delete the individual ones, since you can just turn off the ones you don't need in the style controller. Cheers.
Wick Reversal
When the market has been trending lower then suddenly forms a reversal wick candlestick , the likelihood of
a reversal increases since buyers have finally begun to overwhelm the sellers. Selling pressure rules the decline,
but responsive buyers entered the market due to perceived undervaluation. For the reversal wick to open near the
high of the candle, sell off sharply intra-bar, and then rally back toward the open of the candle is bullish , as it
signifies that the bears no longer have control since they were not able to extend the decline of the candle, or the
trend. Instead, the bulls were able to rally price from the lows of the candle and close the bar near the top of its
range, which is bullish - at least for one bar, which hadn't been the case during the bearish trend.
Essentially, when a reversal wick forms at the extreme of a trend, the market is telling you that the trend
either has stalled or is on the verge of a reversal. Remember, the market auctions higher in search of sellers, and
lower in search of buyers. When the market over-extends itself in search of market participants, it will find itself
out of value, which means responsive market participants will look to enter the market to push price back toward
an area of perceived value. This will help price find a value area for two-sided trade to take place. When the
market finds itself too far out of value, responsive market participants will sometimes enter the market with
force, which aggressively pushes price in the opposite direction, essentially forming reversal wick candlesticks .
This pattern is perhaps the most telling and common reversal setup, but requires steadfast confirmation in order
to capitalize on its power. Understanding the psychology behind these formations and learning to identify them
quickly will allow you to enter positions well ahead of the crowd, especially if you've spotted these patterns at
potentially overvalued or undervalued areas.
Fade (Extreme) Reversal
The extreme reversal setup is a clever pattern that capitalizes on the ongoing psychological patterns of
investors, traders, and institutions. Basically, the setup looks for an extreme pattern of selling pressure and then
looks to fade this behavior to capture a bullish move higher (reverse for shorts). In essence, this setup is visually
pointing out oversold and overbought scenarios that forces responsive buyers and sellers to come out of the dark
and put their money to work-price has been over-extended and must be pushed back toward a fair area of value
so two-sided trade can take place.
This setup works because many normal investors, or casual traders, head for the exits once their trade
begins to move sharply against them. When this happens, price becomes extremely overbought or oversold,
creating value for responsive buyers and sellers. Therefore, savvy professionals will see that price is above or
below value and will seize the opportunity. When the scared money is selling, the smart money begins to buy, and
Vice versa.
Look at it this way, when the market sells off sharply in one giant candlestick , traders that were short
during the drop begin to cover their profitable positions by buying. Likewise, the traders that were on the
sidelines during the sell-off now see value in lower prices and begin to buy, thus doubling up on the buying
pressure. This helps to spark a sharp v-bottom reversal that pushes price in the opposite direction back toward
fair value.
Engulfing (Outside) Reversal
The power behind this pattern lies in the psychology behind the traders involved in this setup. If you have
ever participated in a breakout at support or resistance only to have the market reverse sharply against you, then
you are familiar with the market dynamics of this setup. What exactly is going on at these levels? To understand
this concept is to understand the outside reversal pattern. Basically, market participants are testing the waters
above resistance or below support to make sure there is no new business to be done at these levels. When no
initiative buyers or sellers participate in range extension, responsive participants have all the information they
need to reverse price back toward a new area of perceived value.
As you look at a bullish outside reversal pattern, you will notice that the current bar's low is lower than the
prior bar's low. Essentially, the market is testing the waters below recently established lows to see if a downside
follow-through will occur. When no additional selling pressure enters the market, the result is a flood of buying
pressure that causes a springboard effect, thereby shooting price above the prior bar's highs and creating the
beginning of a bullish advance.
If you recall the child on the trampoline for a moment, you'll realize that the child had to force the bounce
mat down before he could spring into the air. Also, remember Jennifer the cake baker? She initially pushed price
to $20 per cake, which sent a flood of orders into her shop. The flood of buying pressure eventually sent the price
of her cakes to $35 apiece. Basically, price had to test the $20 level before it could rise to $35.
Let's analyze the outside reversal setup in a different light for a moment. One of the reasons I like this setup
is because the two-bar pattern reduces into the wick reversal setup, which we covered earlier in the chapter. If
you are not familiar with candlestick reduction, the idea is simple. You are taking the price data over two or more
candlesticks and combining them to create a single candlestick . Therefore, you will be taking the open, high, low,
and close prices of the bars in question to create a single composite candlestick .
Doji Reversal
The doji candlestick is the epitome of indecision. The pattern illustrates a virtual stalemate between buyers
and sellers, which means the existing trend may be on the verge of a reversal. If buyers have been controlling a
bullish advance over a period of time, you will typically see full-bodied candlesticks that personify the bullish
nature of the move. However, if a doji candlestick suddenly appears, the indication is that buyers are suddenly
not as confident in upside price potential as they once were. This is clearly a point of indecision, as buyers are no
longer pushing price to higher valuation, and have allowed sellers to battle them to a draw-at least for this one
candlestick . This leads to profit taking, as buyers begin to sell their profitable long positions, which is heightened
by responsive sellers entering the market due to perceived overvaluation. This "double whammy" of selling
pressure essentially pushes price lower, as responsive sellers take control of the market and push price back
toward fair value. Indicator

Indicator
