OPEN-SOURCE SCRIPT
מעודכן Square Bar/Calendar Count Verticals (Gann)

█ OVERVIEW
Square Bar/Calendar Count Verticals plots vertical time lines on the chart at squared counts measured from user-selected pivot anchors, in two independent units: trading bars and calendar days. The thesis, drawn from W.D. Gann's time-counting methods, is that elapsed time from a significant price extreme reaching a perfect square (81, 100, 121, 144, 289, 361) marks a date of elevated probability for a trend pause, inflection, or termination, and that the strongest of these dates occur where a bar-count square and a calendar-day square coincide.
█ HISTORY / BACKGROUND
Counting time in squares from major highs and lows originates with W.D. Gann, who treated time and price as interchangeable quantities and used the squares of small integers as recurring measures of trend duration. Constance Brown's published work on Gann analysis demonstrates the method in modern markets: bar counts of 9², 10², 11², and 12² projected from a swing extreme, a 17² calendar-day count from a significant low, repeats of the 144 count monitored from key pivots, and the square of 19 tracked as a separate helix cycle. This indicator implements that specific working set as a chart tool.
The conceptual basis is that these verticals are time factors only. They carry no directional information. Their value is realized when a squared count expires while price is simultaneously at a level identified by independent price-based methods.
█ HOW IT WORKS
1 — The user supplies a comma-separated list of roots (default 9,10,11,12,17,19). At the first bar the script parses the list and computes the square of each root.
2 — Each of up to three anchors is a timestamp selected on the chart. The anchor is resolved to a bar by containment: the anchor bar is the first bar whose closing time exceeds the anchor timestamp. This makes resolution independent of exchange timezone and safe when the timestamp falls on a weekend or holiday.
3 — For every anchor and every square s, the script computes two targets:
- a trading-bar target at anchor bar index + s (bar unit follows the chart timeframe), and
- a calendar-day target at anchor time + s days (independent of timeframe).
With inclusive counting enabled (default) the anchor bar or anchor day is counted as 1, so targets land at s minus 1 units after the anchor.
4 — When the root 12 is present and the repeat setting exceeds 1, additional verticals are drawn at 288, 432, and further multiples of 144, in both units, up to the chosen repeat count.
5 — On the last bar the script draws the verticals once: solid lines in bar-index coordinates for bar squares (projected up to roughly 490 bars into the future) and dashed lines in time coordinates for calendar squares (projectable to any future date). Each line carries a label naming the root, the square, and the unit. The anchor itself is marked with a heavier line and a date label.
6 — A status table reports, per active anchor, the elapsed count in both units and the next upcoming square in each unit, with the bars remaining and the calendar date.
7 — Three alert conditions fire on the bar that completes a bar-count square, the bar that contains a calendar-day square date, and the bar on which both occur together.
█ HOW TO USE
The verticals are appointments in time, not signals. The intended workflow:
- Anchor each slot on a significant swing extreme. Significance is an analytical judgment; the script deliberately performs no automatic pivot detection.
- Validate an anchor by inspecting the verticals already in the past. If historical squared counts from that anchor align with real pivots, the anchor is worth keeping. If they align with nothing, move or disable it.
- When price approaches an upcoming vertical, consult independent price analysis. A squared count expiring while price sits at a level derived from other methods is the condition of interest. A squared count expiring in open space warns at most of a pause or stall.
- The highest-weight event this tool can flag is the third alert: a bar square and a calendar square completing on the same bar.
Bar counts are timeframe-relative by design: the same anchor produces different bar-square dates on daily and weekly charts, and both are legitimate counts on their own timeframe. Calendar-day counts are identical on every timeframe. The tool is designed for daily and weekly swing analysis, where Gann's counts were applied; on intraday charts the calendar counts remain valid but bar counts become session-dependent.
Visual elements: solid vertical lines are trading-bar squares, dashed vertical lines are calendar-day squares, the heavy line with a date label is the anchor, labels above price name bar counts, labels below price name calendar counts, and the top-right table summarizes elapsed and upcoming counts.
█ SETTINGS
- Square roots: comma-separated integer roots to square. Default 9,10,11,12,17,19.
- Inclusive count: anchor bar or day counts as 1 when enabled. Default on.
- Trading-bar squares: show or hide bar-count verticals. Default on.
- Calendar-day squares: show or hide calendar-count verticals. Default on.
- 144-cycle repeats: number of 144 multiples to project; 1 disables repeats. Default 3.
- Anchor 1, 2, 3: enable flag, pivot timestamp (Anchor 1 prompts for a chart click on load), and line color per anchor. Defaults: Anchor 1 enabled, Anchors 2 and 3 disabled.
- Status table: show or hide the summary table. Default on.
- Label size: tiny, small, or normal. Default small.
█ WHAT MAKES IT ORIGINAL
Most Gann-count scripts plot a single count series in a single unit. This implementation differs in three specific ways. First, it runs trading-bar and calendar-day counts in parallel from the same anchor and explicitly detects their coincidence, which is the confluence condition emphasized in the source methodology rather than an afterthought. Second, anchor resolution uses closing-time containment instead of naive date equality, so anchors survive timezone differences, weekends, and holidays without silently shifting by one bar. Third, projection is handled correctly per unit: calendar squares are drawn in time coordinates and can therefore mark dates arbitrarily far in the future, while bar squares are drawn in bar coordinates and are projected only within the platform's future-bar range, keeping both unit systems accurate to their own definition.
█ NOTES / LIMITATIONS
- Drawings are created once per script load on the last bar. As new realtime bars form, elapsed counts in the table and newly reachable verticals refresh only when the script recalculates, for example after a settings change or chart reload.
- Bar-count verticals can be projected at most about 490 bars beyond the current bar, a platform ceiling on future bar-index coordinates. Calendar-day verticals have no such ceiling.
- The script draws up to 500 lines and 500 labels. Many roots combined with three anchors, both units, and repeats can reach this ceiling, at which point the oldest objects are removed.
- If an anchor timestamp predates the symbol's available history, the anchor resolves to the first available bar and every count measures from there, which is unlikely to be the intended pivot.
- Bar counts depend on the chart timeframe and on the symbol's session definition. Symbols with irregular sessions or many holidays will show bar squares and calendar squares diverging substantially, which is expected behavior, not an error.
- The indicator plots time factors only. It produces no directional forecast, and no claim is made about the outcome of price at any vertical.
Square Bar/Calendar Count Verticals plots vertical time lines on the chart at squared counts measured from user-selected pivot anchors, in two independent units: trading bars and calendar days. The thesis, drawn from W.D. Gann's time-counting methods, is that elapsed time from a significant price extreme reaching a perfect square (81, 100, 121, 144, 289, 361) marks a date of elevated probability for a trend pause, inflection, or termination, and that the strongest of these dates occur where a bar-count square and a calendar-day square coincide.
█ HISTORY / BACKGROUND
Counting time in squares from major highs and lows originates with W.D. Gann, who treated time and price as interchangeable quantities and used the squares of small integers as recurring measures of trend duration. Constance Brown's published work on Gann analysis demonstrates the method in modern markets: bar counts of 9², 10², 11², and 12² projected from a swing extreme, a 17² calendar-day count from a significant low, repeats of the 144 count monitored from key pivots, and the square of 19 tracked as a separate helix cycle. This indicator implements that specific working set as a chart tool.
The conceptual basis is that these verticals are time factors only. They carry no directional information. Their value is realized when a squared count expires while price is simultaneously at a level identified by independent price-based methods.
█ HOW IT WORKS
1 — The user supplies a comma-separated list of roots (default 9,10,11,12,17,19). At the first bar the script parses the list and computes the square of each root.
2 — Each of up to three anchors is a timestamp selected on the chart. The anchor is resolved to a bar by containment: the anchor bar is the first bar whose closing time exceeds the anchor timestamp. This makes resolution independent of exchange timezone and safe when the timestamp falls on a weekend or holiday.
3 — For every anchor and every square s, the script computes two targets:
- a trading-bar target at anchor bar index + s (bar unit follows the chart timeframe), and
- a calendar-day target at anchor time + s days (independent of timeframe).
With inclusive counting enabled (default) the anchor bar or anchor day is counted as 1, so targets land at s minus 1 units after the anchor.
4 — When the root 12 is present and the repeat setting exceeds 1, additional verticals are drawn at 288, 432, and further multiples of 144, in both units, up to the chosen repeat count.
5 — On the last bar the script draws the verticals once: solid lines in bar-index coordinates for bar squares (projected up to roughly 490 bars into the future) and dashed lines in time coordinates for calendar squares (projectable to any future date). Each line carries a label naming the root, the square, and the unit. The anchor itself is marked with a heavier line and a date label.
6 — A status table reports, per active anchor, the elapsed count in both units and the next upcoming square in each unit, with the bars remaining and the calendar date.
7 — Three alert conditions fire on the bar that completes a bar-count square, the bar that contains a calendar-day square date, and the bar on which both occur together.
█ HOW TO USE
The verticals are appointments in time, not signals. The intended workflow:
- Anchor each slot on a significant swing extreme. Significance is an analytical judgment; the script deliberately performs no automatic pivot detection.
- Validate an anchor by inspecting the verticals already in the past. If historical squared counts from that anchor align with real pivots, the anchor is worth keeping. If they align with nothing, move or disable it.
- When price approaches an upcoming vertical, consult independent price analysis. A squared count expiring while price sits at a level derived from other methods is the condition of interest. A squared count expiring in open space warns at most of a pause or stall.
- The highest-weight event this tool can flag is the third alert: a bar square and a calendar square completing on the same bar.
Bar counts are timeframe-relative by design: the same anchor produces different bar-square dates on daily and weekly charts, and both are legitimate counts on their own timeframe. Calendar-day counts are identical on every timeframe. The tool is designed for daily and weekly swing analysis, where Gann's counts were applied; on intraday charts the calendar counts remain valid but bar counts become session-dependent.
Visual elements: solid vertical lines are trading-bar squares, dashed vertical lines are calendar-day squares, the heavy line with a date label is the anchor, labels above price name bar counts, labels below price name calendar counts, and the top-right table summarizes elapsed and upcoming counts.
█ SETTINGS
- Square roots: comma-separated integer roots to square. Default 9,10,11,12,17,19.
- Inclusive count: anchor bar or day counts as 1 when enabled. Default on.
- Trading-bar squares: show or hide bar-count verticals. Default on.
- Calendar-day squares: show or hide calendar-count verticals. Default on.
- 144-cycle repeats: number of 144 multiples to project; 1 disables repeats. Default 3.
- Anchor 1, 2, 3: enable flag, pivot timestamp (Anchor 1 prompts for a chart click on load), and line color per anchor. Defaults: Anchor 1 enabled, Anchors 2 and 3 disabled.
- Status table: show or hide the summary table. Default on.
- Label size: tiny, small, or normal. Default small.
█ WHAT MAKES IT ORIGINAL
Most Gann-count scripts plot a single count series in a single unit. This implementation differs in three specific ways. First, it runs trading-bar and calendar-day counts in parallel from the same anchor and explicitly detects their coincidence, which is the confluence condition emphasized in the source methodology rather than an afterthought. Second, anchor resolution uses closing-time containment instead of naive date equality, so anchors survive timezone differences, weekends, and holidays without silently shifting by one bar. Third, projection is handled correctly per unit: calendar squares are drawn in time coordinates and can therefore mark dates arbitrarily far in the future, while bar squares are drawn in bar coordinates and are projected only within the platform's future-bar range, keeping both unit systems accurate to their own definition.
█ NOTES / LIMITATIONS
- Drawings are created once per script load on the last bar. As new realtime bars form, elapsed counts in the table and newly reachable verticals refresh only when the script recalculates, for example after a settings change or chart reload.
- Bar-count verticals can be projected at most about 490 bars beyond the current bar, a platform ceiling on future bar-index coordinates. Calendar-day verticals have no such ceiling.
- The script draws up to 500 lines and 500 labels. Many roots combined with three anchors, both units, and repeats can reach this ceiling, at which point the oldest objects are removed.
- If an anchor timestamp predates the symbol's available history, the anchor resolves to the first available bar and every count measures from there, which is unlikely to be the intended pivot.
- Bar counts depend on the chart timeframe and on the symbol's session definition. Symbols with irregular sessions or many holidays will show bar squares and calendar squares diverging substantially, which is expected behavior, not an error.
- The indicator plots time factors only. It produces no directional forecast, and no claim is made about the outcome of price at any vertical.
הערות שחרור
v2: confluence windows, timeframe-independent calendar counts, live refreshNEW
- Confluence windows: squares from two or more different anchors that land within ±1 bar (adjustable) are marked with a white line, a shaded span, the date and the contributing squares. Windows still ahead are marked too. The status table shows the next one, and a new alert fires on the first bar of each window.
- Separate root lists. Trading-bar roots default to 9, 10, 11, 12, 19. Calendar-day roots default to 7 through 19, Gann's running count of every square.
- Trading-bar squares have an Auto mode (default) that draws them only on charts above 1D, following Brown's use of calendar counts on daily charts and bar counts on 2-week charts.
- 19² (361) is drawn heavier.
- On daily charts, future calendar squares are placed using the symbol's own holiday history, and their labels carry the exact date.
CHANGED
- Inclusive count now defaults to off: square n lands n units after the anchor (Brown: Apr 2 + 144 days = Aug 24).
- 144 repeats default to bars only, per Brown: "I do monitor 144 bar repeats from a key pivot." Calendar repeats remain available.
- A bar square and a calendar square from the same anchor no longer count as confluence. The trading calendar fixes their spacing (100 trading days is about 144 calendar days; on 24/7 markets the two counts are identical).
FIXED
- Drawings and the table refresh on every bar instead of only on reload.
- Calendar counts run from the anchor's trading date and land on the same session on every timeframe. Previously they could shift by up to six days on weekly charts. Futures and FX sessions that open the evening before are handled.
- The table's next square is the nearest one, including 144 repeats, regardless of input order. Alerts now include 144 repeats.
- Dates display in the exchange time zone instead of GMT.
- An anchor set before the loaded history no longer collapses bar counts onto the first bar. Bar counts are suppressed and the anchor is flagged in the table, while calendar counts still run from the true date.
- Past drawings use time coordinates, which avoids the 10,000-bar limit on deep intraday history.
HOW TO USE (replaces the workflow in the description above)
- One anchor draws every vertical. Confluence windows need at least two anchors. Put the major swing extreme in Anchor 1 and the next significant pivots in Anchors 2 and 3 (for example the wave 2 low, then the wave 4 low once it forms).
- Set anchors on a daily chart. A click on a weekly bar records the start of that week, not the pivot day, and calendar counts run from there.
- On daily charts, read the dashed calendar-day lines. On weekly and 2-week charts, the solid trading-bar lines appear automatically. Both can be forced on or off in settings.
- Validate each anchor against the verticals already in the past. If past squares line up with real pivots, keep the anchor. If they line up with nothing, move or disable it.
- The white confluence windows are the main output. A window that arrives while price sits at a level from independent price analysis (Fibonacci or Gann levels, for example) is the condition of interest. A single line in open space warns at most of a pause.
- A square date carries no direction. It can mark a reversal or the resumption of the larger trend after a consolidation.
- Dates prefixed with ~ are estimates. The exact date of a future calendar square is on its label.
READING THE CHART
Solid lines with labels above price are trading-bar squares (b). Dashed lines with labels below price are calendar-day squares (cd). On 24/7 markets, a solid and a dashed line for the same square fall on the same day and overlap. Heavier lines mark 19² (361). The anchor-colored line with a date label is the anchor. White lines with a shaded span are confluence windows. The table shows elapsed counts, the next square in each unit, and the next confluence window.
IF YOU ADDED THIS INDICATOR BEFORE THIS UPDATE
- Alerts were renamed. Delete and recreate any alerts set on the old version.
- Check Inclusive count and Trading-bar squares in settings. Existing chart instances can keep their old values.
- The single root list is replaced by two lists at their defaults.
- Where the description above differs (count default, refresh behavior, how to use, bar/calendar coincidence as the main event), these notes take precedence.
סקריפט קוד פתוח
ברוח האמיתית של TradingView, יוצר הסקריפט הזה הפך אותו לקוד פתוח, כך שסוחרים יוכלו לעיין בו ולאמת את פעולתו. כל הכבוד למחבר! אמנם ניתן להשתמש בו בחינם, אך זכור כי פרסום חוזר של הקוד כפוף ל־כללי הבית שלנו.
כתב ויתור
המידע והפרסומים אינם מיועדים להיות, ואינם מהווים, ייעוץ או המלצה פיננסית, השקעתית, מסחרית או מכל סוג אחר המסופקת או מאושרת על ידי TradingView. קרא עוד ב־תנאי השימוש.
סקריפט קוד פתוח
ברוח האמיתית של TradingView, יוצר הסקריפט הזה הפך אותו לקוד פתוח, כך שסוחרים יוכלו לעיין בו ולאמת את פעולתו. כל הכבוד למחבר! אמנם ניתן להשתמש בו בחינם, אך זכור כי פרסום חוזר של הקוד כפוף ל־כללי הבית שלנו.
כתב ויתור
המידע והפרסומים אינם מיועדים להיות, ואינם מהווים, ייעוץ או המלצה פיננסית, השקעתית, מסחרית או מכל סוג אחר המסופקת או מאושרת על ידי TradingView. קרא עוד ב־תנאי השימוש.