Round Number Rejection Planner [AGPro Series]# Round Number Rejection Planner
🧠 Core Idea
Is the round number acting as rejection, magnet, or failed reference?
📌 Overview / What it does
Round Number Rejection Planner is a psychological price level decision-support script built to evaluate how price reacts around nearby round numbers.
The script maps adaptive round-number bands, detects wick-based rejection behavior, separates rejection from magnet conditions, scores the context from 0 to 100, and summarizes the current state inside a compact AG Pro panel.
It does not predict price direction, automate trades, or provide guaranteed signals. It is designed to organize round-number context, rejection quality, distance, failure risk, and action state into a clean visual workflow.
🎯 Purpose & Design Philosophy
Round numbers often attract attention because they are easy reference points for traders, algorithms, stops, targets, and liquidity.
This script was built for traders who want to evaluate whether price is respecting a psychological level, getting pulled toward it, or failing to reject it cleanly.
The design supports structured observation instead of treating every round-number touch as a signal.
⚡ Why This Script Is Different
Most tools draw psychological levels or mark round numbers.
This script does NOT stop at drawing levels.
Instead, it evaluates the behavior around the level: wick rejection, close location, distance, reaction count, volatility fit, and failure risk.
⚙️ Methodology
1. Adaptive Round Level Detection
2. Psychological Band Mapping
3. Wick Rejection Evaluation
4. Magnet And Failure Risk Detection
5. 0-100 Rejection Score
6. Panel And Alert Output
🗺️ How to Read the Chart
The active round band marks the nearest psychological price zone.
Nearby round rails show the next upper and lower round references.
READY REJECTION labels appear when wick response, close location, and score quality align.
Magnet or failed-reference states appear when price interacts with the level without a clean rejection.
The panel summarizes Round Level, Rejection Score, Distance, Failure Risk, and Action.
🚦 Signals & States
• READY → A qualified round-number rejection has formed.
• MONITOR → Price is near the round number but rejection quality is not yet strong enough.
• WAIT → No active round-number context is close enough to evaluate.
• INVALIDATED → Price failed through the level instead of rejecting it.
• BLOCKED → The script cannot define a valid round-number context.
🔔 Alerts Logic
Bullish Round Number Rejection Ready triggers when price rejects upward from a round-number band with enough quality.
Bearish Round Number Rejection Ready triggers when price rejects downward from a round-number band with enough quality.
Round Number Magnet Warning triggers when price is close to the level but rejection quality is weak.
Round Number Rejection Invalidated triggers when price fails through the level instead of respecting it.
Alerts are attention markers, not trade instructions.
🧩 Confluence Logic
The rejection score combines wick strength, close distance from the level, proximity, recent reaction count, relative volume, and volatility fit.
When several of these conditions align, the context becomes stronger.
When they do not align, the script remains in WAIT, MONITOR, INVALIDATED, or BLOCKED state.
📊 When to Use
• Psychological level analysis
• Intraday price action workflows
• Round-number rejection setups
• Stop and liquidity reaction observation
• Support and resistance context around visible price levels
⚠️ When NOT to Use
Avoid relying on this script in extremely illiquid markets, very noisy symbols, holiday sessions, or conditions where round numbers are not meaningful to participants.
It should not be used as a standalone decision tool without broader market context, risk planning, and independent confirmation.
🎛️ Key Inputs
• Round Level Mode controls whether level spacing is automatic or manual.
• Manual Round Step defines custom level spacing when manual mode is selected.
• Round Band ATR controls the width of the psychological level band.
• Max Active Distance controls how close price must be before evaluation begins.
• Minimum Ready Score controls how strong the rejection must be before READY appears.
• Failure Risk Threshold controls when weak rejection or magnet behavior blocks READY.
• Visual settings control bands, rails, labels, right-side tags, panel location, and font size.
🖥️ Interface & Visual Design
The interface is designed to make the active psychological level readable without flooding the chart.
The chart shows the active round band, nearby round rails, failure shelf, and relevant rejection labels.
The AG Pro panel provides compact decision context while preserving chart visibility.
🧪 Practical Usage Workflow
1. Check the active round level in the panel.
2. Observe whether price is touching or rejecting the round band.
3. Read the rejection score and failure risk.
4. Check whether the action state is READY, MONITOR, WAIT, INVALIDATED, or BLOCKED.
5. Confirm the context with broader trend, liquidity, volatility, and risk structure.
🔍 Interpretation Guidelines
A higher rejection score means the round-number reaction is cleaner according to the script logic.
A high failure risk means the level may be acting more like a magnet or failed reference.
READY means the rejection context deserves attention, not that price must reverse.
MONITOR means price is near the level but the reaction is not yet clean enough.
🚫 What This Script Is NOT
This script is not a prediction engine.
It is not financial advice.
It is not an auto-trading system.
It does not provide guaranteed signals.
It does not replace risk management or independent analysis.
⚠️ Limitations & Transparency
Round-number behavior changes across markets, symbols, timeframes, volatility regimes, and liquidity conditions.
The score is rule-based and depends on wick behavior, close location, distance, relative volume, and ATR normalization.
Different symbols may require different round-step or sensitivity settings.
🧠 Market Context Notes
Round-number rejection can be more meaningful when aligned with liquidity response, trend context, session timing, volume participation, and nearby structure.
Weak rejection near a level can become magnet behavior instead of a clean turn.
🔐 Non-Promise Statement
No script can guarantee future price behavior.
This tool provides structured visual context only.
📉 Risk Disclosure
Trading involves risk.
Users remain responsible for their own decisions.
This script is for educational and analytical purposes only and does not provide financial advice or guaranteed trading outcomes.
Indicator

