{"slug":"market-structure-and-break-of-structure","qid":"swing_rule","label":"swing_rule","post_title":"market-structure-and-break-of-structure","post_url":"/blog/lang/th/market-structure-and-break-of-structure#q-swing_rule","columns":["ticker","sessions","swing_highs","swing_lows","bars_per_swing_high"],"rows":[{"ticker":"AAPL","sessions":1415,"swing_highs":129,"swing_lows":135,"bars_per_swing_high":11},{"ticker":"JPM","sessions":1415,"swing_highs":124,"swing_lows":126,"bars_per_swing_high":11.4},{"ticker":"KO","sessions":1415,"swing_highs":130,"swing_lows":133,"bars_per_swing_high":10.9},{"ticker":"MSFT","sessions":1415,"swing_highs":129,"swing_lows":129,"bars_per_swing_high":11},{"ticker":"QQQ","sessions":1415,"swing_highs":127,"swing_lows":137,"bars_per_swing_high":11.1},{"ticker":"SPY","sessions":1415,"swing_highs":121,"swing_lows":136,"bars_per_swing_high":11.7}],"shape":"table","sql":"WITH px AS\n(\n    SELECT\n        ticker,\n        date,\n        toFloat64(high) AS h,\n        toFloat64(low)  AS l\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('AAPL', 'JPM', 'KO', 'MSFT', 'QQQ', 'SPY')\n      AND date >= '2021-01-01'\n      AND date <  '2026-09-01'\n),\nflagged AS\n(\n    SELECT\n        ticker,\n        ((h > max(h) OVER w_prev) AND (h > max(h) OVER w_next)) AS is_swing_high,\n        ((l < min(l) OVER w_prev) AND (l < min(l) OVER w_next)) AS is_swing_low,\n        count() OVER w_prev AS bars_before,\n        count() OVER w_next AS bars_after\n    FROM px\n    WINDOW\n        w_prev AS (PARTITION BY ticker ORDER BY date ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING),\n        w_next AS (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING)\n)\nSELECT\n    ticker,\n    count()                AS sessions,\n    countIf(is_swing_high) AS swing_highs,\n    countIf(is_swing_low)  AS swing_lows,\n    round(count() / greatest(countIf(is_swing_high), 1), 1) AS bars_per_swing_high\nFROM flagged\nWHERE bars_before = 3\n  AND bars_after = 3\nGROUP BY ticker\nORDER BY ticker","computed_at":"2026-09-22T15:01:42.150466+00:00","elapsed":0.004220683}