{"slug":"forex-pending-order-types","qid":"touch_distance","label":"How often a session reached a level set away from the open (SPY, 2016 to 2026)","post_title":"Forex Pending Order Types: Limits & Stops","post_url":"/blog/forex-pending-order-types#q-touch_distance","columns":["distance_from_open","below_touched_pct","above_touched_pct"],"rows":[{"distance_from_open":"0.1%","below_touched_pct":83,"above_touched_pct":85.4},{"distance_from_open":"0.25%","below_touched_pct":62.9,"above_touched_pct":64.6},{"distance_from_open":"0.5%","below_touched_pct":39.9,"above_touched_pct":38.6},{"distance_from_open":"1%","below_touched_pct":16.4,"above_touched_pct":14.3},{"distance_from_open":"2%","below_touched_pct":4,"above_touched_pct":2.5}],"shape":"ranking","sql":"WITH daily AS\n(\n    SELECT\n        date,\n        any(toFloat64(open)) AS session_open,\n        any(toFloat64(low))  AS session_low,\n        any(toFloat64(high)) AS session_high\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker = 'SPY'\n      AND date >= '2016-01-01'\n      AND date <  '2026-10-01'\n    GROUP BY date\n)\nSELECT\n    concat(toString(d), '%')                                           AS distance_from_open,\n    round(100 * avg(session_low  <= session_open * (1 - d / 100)), 1)  AS below_touched_pct,\n    round(100 * avg(session_high >= session_open * (1 + d / 100)), 1)  AS above_touched_pct\nFROM\n(\n    SELECT\n        arrayJoin([0.10, 0.25, 0.50, 1.00, 2.00]) AS d,\n        session_open,\n        session_low,\n        session_high\n    FROM daily\n)\nGROUP BY d\nORDER BY d","computed_at":"2026-10-07T16:05:39.007761+00:00","elapsed":0.075667035}