Provider markets are a preview, served on the sandbox. A connection prices your markets once it is
validated, and in production its provider version must be one trdrs has qualified.
Read the provider’s markets
trdrs reads the list when your connection is validated. Read it again whenever the provider’s sheet changes:reading: its id, the list’s own listId, the digest of what was read,
when, and how many markets it lists. A reading never changes; each read is a new one.
Then list its markets, 500 to a page:
providerSymbolandterms: the market as the provider states it, with its evidence.symbolandname: what it lists under. A currency pair isFX:and the provider’s symbol (FX:EURUSD); the rest areINDEX:,METAL:,ENERGY:,COMMODITY:orCRYPTO:. The prefix names the market, not the provider, so your traders keep their symbols if you change where a market is priced.addable, andrefusalwith the term concerned where it can’t be added: an equity or a bond, which the paper book has no CFD terms for, a term no evidence covers, or more than one tick band.venueStates: what your add must state because the provider states none:quantityMax, the largest order, andorderTypesandtimeInForcefor a market the provider quotes without filling.listed: the listing you already hold of it from this connection, and whether it’s active.
Add them
Add every market a reading can list, or the ones you name, and activate them in the same call:markets as a list of { "providerSymbol": "EURUSD" }, each with a symbol
and name of your own where you want another. Each market becomes an instrument candidate on the
reading’s terms:
- counted in lots of the provider’s contract size, on its tick, lot minimum and step, and its hours;
- mapped to your connection under the provider’s symbol and priced from your connection’s own price
source,
provider:<connectionId>:provider-market; - bound to the contract the provider states at that reading, which the paper book fills it on.
maxAgeMs, 2,000
where you state none), and the largest order where the provider states none. Narrow anything else
through your conditions. Each market answers the candidate it made or found,
its activation, or why it wasn’t added, and the rest are added. Sending the same add again adds
nothing again.
A candidate you write yourself can name a reading too: set contractVersion to
provider-reading:<readingId>. Its market terms must then be the reading’s, or it’s refused
409 terms_differ_from_provider with the field that differs.
Price and convert in dollars
Your accounts hold US dollars. A pair’s profit arises in its quote currency, and its margin in its base currency, so each converts to dollars at the live rate your own connection quotes. The add’s answer names, inconversions, the route your risk policy needs for each currency other than US
dollars:
FX:USDJPY), with its margin, markup and
financing. A yen profit is then booked in yen and posted in dollars at the side of the rate worse for
the account, at the quote in force when the position closes. Your accounts’ market lists show each
market under the provider that states it, Bolsador for a Bolsador market.
Know the limits
- Your connection’s prices are your venue’s alone: no other venue’s accounts read them. A trader who holds an account at your venue charts a market by its symbol on them, live only, since the provider serves no price history; a trader holding accounts at two venues that list one symbol from two sources sees no chart of it.
- A market is priced only while your connection is validated, and only inside the hours the provider states. Past the dates its calendar covers, its hours are unknown and it doesn’t trade.
- A market the provider quotes without filling trades on the paper book alone; no external route reaches it.
- A provider’s later reading is a new contract version. Relisting a market from it is a change to an active instrument, which waits until no account holds it.
Next steps
- Run a venue for conditions, routes and groups.
- Provider conformance for what a provider states in its symbol list.