Skip to content

pywry.tvchart.models

Data models for the TradingView datafeed request/response protocol. These Pydantic models define symbol metadata, bar data, and the wire format for chart ↔ Python communication.


Symbol Metadata

pywry.tvchart.models.TVChartSymbolInfo

Bases: BaseModel

Full TradingView symbol metadata (LibrarySymbolInfo).

Describes a tradeable instrument for the charting library. All fields are optional except name.

Attributes:

Name Type Description
name str

Short symbol name (e.g. "BTCUSD").

full_name str

Full symbol path ("EXCHANGE:SYMBOL").

base_name list of str or None

Underlying symbols for spread/expression instruments.

ticker str or None

Unique symbol identifier used in datafeed requests.

description str

Human-readable symbol description.

type str

Instrument type ("stock", "crypto", "forex", etc.).

session str

Trading session in HHMM format ("24x7", "0930-1600").

session_display str or None

Display-formatted session string.

exchange str

Exchange name.

listed_exchange str

Primary listing exchange.

timezone str

IANA timezone (e.g. "America/New_York").

format str

Price display format ("price" or "volume").

pricescale int

Price precision denominator (100 = 2 decimals).

minmov int

Minimum price movement numerator.

has_intraday bool or None

Whether intraday resolutions are available.

has_daily bool or None

Whether daily resolution is available.

has_weekly_and_monthly bool or None

Whether weekly/monthly resolutions are available.

supported_resolutions list of str or None

List of available resolutions (e.g. ["1", "60", "D"]).

intraday_multipliers list of str or None

Intraday resolution multipliers.

volume_precision int or None

Volume decimal precision.

data_status str

Data availability ("streaming", "endofday", "delayed_streaming").

currency_code str or None

Currency code for the instrument.

Attributes

name class-attribute instance-attribute
name: str = ''
full_name class-attribute instance-attribute
full_name: str = ''
base_name class-attribute instance-attribute
base_name: list[str] | None = None
ticker class-attribute instance-attribute
ticker: str | None = None
description class-attribute instance-attribute
description: str = ''
type class-attribute instance-attribute
type: str = 'stock'
symbol_type class-attribute instance-attribute
symbol_type: str | None = None
session class-attribute instance-attribute
session: str = '24x7'
session_display class-attribute instance-attribute
session_display: str | None = None
session_holidays class-attribute instance-attribute
session_holidays: str | None = None
corrections class-attribute instance-attribute
corrections: str | None = None
exchange class-attribute instance-attribute
exchange: str = ''
listed_exchange class-attribute instance-attribute
listed_exchange: str = ''
timezone class-attribute instance-attribute
timezone: str = 'Etc/UTC'
format class-attribute instance-attribute
format: str = 'price'
pricescale class-attribute instance-attribute
pricescale: int = 100
minmov class-attribute instance-attribute
minmov: int = 1
minmove2 class-attribute instance-attribute
minmove2: int | None = None
fractional class-attribute instance-attribute
fractional: bool | None = None
has_intraday class-attribute instance-attribute
has_intraday: bool | None = None
has_daily class-attribute instance-attribute
has_daily: bool | None = None
has_weekly_and_monthly class-attribute instance-attribute
has_weekly_and_monthly: bool | None = None
has_seconds class-attribute instance-attribute
has_seconds: bool | None = None
has_ticks class-attribute instance-attribute
has_ticks: bool | None = None
has_empty_bars class-attribute instance-attribute
has_empty_bars: bool | None = None
supported_resolutions class-attribute instance-attribute
supported_resolutions: list[str] | None = None
intraday_multipliers class-attribute instance-attribute
intraday_multipliers: list[str] | None = None
seconds_multipliers class-attribute instance-attribute
seconds_multipliers: list[str] | None = None
visible_plots_set class-attribute instance-attribute
visible_plots_set: str | None = None
volume_precision class-attribute instance-attribute
volume_precision: int | None = None
data_status class-attribute instance-attribute
data_status: str = 'streaming'
expired class-attribute instance-attribute
expired: bool | None = None
expiration_date class-attribute instance-attribute
expiration_date: int | None = None
sector class-attribute instance-attribute
sector: str | None = None
industry class-attribute instance-attribute
industry: str | None = None
currency_code class-attribute instance-attribute
currency_code: str | None = None
original_currency_code class-attribute instance-attribute
original_currency_code: str | None = None
unit_id class-attribute instance-attribute
unit_id: str | None = None
original_unit_id class-attribute instance-attribute
original_unit_id: str | None = None
unit_conversion_types class-attribute instance-attribute
unit_conversion_types: list[str] | None = None
logo_urls class-attribute instance-attribute
logo_urls: list[str] | None = None
exchange_logo: str | None = None
variable_tick_size class-attribute instance-attribute
variable_tick_size: str | None = None
price_source_id class-attribute instance-attribute
price_source_id: str | None = None
price_sources class-attribute instance-attribute
price_sources: list[TVChartSymbolInfoPriceSource] | None = None
subsession_id class-attribute instance-attribute
subsession_id: str | None = None
subsessions class-attribute instance-attribute
subsessions: list[TVChartLibrarySubsessionInfo] | None = None

