Skip to main content

Symbol Search Surface

Symbol search is the surface users open to change the active symbol. It opens from the toolbar symbol box, the magnifier button, or the open-symbol-search built-in action (default shortcut mod+k), and it is backed entirely by the datafeed's searchSymbols and resolveSymbol contracts.

Where it opens from

TradeScript top toolbar showing the symbol box displaying BTCUSDT with a clear button and the magnifier search button in the right-hand actions cluster

BTCUSDT · 15m · dark theme — the symbol box (left) and search button (magnifier, right cluster) both open symbol search.

Query to selection

UI states

StateCallback and dataOutcome
OpenNone yet; the panel opens with the current query contextFocused input; features.symbolSearch.uppercase normalizes typed text
Query (typing)searchSymbols fires after the features.symbolSearch.requestDelayMs debounce, with limit/cursor for paginationResult list streams in; venue and asset-type filters come from SymbolSearchDatafeedConfig.exchanges / assetTypes
ResultsResult rows carry identity, venue, asset type, and logos (SymbolInfo.logoUrl, logoUrls, exchangeLogoUrl)Selecting a row hands its identity to resolveSymbol
EmptysearchSymbols returned no rowsThe open panel stays up with a clear retry or query-change action
ErrorsearchSymbols rejected, or resolveSymbol failed for the selectionThe previous chart symbol stays active; the error is reported beside the selected result
SelectionresolveSymbol returns SymbolInfo, then the chart calls loadBarsThe chart switches symbol through the normal resolve-and-load lifecycle

Submitting typed text directly (rather than picking a listed result) is controlled by features.symbolSearch.allowArbitraryInput, and the features.symbolSearch.completeSymbol hook maps raw input to the final symbol before resolution.

One search contract, many surfaces

Compare symbols dialog open on the docs demo page showing the search input placeholder, a zero-added counter, and an empty added-comparisons list stating no comparison symbols added

Compare dialog · empty state — the same searchSymbols contract powers the compare dialog; here no query has run and no comparisons are added.

MarketDataFeed.searchSymbols is the single search contract used by the main symbol search, watchlists, comparisons, and indicator symbol inputs. Implement it once and every search surface — including the empty and error states above — behaves consistently.

Current surface

Search capabilityTradeScript surface
searchSymbolsMarketDataFeed.searchSymbols
Paginated searchsearchSymbols with limit and cursor
Request delayfeatures.symbolSearch.requestDelayMs
Uppercasefeatures.symbolSearch.uppercase
Arbitrary typed inputfeatures.symbolSearch.allowArbitraryInput
LogosSymbolInfo.logoUrl, logoUrls, exchangeLogoUrl (display gates: features.symbolSearch.showLogos, showExchangeLogos)
Exchanges/typesSymbolSearchDatafeedConfig.exchanges, assetTypes
Spread operatorsfeatures.symbolSearch.showSpreadOperators, spreadOperators; feed capability SymbolSearchDatafeedConfig.supportsSpreadOperators
Completion hookfeatures.symbolSearch.completeSymbol
Programmatic openchart.openSymbolSearch()
Close popupschart.closePopups()