FAQ
These are the questions that come up most often. Each answer gives you enough to understand the situation and make a decision, then points you to the page where the full treatment lives.
Written By Axiom Admin
Last updated About 1 month ago
FAQ
These are the questions that come up most often. Each answer gives you enough to understand the situation and make a decision, then points you to the page where the full treatment lives.
Is this indicator repainting?
It depends on one setting: On Bar Close.
With On Bar Close on (the default), the oscillator uses only confirmed higher-timeframe bar values. Historical readings are stable β they match what was available when each bar closed. The indicator does not repaint in this mode, within the standard Pine request.security() contract.
With On Bar Close off, the oscillator uses the current building higher-timeframe bar's values. This makes it more responsive, but the values on recent bars will change as the HTF bar develops. Once the HTF bar closes, the historical bars show the final values β not the intermediate ones you saw while the bar was building. In this mode, the oscillator repaints by design.
Both modes are intentional. The toggle exists so you can choose between historical stability and real-time responsiveness. If you need trustworthy historical comparisons β overlaying the oscillator on past trades, studying how readings behaved before specific moves β keep On Bar Close on.
Full treatment: MTF & Repainting
Which MA type should I use?
There is no right answer β only tradeoffs. The choice affects how the baseline moving average weights recent versus older data, which changes how quickly the oscillator's Fast line responds to price movement. Here is how to decide:
EMA (the default) gives more weight to recent bars, making the baseline responsive. The oscillator tends to show smaller distance readings because the MA is closer to current price. This is a good starting point for most instruments and timeframes.
SMA gives equal weight to all bars in the lookback period. The baseline lags more than EMA, so the oscillator tends to show larger distance readings β price is further from a slower-moving average. Use SMA if you want a more stable baseline that does not chase short-term moves.
WMA falls between EMA and SMA in responsiveness, weighting recent bars linearly rather than exponentially.
ALMA uses a Gaussian distribution centered at a configurable offset. It can produce very smooth baselines but requires tuning the ALMA parameters (Offset, Sigma) in the Power User settings β and those parameters are global, so every slot that uses ALMA shares the same configuration.
The practical test: does the oscillator give you useful readings at the timeframe and instrument you care about? If the baseline MA is too close to price and the oscillator barely moves, try a longer length or a laggier type (SMA). If the oscillator is too noisy, try a shorter length or a more responsive type that this Lite library actually offers, such as EMA or HMA.
Full treatment: Settings β MA Type and For the Geeks for how the baseline choice affects the whole scoring pipeline.
Can I use this on crypto, forex, or futures?
Yes. The oscillator is designed to work across asset classes.
The ATR normalization is what makes this possible. By dividing the price-to-MA distance by each instrument's own ATR, the oscillator converts everything into volatility-relative units. A reading of +60 on Bitcoin and +60 on EUR/USD both mean "price is moderately above the average relative to how much this instrument normally moves" β even though Bitcoin's raw price distance might be thousands of dollars while the forex pair's might be a fraction of a pip.
There are practical considerations:
Crypto (24/7 markets): No session boundaries, so no session-open warmup artifacts. The oscillator runs continuously, which is straightforward.
Forex: Works well on major pairs. On exotic pairs with thin liquidity, ATR may be erratic during low-volume periods, producing noisy normalization.
Futures: Works on continuous contracts. If you use a specific contract month, be aware that contract rolls can produce gaps that temporarily distort the MA and ATR calculations.
Stocks (regular hours): The oscillator runs on whatever bars your chart/session settings provide. Large overnight gaps can make the next session's early readings look jumpier because price, MA, and ATR are all reacting to a new volatility context.
The ATR-normalized scoring works across asset classes. Verify on your specific instrument and timeframe to confirm the readings are useful for your process β particularly that the default sensitivity produces a usable range. What works on volatile instruments may need different sensitivity on quiet ones.
Related: Multi-Ticker Mixing for using different instruments in the same pane, For the Geeks β Sensitivity experiment for calibrating sensitivity per instrument.
Why does the oscillator stay near +100 for so long?
Because the trend is strong and the tanh bounding function is working as designed.
The oscillator measures how far price sits from the moving average in ATR units. During a sustained trend, that distance stays large β price keeps moving away from the average, or the average has not caught up. The tanh function converts that large distance into a score near +100 and holds it there as long as the distance remains large relative to ATR.
This is different from RSI, which tends to oscillate out of extreme zones more readily. The tanh function has no built-in mean-reversion. It asymptotically approaches the bound and stays there until the underlying ratio changes. A reading at +95 that persists for fifty bars is the oscillator accurately reporting that price remains stretched β not a signal that a reversal is overdue.
If the oscillator spends too much time saturated near the bounds for your purposes, lower the sensitivity parameter. This keeps more of the distance range in the non-saturated zone, so the oscillator uses the center of the scale more and reaches the extremes only on truly large moves.
Full treatment: Limitations & Trust Boundaries β Saturation and For the Geeks β What the tanh function actually does
What does ATR Sensitivity actually change?
Sensitivity multiplies the ATR-normalized distance before the tanh bounding function is applied. It controls how much of the β100 to +100 range the oscillator actually uses under normal conditions.
At low sensitivity (0.3β0.5), the oscillator stays in the center of the range. Readings rarely approach Β±100. You get high resolution across a wide range of distances, but extreme zones are hard to reach. The OB/OS thresholds may rarely trigger.
At default sensitivity (1.0), moderate distance readings land in the Β±60 to Β±80 zone. Strong moves push toward Β±90 to Β±100. The oscillator uses a reasonable portion of the range.
At high sensitivity (2.0+), the oscillator reaches the extremes quickly and stays there. The zero crossing is sharp and decisive, but everything beyond a small distance from the MA is compressed near Β±100. The oscillator becomes nearly binary β above the MA reads near +100, below reads near β100.
The critical thing to understand: changing sensitivity changes what every number on the oscillator means. A reading of +70 at sensitivity 0.5 represents a larger actual distance than +70 at sensitivity 2.0. If you change sensitivity, recalibrate your interpretation of the levels.
Full treatment: Settings β ATR Sensitivity and For the Geeks β What sensitivity really controls
How is this different from MACD?
Both oscillators address a similar question β how far is price from a baseline? β but the construction and behavior are fundamentally different.
MACD computes the difference between two exponential moving averages (typically 12-period and 26-period). The result is unbounded and in the instrument's price units. A MACD reading of 5.0 on a $200 stock means something different from 5.0 on a $20 stock. MACD has no fixed scale, so there is no built-in notion of "overbought" or "oversold" β the range depends entirely on the instrument and its recent behavior.
Axiom MA Osc Lite measures the distance between source price and a single baseline MA, normalizes that distance by ATR, scales it by the sensitivity parameter, and bounds it through a tanh function into β100 to +100. The result is unitless and bounded. A reading of +60 means the same kind of thing on any instrument: price is moderately above the average relative to the instrument's own volatility.
The practical differences that matter:
Neither is better. They are different tools that share a family resemblance. MACD preserves absolute distance information at the cost of cross-context comparability. This oscillator sacrifices extreme-distance resolution for bounded, normalized, multi-context comparison. If you need to compare MA-distance across tickers or timeframes on the same scale, MACD cannot do that. If you need to see the raw magnitude of a move without compression, this oscillator cannot do that. Pick the one that serves the question you are actually asking.
Related: README β This is not RSI covers the comparison to RSI and Stochastic in similar terms.
Can I add more than three slots?
No. This script provides three independent MA slots.
Three slots cover the most common multi-timeframe configurations β short, intermediate, and session-level β and handle basic cross-ticker setups well.
One workaround: set a slot's weight to zero. The slot still plots its Fast line and fires its own alerts, but it does not contribute to the blend. This lets you use the blend for two slots while the third acts as an independent reference line. It does not add a fourth slot, but it separates observation from contribution.
Related: Settings β Blended Weight for how zero-weight slots work, Workflows β Regime-alert monitoring for a concrete setup using this technique.
Why did my alert fire but the chart does not look like it should have triggered?
Several common causes:
The alert is a continuous-state condition, not edge-triggered. The "Is Bullish" and "Is Bearish" alerts fire on every confirmed bar where the condition holds β not just when the state first begins. If the regime has been bullish for twenty bars, the alert fires twenty times. The alert you just received may not correspond to a new event β it may be a repeat of an ongoing state. Use the "Regime Flip" alert if you want transition-only notifications.
The alert fired on the bar close, but the current live bar has already moved past the triggering state. All alerts are bar-close gated. By the time you see the notification and check the chart, the current building bar may have changed the situation. The alert was true at the previous bar's close β which is confirmed data β but the live bar has moved on.
The blend crossed a level, but the individual slots do not seem to support it. A blended alert fires based on the composite reading, which is a weighted average. A single heavily-weighted slot can drive the blend past a threshold while the other slots are flat or in mild disagreement. The alert is correct β the blend did cross the level β but the "confirmation" you expected from the individual slots is not there because the blend was driven by one dominant slot.
Full treatment: Alerts covers all 18 conditions, the state-vs-event distinction, and overtrust risks for each alert type.
If I set a slot's weight to zero, does the slot still do anything?
Yes. A weight-zero slot:
Still computes its Fast and Slow values
Still plots its Fast line in the pane (unless hidden)
Still fires its per-slot alerts (Is Bullish, Is Bearish, Regime Flip)
Does not contribute to the blended Fast/Slow lines
Still counts toward alignment alerts (All Slots Bullish/Bearish) if the slot is enabled and producing data
This is the intended way to keep a slot as an independent visual and alert monitor without letting it pull the blend. It is different from disabling the slot (which shuts everything off) and different from hiding the plot (which hides the line but still contributes to the blend at the configured weight).
Full treatment: Settings β Blended Weight and the Settings β dependency map for the full comparison of Enable, Hide Plot, and Weight 0.