Round Number Magnet Map [AGPro Series]Round Number Magnet Map
════════════════════════════════════════
🔹 OVERVIEW
Round numbers act as psychological magnets on every liquid market. Traders cluster stop orders, limit orders, and mental entries around levels like 2000, 2400, 50000. These levels attract price, get tested repeatedly, and either hold with sharp reactions or break with decisive momentum. Yet most round-number tools ship a hard-coded list (100, 500, 1000) that works on some charts and fails on others.
Round Number Magnet Map is a psychological level engine that detects the right round numbers for any symbol automatically, tracks every touch with a composite reaction grading system, and ranks the strongest magnets in a professional leaderboard. It works out of the box on Bitcoin at 100k, on Ethereum at 2k, on Solana at 10, on EUR/USD at 1.05, on the S&P 500 at 5000, and on gold at 2400 — no configuration required. Traders who prefer manual control can override the auto-detected tiers with their own comma-separated list.
The indicator is asset-agnostic, non-repainting, bar-confirmed, and optimized for speed. It is designed to be a permanent chart companion on any timeframe.
🔹 UNIQUE EDGE
What separates Round Number Magnet Map from generic round-number indicators:
1. Asset-aware auto-detection. The script reads current price magnitude and selects the correct tier spacing automatically — 10000/5000/1000 for high-cap assets, 100/50/10 for mid-cap, 0.01/0.005/0.001 for forex majors. Three nested tiers render simultaneously so both major and minor psychological levels are visible with a clear visual hierarchy.
2. Composite reaction grading. Each touch is not just counted — it is graded. The script combines three inputs: ATR reaction (how many ATRs price traveled after the touch), wick rejection ratio (how strongly the touch bar rejected the level), and relative volume (whether institutional flow confirmed the reaction). The result is a 0-100 score mapped to A/B/C/D grades, so traders can distinguish a truly respected magnet from a level that price simply grazed.
3. Broken-level recovery logic. Most tools mark a level as "broken" the first time price closes through it and leave it broken forever. That is wrong on round numbers — price oscillates around 2000, 3000, 10000 repeatedly across months and years. This engine un-breaks a level the moment price returns to its zone, so the map always reflects current reality.
4. On-chart leaderboard. The panel ranks the top 5 most-touched levels visible in the current chart window, with touch count and composite grade, so the strongest magnets are always one glance away.
5. Clean by design. Rendering is restricted to an ATR-scaled window around current price, with optional toggles to hide broken and untouched levels. The chart stays readable even on high timeframes where dozens of round numbers would otherwise clutter the view.
🔹 METHODOLOGY
Tier generation. When auto-detect is enabled, the script classifies current price into a magnitude bucket (>10000, 1000-10000, 100-1000, 10-100, 1-10, <1, etc.) and assigns a three-tier spacing. Tier 0 is the major step, tier 1 is a half-step, tier 2 is a fine step. All three tiers are generated around current price within an ATR-scaled search range, deduplicated, and capped at a configurable maximum (default 20).
Touch detection. Each level is surrounded by a zone of thickness (ATR × configurable multiplier, default 0.20). A touch is registered when a bar's high-low range intersects the zone and at least N bars have passed since the last touch on that level (cooldown, default 5). This prevents a single consolidation from inflating the touch count.
Reaction grading. Exactly N bars after a touch (default 5), the script computes:
• ATR reaction (60% weight): maximum favorable excursion from the level in the direction of the test, normalized against a target of 2 ATRs = score 100.
• Wick rejection (25% weight): the rejection wick on the touch bar relative to the bar's range.
• Relative volume (15% weight): volume on the touch bar relative to the 20-bar average.
The three components are combined into a single 0-100 composite score. Scores of 80+ are grade A, 65-80 are grade B, 45-65 are grade C, below 45 are grade D.
Break detection. A level is marked as broken only when, during a reaction grading, price has closed beyond the zone by an additional 0.3 ATR in the opposite direction of the test. This strict criterion avoids false breaks from single wicks or low-conviction closes. Broken levels are un-marked automatically when price returns to the zone.
Rendering. Active non-broken levels render as solid blue lines with an optional S/R-style zone box. Broken levels render as dashed gray lines with a BRK badge. Labels show price, touch count, and grade. Priority-0 (major) levels render with increased line width, and levels within 1 ATR of price render thicker still (magnet effect).
🔹 SIGNALS & ALERTS
The script generates four non-repainting, bar-confirmed alert conditions:
• Touch — price has entered a round-number zone.
• Held (Strong Reaction) — a touch has resolved with a composite score ≥ 60, meaning the level held with meaningful reaction strength.
• Broken — a level has been decisively broken by a strong close beyond the zone.
• Magnet Approach — price is within 0.5 ATR of a level, approaching without yet touching.
Each alert fires at bar close and carries ticker and timeframe tokens for routing to external automation.
🔹 KEY INPUTS
Detection
• Auto-Detect Tiers — asset-aware tier selection (recommended).
• Custom Tiers — comma-separated override (e.g., "1000,500,100" for BTC).
• Level Search Range — how far from price to generate levels, in ATR-scaled units.
• Max Active Levels — hard cap on rendered levels (default 20).
Touch & Zone
• Zone Thickness — size of each round-number zone in ATR units (default 0.20).
• ATR Length — period for ATR used in zone and reaction calculations (default 14).
• Touch Cooldown — minimum bars between touches on the same level (default 5).
• Reaction Window — bars after a touch used for reaction grading (default 5).
Reaction Grading
• Weight: ATR Reaction / Wick Rejection / Relative Volume — configurable composite weights. Weights are normalized automatically if they do not sum to 1.
• ATR Normalization Target — the ATR-reaction value that maps to score 100.
Visuals
• Show Zones, Show Level Labels, Hide Broken Levels, Hide Untouched Levels, Magnet Effect.
• Far Levels Transparency, Label Size, Label Offset.
Panel
• Show Panel, Panel Location (6 options), Panel Theme (Dark/Light), Panel Font Size.
Alerts
• Independent toggles for Touch, Held, Broken, Magnet Approach.
🔹 HOW TO USE
The indicator is designed for discretionary trading and framework-based decision making. A few practical patterns:
1. Use the nearest Above and Below levels in the panel as your immediate target and invalidation reference. The Strongest line on the panel is the highest-conviction magnet in view.
2. Grade A and B levels are historically respected by this market. When price approaches one, expect a reaction. When price approaches a Grade D level, expect a clean pass-through or a trap.
3. Confluence with other tools. Round numbers combined with a swing high/low, a moving average, or a Fibonacci level are far more likely to hold than a round number alone. Treat this indicator as one layer in a stacked decision framework.
4. Timeframe selection. Use higher timeframes (1D, 4H) to identify the dominant magnets for position trading, and drop to lower timeframes (1H, 15m) for execution around those same levels.
5. Broken levels are still information. A dashed level with 20+ historical touches is a zone where liquidity has been swept and where retests often provide re-entry opportunities.
🔹 LIMITATIONS & TRANSPARENCY
• This tool identifies psychological levels and grades their historical reaction quality. It does not predict price direction and it is not a trading strategy. Use it as part of a complete decision framework.
• Reaction grades are historical, not forward-looking. A level that held five times may still break on the next test, especially in strong trending conditions or during high-impact news events.
• Touch counts depend on chart history. On symbols with limited history, recent levels may have fewer touches than their true significance warrants.
• The reaction window is fixed (default 5 bars). Reactions that take longer to develop will be graded as weaker than they truly are. Adjust the window to match the instrument and timeframe.
• Extremely low-volume symbols may produce noisy reaction scores because the relative-volume component becomes unreliable. Reduce its weight to 0 in such cases.
🔹 RISK DISCLOSURE
This indicator is a technical analysis tool for educational and discretionary decision support. It does not constitute financial advice, investment advice, a solicitation, or a recommendation to buy or sell any instrument. Past reactions at any level do not guarantee future behavior. All trading involves substantial risk of loss. You are solely responsible for your trading decisions and for managing your capital.
Indicator