Bar Data

pywry.tvchart.models.TVChartSeriesData

Bases: BaseModel

Normalized bar data for a single series.

Attributes:

Name Type Description
series_id str

Unique identifier for this series.

bars list[dict]

OHLC or value bars with time key.

volume list[dict]

Volume bars with time and value keys.

series_type SeriesType

Chart series type (candlestick, line, etc.).

has_volume bool

Whether volume data is available.

total_rows int

Original row count before truncation.

truncated_rows int

Number of rows dropped due to max_bars limit.

Attributes

series_id instance-attribute
series_id: str
bars class-attribute instance-attribute
bars: list[dict[str, Any]] = Field(default_factory=list)
volume class-attribute instance-attribute
volume: list[dict[str, Any]] = Field(default_factory=list)
series_type class-attribute instance-attribute
series_type: SeriesType = CANDLESTICK
has_volume class-attribute instance-attribute
has_volume: bool = False
total_rows class-attribute instance-attribute
total_rows: int = 0
truncated_rows class-attribute instance-attribute
truncated_rows: int = 0

pywry.tvchart.models.TVChartData

Bases: BaseModel

Container for normalized chart data, possibly multi-series.

Attributes:

Name Type Description
series list[TVChartSeriesData]

One or more series of bar data.

columns list[str]

Original column names from the input data.

time_column str

Name of the column used for time.

symbol_column str or None

Name of the column used for multi-series grouping.

is_multi_series bool

Whether there are multiple series.

source_format str

Detected format: 'single', 'narrow', 'wide', 'multiindex'.

column_types dict[str, str]

Column name to dtype string mapping.

Attributes

series class-attribute instance-attribute
series: list[TVChartSeriesData] = Field(default_factory=list)
columns class-attribute instance-attribute
columns: list[str] = Field(default_factory=list)
time_column class-attribute instance-attribute
time_column: str = 'time'
symbol_column class-attribute instance-attribute
symbol_column: str | None = None
is_multi_series class-attribute instance-attribute
is_multi_series: bool = False
source_format class-attribute instance-attribute
source_format: str = 'single'
column_types class-attribute instance-attribute
column_types: dict[str, str] = Field(default_factory=dict)
bars property
bars: list[dict[str, Any]]

Shortcut: bars from the first series.

volume property
volume: list[dict[str, Any]]

Shortcut: volume bars from the first series.

series_ids property
series_ids: list[str]

List of series identifiers.

total_rows property
total_rows: int

Sum of total_rows across all series.


Datafeed Requests (JS → Python)

pywry.tvchart.models.TVChartDatafeedConfigRequest

Bases: BaseModel

Frontend request for datafeed configuration (onReady).

pywry.tvchart.models.TVChartDatafeedSearchRequest

Bases: BaseModel

Frontend request for symbol search suggestions.

pywry.tvchart.models.TVChartDatafeedResolveRequest

Bases: BaseModel

Frontend request for full metadata of a specific symbol.

pywry.tvchart.models.TVChartDatafeedHistoryRequest

Bases: BaseModel

Frontend request for historical bars (getBars).

pywry.tvchart.models.TVChartDatafeedSubscribeRequest

Bases: BaseModel

Frontend request to start real-time bar updates (subscribeBars).

pywry.tvchart.models.TVChartDatafeedUnsubscribeRequest

Bases: BaseModel

Frontend request to stop real-time bar updates (unsubscribeBars).

pywry.tvchart.models.TVChartDatafeedMarksRequest

Bases: BaseModel

Frontend request for chart marks (getMarks).

pywry.tvchart.models.TVChartDatafeedTimescaleMarksRequest

Bases: BaseModel

Frontend request for timescale marks (getTimescaleMarks).

pywry.tvchart.models.TVChartDatafeedServerTimeRequest

Bases: BaseModel

Frontend request for server time.