← Back to tool

TradingView Symbol Format

Most watchlist imports that “don’t work” aren’t broken files — they’re symbols written in a format TradingView can’t resolve, or one that quietly resolves to a different instrument. The catch is that there is no single symbol format: crypto, forex and equities each follow a different rule, and the same punctuation means different things in each.

Everything below is drawn from three real TradingView exports — 816 Bitget perpetuals, 68 OANDA forex pairs and 6,277 US common stocks — so the edge cases are ones you’ll actually hit.

Building a watchlist from scratch? The ChartWatch generator writes correctly-prefixed symbols for you, ready to import straight into TradingView.
Open the generator →

The one universal rule: use the exchange prefix

Every symbol takes the form EXCHANGE:TICKER. Without the prefix, TradingView resolves the ticker for you based on your plan and data subscriptions — and that choice can differ between your desktop and your phone. It’s why a watchlist sometimes looks right on one device and wrong on another.

The prefix matters more than most people expect. In the US stock export, 1,513 tickers appear under more than one exchange prefix. A bare ticker is genuinely ambiguous, not just technically ambiguous.

BTCUSDT           ✗ dozens of exchanges list this
BITGET:BTCUSDT    ✓ spot, one venue
BITGET:BTCUSDT.P  ✓ perpetual, one venue

Three asset classes, three parsing rules

If you’re scripting anything against watchlists, this is the trap. No single rule works across all three.

Asset classExampleHow the ticker splits
CryptoBITGET:1000BONKUSDT.PVariable-length base, quote matched from a known list, optional contract suffix
ForexOANDA:EURUSDFixed 3/3 split, no separator, no suffix
EquitiesNASDAQ:AAPLAtomic — the ticker doesn’t split at all

All 68 OANDA pairs are exactly six characters and split cleanly down the middle. Not one crypto symbol works that way. US stock tickers in the export run from 1 to 11 characters, so no fixed-length assumption survives either.

The dot means two different things

This is the subtlest failure in the whole system. A dot appears in both crypto and equity symbols and carries completely unrelated meaning.

BITGET:BTCUSDT.P   .P = contract type (perpetual futures)
NYSE:BRK.B         .B = share class (Berkshire Class B)

Normalise your symbols by stripping everything after the dot and you turn Berkshire Class B into Class A, and a perpetual into spot. Six symbols in the US export use share-class dots: AGM.A, BRK.A, BRK.B, CRD.A, CRD.B and UHAL.B. Rare enough to slip past testing, expensive enough to matter.

Rule of thumb: .P is the only dot suffix to treat as a contract type. Anything else after a dot in an equity symbol is part of the ticker.

Crypto: perpetuals, multipliers and quote variants

The .P suffix

BITGET:BTCUSDT and BITGET:BTCUSDT.P are two different instruments with different prices, volume and history. All 816 symbols in the reference perpetuals list carry .P. Lose it in a copy-paste and you get a spot watchlist that looks correct at a glance.

If your funding-rate or open-interest indicators return no data, a missing .P is the first thing to check — those metrics only exist on perpetuals.

Multiplier-scaled contracts

Low-priced tokens get listed as scaled contracts so the chart shows a workable price. The multiplier is baked into the ticker, and the notation isn’t standardised — one exchange can use two conventions at once:

NotationExamples from the same venue
Numeric1000BONKUSDT.P · 1000SATSUSDT.P · 10000NEXUSDT.P · 1000000MOGUSDT.P
Abbreviated1MBABYDOGEUSDT.P · 1MCHEEMSUSDT.P

1000000MOG and 1MCHEEMS express the same idea two different ways on one venue. Across venues it’s worse: a token may be 1000PEPE on one and PEPE on another, and neither string resolves on the other platform.

Quote currency variants

The reference file splits 757 USDT / 50 USDC / 9 USD, and 49 base assets appear against more than one quote:

BITGET:BTCUSD.P
BITGET:BTCUSDC.P
BITGET:BTCUSDT.P   ← three contracts, three charts

Deduplicate by base asset and you delete instruments you meant to keep.

Why splitting on the quote fails

Stripping the quote off the end to recover the base breaks on short tickers — and there are 51 of them in this one file:

SymbolCorrectPlausible misparse
SUSDT.PS / USDTSUSD / T
OPUSDT.POP / USDTOPUSD / T
PLUSDT.PPL / USDTPLUS / DT
USDCUSDT.PUSDC / USDTUSDC read as the quote