Whole number highlightsThis very simple indicator provides what should be a built-in PulseWire feature: it highlights the whole number currency amounts (dollar, pound, euro, etc.) on your chart with a simple and unobtrusive dotted line. By default, a slightly thicker dotted line is used on whole number multiples of ten.
These are important to highlight because they often act as "psychological levels" in the marketplace, especially when they coincide with more significant levels of support or resistance. They can also help provide a sense of scale to the chart, which is useful when switching between various zoom levels.
It's open-source, so it can be easily combined into other indicators, which should especially be useful for those with limited plans who are allowed a limited number of indicators.
Disclaimer : Use at your own risk. This indicator and the strategy described herein are not in any way financial advice, nor does the author of this script make any claims about the effectiveness of this indicator or of any related strategy, which may depend highly on the discretion and skill of the trader executing it, among many other factors outside of the author's control. The author of this script accepts no liability, and is not responsible for any trading decisions that you may or may not make as a result of this indicator. You should expect to lose money if using this indicator. Indicator

Psychological levels (Bank levels) PsychoLevels v3 - TartigradiaPsychological levels (Bank levels) plots the closest "round" price levels above and below current price, based on neuroscience research of how humans intuitively calculate in logarithms.
Psychological levels, also called bank levels, are "round" price numbers, by truncating after the nth leftmost digits, around which price often experience resistance or support, because traders and investors tend to set orders around these round numbers.
The calculation done here is fully automatic and dynamic, contrary to other similar scripts, this one uses a mathematical calculation that extracts the 1, 2 or 3 leftmost digits and calculate the previous and next level by incrementing/decrementing these digits. This means it works for any symbol under any price range.
This approach is based on neuroscience research, which found that human brains intuitively approximate numbers on a logarithmic scale, adults and children alike, and similarly to macaques, for more info see Numerical Cognition , Weber-Fechner Law , Zipf law .
For example, if price is at 0.0421, the next major price level is 0.05 and medium one is 0.043. For another asset currently priced at 19354, the next and previous major price levels are 20000 and 10000 respectively, and the next/previous medium levels are 20000 and 19000, and the next/previous weak levels are 19400 and 19300.
IMPORTANT: Please enable "Scale price chart only" in the chart's scale's options, as otherwise major levels may make the chart's scale very small and hard to read.
How it works
At any time, there are 3 levels of strength (1 leftmost digit, 2 leftmost digits, 3 leftmost digits) represented by different sizes, and 3 directional levels for each of these strengths (level above, level below, and half-level) represented by different colors and positions, around current price.
Indeed, contrary to other similar price levels scripts, we do not plot ALL price levels at all times, because otherwise the chart becomes wayyy too cluttered, and also it's highly processing intensive to plot so many lines. So we here use a dynamical approach: we plot only the relevant levels, the closest ones according to current price.
Hence, when a level disappears, it does not mean that it does not exist anymore, but simply that we are not drawing it right now because it is not pertinent for the current price movement (ie, too far away).
Breakouts can be detected in two different ways depending on if SMA is set to a value higher than 1 or not: if SMA == 1, then there is no smoothing, so the levels adapt instantaneously to the current price, so to detect breakout, you should refer to the levels at the previous tick and whether they were broken by current tick's price; if SMA > 1, then there is some smoothing, and so the levels will stay in-place even if there is a breakout, so it's easier to spot breakouts without having to look at the previous ticks, but on the other hand you won't see the new levels for the new price range until after a few more ticks for the smoothing window to adapt. Hence, by default, smoothing is disabled, so that you can see the currently pertinent levels at all time, even right after or during a breakout.
By default, the strong above level is in green, strong below level is in red, medium above level is in blue, medium below level is in yellow, and weak levels aren't displayed but can be. Half levels are also displayed, in a darker color. Strong levels are increments of the first leftmost digit (eg, 10000 to 20000), medium levels are increments of the second leftmost digit (eg, 19000 to 20000), and weak levels of the third leftmost digit (eg, 19100 to 19200). Instead of plotting all the psychological levels all at once as a grid, which makes the chart unintelligible, here the levels adapt dynamically around the current price, so that they show the above/below/half levels relatively to the current price.
Indeed, "half-levels" are also displayed (eg, medium level can also display 19500 instead of only 19000 or 20000). This was made because otherwise the gap between two levels was too big, especially for the strongest levels (eg, there was no major level between 20000 and 30000, but with a half-step we also get a half-level at 25000, and empirically price tends to respect these half levels - I also tried quarter levels but empirically the results were not good). In addition to this hard-coded half-level, you can also create more subdivisions (eg, quarter levels) by setting the simple moving average to a value higher than 1.
The script can be made to run on the daily timeframe whatever the current chart's timeframe is, to reduce the variability in levels, to make it less noisy than intraday price movement. But by default, the chart resolution is used, because I empirically found that the levels found with this indicator work on all time resolutions quite well.
The step can be adjusted to increase the gap between levels, eg, if you want to display one every 2 levels then input step = 2 (eg, 22000, 24000, 26000, etc), or if you want to display quarter levels, input 0.25 (eg, 22000, 22250, 22500, etc). The default values should fit most use cases and cover most psychological levels.
How to read
Focust first on bigger dotted levels, they are stronger and more likely to cause a rebound or a major event or price to stay at this level.
Remember that it's not enough to just look at levels, the context is important, because levels have various effects depending on current price movement: if price is above a level, the level is a support on which price can rebound; if price is below a level, the level is a resistance on which price can rebound (or break); and finally sometimes price also stays hovering around a level for some time.
Levels closer to 9 are less weaker, and levels closer to 0 are stronger, according to Zipf law. This is now reflected since v3 in the transparency, levels that are closer to 9 will be more transparent.
The switch in color for the same level illustrates how a level switches from being a support to a resistance and inversely. Eg, if a major level turns from green to red, then it changed from being a resistance (above) to a support (below).
As is well known in trading, longer standing levels are stronger. This indicator provides a direct illustration: in practice, the number of consecutive dots on the same line influences the strength of the level: the longer the chain of dots, the more you can expect this price level to be significant. The length does not mean the level will necessarily hold, but that other traders are likely to monitor if it holds, and if not then price will break down. Hence, longer levels are good spots to place stop losses, or to enter trades depending on your strategy. In general, a single dot is not enough to consider a level significant, but 2 or more is a good enough level, and 10+ is a strong level. Intuitively, this makes sense, and is what pro traders do: the longer a level is tested, the stronger it is. This indicator can visually represent this intuition and allows to use it as a more systematic trading signal.
Motivation
I initially made the first version of the PsychoLevels indicator mainly to train with PineScript, but I found it surprisingly accurate to define levels that are respected by price movements. So I guess it can be useful for new traders and experienced traders alike, as it's easy to forget that psychological levels can often be as strong if not stronger than technical levels. It can also be used to quickly screen other minor assets for trading opportunities. For example, a hybrid strategy would be to manually define levels on BTCUSD but using this script to automatically define levels in crypto altcoins and quickly screen them for a trade opportunity that can be greater than with BTCUSD but with the same trend.
Personally, although initially I did not believe an automated tool would work well for this purpose, I could now empirically verify that it is quite reliable for the purpose of detecting levels, and so I use it all the time to find the levels automatically and help me monitor them like a hawk, so that I only have to draw uber major levels, the ones that last between cycles and that are hard to autodetect, but otherwise all daily/weekly levels are usually covered. However, trendlines must still be drawn manually or with another indicator (but note that up to now I have found none that worked well enough), as PsychoLevels only draws levels (ie, horizontal lines, not oblique ones!).
Differences with the previous version PsychoLevels v2
price levels now have a transparency according to their importance for the human brain: numbers closer to 9 are weaker, and numbers closer to 0 are stronger and represent a major psychological threshold (eg, that's why prices marked as $9.99 sell better than $10.00). This option can be disabled to get the exact same behavior as v2.
modularized and typed code
PsychoLevels v2 can be found here:
Indicator

Psychological levels (Bank levels) PsychoLevels v2 - TartigradiaPsychological levels (Bank levels) plots "round" price levels above and below current price, by truncating after the nth leftmost digits, based on neuroscience research of how humans intuitively calculate in logarithms.
Psychological levels, also called bank levels, are "round" price numbers around which price often experience resistance or support, because traders and investors tend to set orders around these round numbers.
Calculation here is fully automatic and dynamic, contrary to other similar scripts, this one uses a mathematical calculation that extracts the 1, 2 or 3 leftmost digits and calculate the previous and next level by incrementing/decrementing these digits. This means it works for any symbol under any price range.
This approach is based on neuroscience research, which found that human brains intuitively approximate numbers on a logarithmic scale, adults and children alike, and similarly to macaques, for more info see Numerical Cognition , Weber-Fechner Law , Zipf law.
For example, if price is at 0.0421, the next major price level is 0.05 and medium one is 0.043. For another asset currently priced at 19354, the next and previous major price levels are 20000 and 10000 respectively, and the next/previous medium levels are 20000 and 19000, and the next/previous weak levels are 19400 and 19300.
Usage:
* By default, strong upper level is in green, strong lower level is in red, medium upper level is in blue, medium lower level is in yellow, and weak levels aren't displayed but can be. Half levels are also displayed, in a darker color. Strong levels are increments of the first leftmost digit (eg, 10000 to 20000), medium levels are increments of the second leftmost digit (eg, 19000 to 20000), and weak levels of the third leftmost digit (eg, 19100 to 19200). Instead of plotting all the psychological levels all at once as a grid, which makes the chart unintelligible, here the levels adapt dynamically around the current price, so that they show the upper/lower levels relatively to the current price.
* A simple moving average is implemented, so that "half-levels" are also displayed when relevant (eg, medium level can also display 19500 instead of only 19000 or 20000). This can be disabled by setting smoothing to 1.
* By default, the script runs on the daily timeframe, whatever the current chart's timeframe is. This is to reduce the variability in levels, to make it less noisy than intraday price movement, but this can be changed in the settings.
* The step can be adjusted to increase the gap between levels, eg, if you want to display one every 2 levels then input step = 2 (eg, 22000, 24000, 26000, etc), or if you want to display quarter levels, input 0.25 (eg, 22000, 22250, 22500, etc). The default values should fit most use cases and cover most psychological levels.
I made this script mainly to train with PineScript, but I found it surprisingly accurate to define levels that are respected by price movements. So I guess it can be useful for new traders and experienced traders alike, as it's easy to forget that psychological levels can often be as strong if not stronger than technical levels. It can also be used to quickly screen other minor assets for trading opportunities. For example, a hybrid strategy would be to manually define levels on BTCUSD but using this script to automatically define levels in crypto altcoins and quickly screen them for a trade opportunity that can be greater than with BTCUSD but with the same trend.
Changes compared to v1:
* Deduplicated redundant calculations and hence faster script.
* Added half-step levels, which allows to more easily see breakouts (because the levels are still on-screen).
* All steps are now configuration on the GUI.
* Revamped color scheme.
* And major reasons to post as a separate v2 script rather than updating: because we can't update the original description nor screenshot. I have now read more about the House Rules and saw other scriptmakers, so I am trying to write better descriptions like wizards do, by explaining not only how the script works but what the underlying financial concept is to a neophyte audience. Indicator

Indicator

Strategy

Indicator

Indicator

Indicator

Indicator

Indicator
