Editorial market-recap article
showing today's session so far.
An editorial session recap for one instrument: the session open, the high so far, and the current price, from documented candles. A recap, not a forecast or an exchange-hours claim.
The real embed in preview mode — synthetic data, no API key, zero network calls. Live data starts once you add your key.
Each additional domain slot adds half the base price.
An editorial session recap for one instrument: the session open, the high so far, and the current price, from documented candles. A recap, not a forecast or an exchange-hours claim.
Every value here is what the gateway enforces, not a description of it. A parameter outside this scope is rejected before any data is fetched.
Market Open / Close is a compact derived-data module rather than a full dashboard. It works best where you want one concise market observation with a clearly stated data basis.
showing today's session so far.
for the ohlc (+sessions) kind.
Subscribe, authorize the domains that will host the widget, copy your public
wk_ key, and paste the snippet where you want Market Open / Close to render.
Your subscription includes 1 domain slot. Add more slots when the same widget needs to run on more sites.
The wk_ key is meant to appear in the page source. It is restricted to the domains you authorize and can be revoked.
Choose your theme and symbol, then drop the generated script tag into the page.
<script src="https://tickatlas.com/widgets/embed.js?w=market-open-close&k=wk_YOUR_KEY&symbol=XAUUSD"></script>
Light is the default, so the snippet stays clean. Dark appends &theme=dark;
Auto appends &theme=auto and follows each visitor’s system preference.
Picking one re-renders the preview above in that theme.
The querystring on the embed.js script tag stays intentionally compact.
Most sites only need the widget slug, the public widget key, a symbol and a theme.
| Parameter | Type | Required | Description |
|---|---|---|---|
| w | string | Yes | Widget slug — fixed to “market-open-close” for this widget. |
| k | string | No | Your public wk_ key. With it the widget goes live on your authorized domains; omit it for the SIMULATED preview (synthetic data, zero network). Default: preview mode. |
| symbol | symbol | No | The symbol to display, uppercased. Must be within the widget’s allowed set. Allowed: BTCUSD, XAUUSD, EURUSD, GBPUSD. Default: BTCUSD. |
| mode | enum | No | Force preview even with a key, e.g. for a staging page. Allowed: live, preview. Default: live when k is present, else preview. |
| theme | enum | No | Colour theme. light (default) is today’s look; dark uses a WCAG-AA dark palette; auto follows each visitor’s system (prefers-color-scheme). Omit for light. Allowed: light, dark, auto. Default: light. |
Omit symbol= and the gateway serves BTCUSD.
Set symbol= to any one of these 4.
The browser-facing key is domain-scoped by design. The embed exchanges it through our gateway, calls the hosted widget endpoint with short-lived authorization, and renders inside an isolated Shadow DOM.
A sandboxed Shadow DOM with all:initial keeps your page’s styles and scripts out and the widget’s styles in. It fits its container’s width, never wider.
The public wk_ key only renders on domains you add to the subscription, and you can revoke it from your dashboard at any time.
It refreshes about every 15 seconds against cached data, so many visitors collapse onto one computation. Over the per-key / per-domain limit the gateway returns 429 and the widget keeps its last frame.
No current data, a revoked key or an unauthorized domain all produce an explicit “unavailable” state — never a fabricated or zeroed value, and never a thrown error on your page.
Base subscription includes 1 domain slot.
Each additional domain adds half the base price.
1 domain slot = $9.99 base subscription. Slots are fixed at purchase; manage domains and your key from your dashboard.
The embed calls this endpoint for you on each refresh, using a short-lived token
minted from your wk_ key — your key never leaves the gateway.
Session open / high / current from OHLC (+ FX session).
/widgets/api/market-open-close/ohlc?symbol=BTCUSD&timeframe=H1&limit=48 { "success": true, "widget": "market-open-close", "cached": true, "data": { symbol, timeframe, candles:[…], count } (session open/high/current) }
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbol | symbol | No | Single-series widgets: one symbol, within the allowed set. Allowed: BTCUSD, XAUUSD, EURUSD, GBPUSD. Default: BTCUSD. |
| timeframe | enum | No | Candle timeframe. Allowed: M1, M5, M15, M30, H1, H4, D1. Default: H1. This widget pins it to H1. |
| limit | integer | No | Number of most-recent candles returned. Allowed: 1–500. Default: 100. This widget pins it to 48. |
Set symbol on the embed to any one of this widget’s allowed symbols
(BTCUSD, XAUUSD, EURUSD, GBPUSD); it defaults to BTCUSD if omitted. A symbol
outside this set is rejected by the gateway before any data is fetched, and the
widget shows its “unavailable” state.
Widgets that pair with Market Open / Close on the same page, and the API endpoints behind the same data.
H1 candle high/low · last 20 bars · one symbol.
View widget →FX session states / overlap / next change (time-based).
View widget →FX sessions + high-impact calendar events on a dial.
View widget →Upcoming high-impact events · time / currency / forecast / previous.
View widget →What the widget reads, how preview mode works, and what happens when data is temporarily unavailable.
One symbol per embed from BTCUSD, XAUUSD, EURUSD, or GBPUSD.
The session's open, the high so far, and the current price, from documented candles — a recap, not a forecast or an exchange-hours claim.
~15-second cached poll; the last verified frame is held on a gap.
Yes, synthetic and keyless; the live widget is a paid subscription.
Preview it with synthetic data and no key. When you're ready, authorize your domain, add the public widget key and switch the same embed to live data — from $9.99/mo per domain.
We value your privacy
We use cookies to analyze traffic and improve your experience. You can accept all cookies or reject non-essential cookies. See our Privacy Policy and GDPR notice for details.