USDCUSDT.P is the sharpest case: strip USDT and you’re left with USDC, which looks like a quote currency, so the pair vanishes from a lot of parsers. Match the quote against a known list, longest first, rather than trusting the tail of the string.

Forex: the simplest format, with one catch

OANDA pairs are six characters, no separator, base then quote:

OANDA:EURUSD    EUR / USD
OANDA:USDCNH    USD / CNH — offshore yuan, not CNY
OANDA:CHFZAR    CHF / ZAR

The catch is the broker prefix, not the ticker. OANDA:EURUSD, FX:EURUSD and FX_IDC:EURUSD are the same pair from different data sources, with slightly different prices, spreads and session boundaries. A backtest run against one won’t reproduce exactly on another.

The 68-pair export covers 21 currencies. Note CNH rather than CNY — offshore and onshore yuan are separate instruments, and only the offshore one is freely tradeable.

Equities: prefixes carry more than you think

The US common stock export spreads across seven prefixes:

PrefixCountWhat it is
OTC3,177Over-the-counter
BOATS1,532Blue Ocean ATS — overnight session
NASDAQ896Nasdaq
NYSE630New York Stock Exchange
AMEX40NYSE American
CBOE / FINRA2Single listings

BOATS: why a US ticker appears twice

Blue Ocean ATS is an alternative trading system for US National Market System stocks, running roughly 20:00 to 04:00 Eastern, Sunday through Thursday. It fills the overnight gap when the main exchanges are shut, which makes it useful if you trade US equities from Asia or the Gulf.

TradingView added the BOATS: prefix in 2025, and it’s the second-largest prefix in this export — bigger than NYSE. So NASDAQ:AAPL and BOATS:AAPL are the same company on two venues with different hours, liquidity and price action. If a stock shows up twice in your watchlist and you don’t know why, this is usually the reason.

The OTC F suffix

Of the 3,177 OTC symbols, 1,642 are five characters ending in F — the convention for foreign ordinary shares traded over-the-counter in the US. A five-character ticker ending in Y would be an ADR instead. Neither is interchangeable with the company’s home-market listing, which trades in its local currency on its local exchange.

Exports arrive with duplicates

Both reference exports ship duplicate lines. The crypto file has 816 lines and 809 unique symbols. The stock file has 6,277 lines and 6,223 unique. That’s systematic, not a one-off — so deduplicate before importing, but by full symbol, never by ticker alone, since the same ticker legitimately appears under several prefixes.

File format for importing

TradingView accepts a plain .txt file. One symbol per line, or comma-separated. No header row:

BITGET:BTCUSDT.P
OANDA:EURUSD
NASDAQ:AAPL

Section headers are optional and take a triple-hash prefix:

###Majors
BITGET:BTCUSDT.P
BITGET:ETHUSDT.P
###FX
OANDA:EURUSD

Import checklist

FAQ

What does .P mean in a TradingView symbol?
It marks a perpetual futures contract. The same ticker without .P is the spot market — a different instrument with a different price and history.
What does the BOATS prefix mean?
Blue Ocean ATS, an alternative trading system for US stocks that runs overnight, roughly 20:00 to 04:00 Eastern, Sunday to Thursday. BOATS:AAPL is the same company as NASDAQ:AAPL on a different venue with different hours.
Why does my watchlist show a different exchange than expected?
The symbol has no exchange prefix, so TradingView resolved it for you. The result can vary by device and data plan. Write EXCHANGE:TICKER explicitly.
What does 1000 in front of a crypto ticker mean?
A contract multiplier for low-priced tokens, so the chart shows a readable price. 1000BONKUSDT.P tracks a thousand BONK per contract. Some venues write it as 1M instead.
Is OANDA:EURUSD the same as FX:EURUSD?
Same currency pair, different data source. Prices, spreads and session boundaries differ slightly, so backtests won’t reproduce exactly across the two.
Why do some OTC tickers end in F?
A five-character OTC ticker ending in F is a foreign ordinary share. One ending in Y is an ADR. Neither is the same instrument as the company’s home-market listing.
What file format does a TradingView watchlist use?
A plain text file, one symbol per line or comma-separated, with optional ### section headers.
Skip the formatting entirely. Generate a correctly-prefixed watchlist and import it straight into TradingView.
Open the generator →
TradingView — the fastest way to follow markets
HomeChart ColorsPrivacyTermsContact

ChartWatch is an independent tool and is not affiliated with, endorsed by, or officially connected to TradingView, Inc. “TradingView” is a trademark of its respective owner. Exchange and venue names are trademarks of their respective owners.