Know who sees your symbols
Only your traders see them: anyone holding an account your venue issued, or a registration they linked with their own login. To everyone else on trdrs, including other venues, your symbols don’t exist. They aren’t in search, they don’t resolve, and a request naming one directly gets the same answer as a symbol nobody published. No request and no error message tells the two cases apart. Your symbols can’t collide with the shared catalog either. trdrs keeps every symbol you publish under your venue’s own id, so you can publishES without touching the CME contract of the same
name. Your traders resolve yours and everyone else resolves theirs.
Build the feed
Your feed is a UDF datafeed: three read-only JSON endpoints over HTTPS. It’s the same contract Quick Charts reads, so a server that already feeds Quick Charts works here unchanged.1
Serve your configuration
GET /config declares what you serve. trdrs fetches it once and caches it.supported_resolutions: a bar size you didn’t declare is refused before a
request goes out, because a server asked for an unlisted size often answers with a different
one. If you declare an empty list or serve no /config, trdrs assumes the protocol’s defaults and
restricts nothing.2
Serve symbol search
GET /search?query=&limit= returns the symbols that match.type is your own word for the product, and traders see it exactly as you wrote it, so call an
index an index.If you answer supports_search: false, serve GET /symbol_info?group=<exchange> instead, in
the protocol’s column form: parallel arrays keyed symbol, ticker, description,
exchange-listed and type, where a single value applies to every row. trdrs fetches each
exchange listed in /config once and searches it itself, so in this mode /config must list
at least one exchange.3
Serve price history
GET /history?symbol=&resolution=&from=&to=&countback= returns bars in the protocol’s column
form, with times in epoch seconds.to is exclusive, as the protocol defines it, so the bar at to isn’t included. trdrs maps its
own windows onto yours so no bar is dropped at a page boundary. When countback is present, it
wins over from: return that many bars at or before to.Resolutions use the protocol’s names: seconds as 30S, minutes as a bare number such as 5,
hours as minutes (60 is one hour), then 1D, 1W and 1M. If you leave out v, every bar
has a volume of 0.Register it with trdrs
Registration isn’t self-serve: trdrs sets it up for you. Send your trdrs contact:- the base URL of your feed, such as
https://feed.yourfirm.com/udf; - the
Authorizationheader value your server expects, if it wants one. trdrs sends it unchanged on every request and stores it as a secret that no read of your venue returns.
Know how trdrs reads your feed
- History comes straight from
/history, for the window the chart asks for. - Live bars come from polling the end of
/historyevery 10 seconds. The newest bar updates as it forms and is final once the next one opens. - Traders share the poll. Ten traders watching one symbol cost your server one request every 10 seconds, not ten.
- Every request has a 10-second deadline, so a slow answer never hangs a chart.
Plan for your feed going down
A feed that goes down costs your symbols and nothing else.
trdrs sees each change in both directions, and contacts you about a feed that stays down.
Know what a feed covers
A published symbol charts and streams bars, and no order path reaches it, so your traders can’t take a position in a market you publish this way. A market they trade is a provider, either built in or public. A feed serves bars, polled over HTTP and registered through trdrs.Test it end to end
Before you send trdrs the URL, check the feed from outside your network:- Request
/config,/search?query=A&limit=10and a/historywindow withcountback, and confirm each answers within 10 seconds with the shapes above. - Request a symbol that doesn’t exist and confirm
/historyanswerss: "error"rather than a5xx. - Once trdrs has registered it, sign in as a test trader holding one of your accounts and find your symbol in search. Sign in as a trader who doesn’t hold one and confirm it’s absent.
Next steps
Provider data
Use the provider login you already issue, with no server to run.
Provider conformance
Build a provider your traders can trade through, not just chart.