Skip to content
New: Star-import, signal unraveling, Python 3.12 support, and more

#
tv module

Module with TVData.

## FIELD_LIST list

List of fields supported by the market scanner (list may be incomplete).

## MARKET_LIST list

List of markets supported by the market scanner (list may be incomplete).

## ORIGIN_URL str

Origin URL.

## PRO_WS_URL str

Websocket URL (Pro).

## REFERER_URL str

Referer URL.

## SCAN_URL str

Market scanner URL.

## SEARCH_URL str

Symbol search URL.

## SIGNIN_URL str

Sign-in URL.

## WS_TIMEOUT int

Websocket timeout.

## WS_URL str

Websocket URL.

## TVClient class

    TVClient(
        username=None,
        password=None,
        auth_token=None,
        user_agent=None,
        **kwargs
    )

Client for TradingView.

Client for TradingView.

Superclasses

- Cacheable
- Chainable
- Comparable
- Configured
- HasSettings
- Pickleable
- Prettified

Inherited members

- Cacheable.get_ca_setup()
- Chainable.pipe()
- Configured.config
- Configured.copy()
- Configured.equals()
- Configured.get_writeable_attrs()
- Configured.prettify()
- Configured.rec_state
- Configured.replace()
- Configured.resolve_merge_kwargs()
- Configured.update_config()
- HasSettings.get_path_setting()
- HasSettings.get_path_settings()
- HasSettings.get_setting()
- HasSettings.get_settings()
- HasSettings.has_path_setting()
- HasSettings.has_path_settings()
- HasSettings.has_setting()
- HasSettings.has_settings()
- HasSettings.reset_settings()
- HasSettings.resolve_setting()
- HasSettings.resolve_settings_paths()
- HasSettings.set_settings()
- Pickleable.decode_config()
- Pickleable.decode_config_node()
- Pickleable.dumps()
- Pickleable.encode_config()
- Pickleable.encode_config_node()
- Pickleable.file_exists()
- Pickleable.getsize()
- Pickleable.load()
- Pickleable.loads()
- Pickleable.modify_state()
- Pickleable.resolve_file_path()
- Pickleable.save()

### auth class method

    TVClient.auth(
        username=None,
        password=None,
        user_agent=None
    )

Authenticate.

### auth_token property

Authentication token.

### chart_session property

Chart session.

### construct_message class method

    TVClient.construct_message(
        func,
        param_list
    )

Construct a message.

### convert_raw_data class method

    TVClient.convert_raw_data(
        raw_data,
        symbol
    )

Process raw data into a DataFrame.

### create_connection method

    TVClient.create_connection(
        pro_data=True
    )

Create a websocket connection.

### create_message method

    TVClient.create_message(
        func,
        param_list
    )

Create a message.

### filter_raw_message class method

    TVClient.filter_raw_message(
        text
    )

Filter raw message.

### format_symbol class method

    TVClient.format_symbol(
        symbol,
        exchange,
        fut_contract=None
    )

Format a symbol.

### generate_chart_session class method

    TVClient.generate_chart_session()

Generate chart session.

### generate_session class method

    TVClient.generate_session()

Generate session.

### get_hist method

    TVClient.get_hist(
        symbol,
        exchange='NSE',
        interval='1D',
        fut_contract=None,
        adjustment='splits',
        extended_session=False,
        pro_data=True,
        limit=20000,
        return_raw=False
    )

Get historical data.

### prepend_header class method

    TVClient.prepend_header(
        st
    )

Prepend a header.

### scan_symbols class method

    TVClient.scan_symbols(
        market=None,
        **kwargs
    )

Scan symbols in a region/market.

### search_symbol class method

    TVClient.search_symbol(
        text=None,
        exchange=None,
        delay=None,
        show_progress=True,
        pbar_kwargs=None
    )

Search for a symbol.

### send_message method

    TVClient.send_message(
        func,
        param_list
    )

Send a message.

### session property

Session.

### ws property

Instance of `websocket.Websocket`.

## TVData class

    TVData(
        wrapper,
        data,
        single_key=True,
        classes=None,
        level_name=None,
        fetch_kwargs=None,
        returned_kwargs=None,
        last_index=None,
        delisted=None,
        tz_localize=None,
        tz_convert=None,
        missing_index=None,
        missing_columns=None,
        **kwargs
    )

Data class for fetching from TradingView.

See TVData.fetch_symbol() for arguments.

Note

If you're getting the error "Please confirm that you are not a robot by clicking the captcha box." when attempting to authenticate, use `auth_token` instead of `username` and `password`. To get the authentication token, go to TradingView, log in, visit any chart, open your console's developer tools, and search for "auth_token".

Usage

- Set up the credentials globally (optional):

    >>> from vectorbtpro import *

    >>> vbt.TVData.set_custom_settings(
    ...     client_config=dict(
    ...         username="YOUR_USERNAME",
    ...         password="YOUR_PASSWORD",
    ...         auth_token="YOUR_AUTH_TOKEN",  # optional, instead of username and password
    ...         user_agent="YOUR_USER_AGENT"  # optional, see <https://useragentstring.com/>
    ...     )
    ... )

- Pull data:

    >>> data = vbt.TVData.pull(
    ...     "NASDAQ:AAPL",
    ...     timeframe="1 hour"
    ... )

Superclasses

- Analyzable
- AttrResolverMixin
- BaseDataMixin
- Cacheable
- Chainable
- Comparable
- Configured
- CustomData
- Data
- DataWithFeatures
- ExtPandasIndexer
- HasSettings
- IndexingBase
- OHLCDataMixin
- PandasIndexer
- Pickleable
- PlotsBuilderMixin
- Prettified
- RemoteData
- StatsBuilderMixin
- Wrapping

Inherited members

- AttrResolverMixin.deep_getattr()
- AttrResolverMixin.post_resolve_attr()
- AttrResolverMixin.pre_resolve_attr()
- AttrResolverMixin.resolve_attr()
- AttrResolverMixin.resolve_shortcut_attr()
- BaseDataMixin.assert_has_feature()
- BaseDataMixin.assert_has_symbol()
- BaseDataMixin.get_feature()
- BaseDataMixin.get_feature_idx()
- BaseDataMixin.get_symbol()
- BaseDataMixin.get_symbol_idx()
- BaseDataMixin.has_feature()
- BaseDataMixin.has_multiple_keys()
- BaseDataMixin.has_symbol()
- BaseDataMixin.prepare_key()
- BaseDataMixin.select_features()
- BaseDataMixin.select_symbols()
- Cacheable.get_ca_setup()
- Chainable.pipe()
- Configured.copy()
- Configured.equals()
- Configured.get_writeable_attrs()
- Configured.prettify()
- Configured.resolve_merge_kwargs()
- Configured.update_config()
- CustomData.get_custom_setting()
- CustomData.get_custom_settings()
- CustomData.has_custom_setting()
- CustomData.has_custom_settings()
- CustomData.key_match()
- CustomData.resolve_custom_setting()
- CustomData.set_custom_settings()
- Data.add()
- Data.add_column()
- Data.add_feature()
- Data.add_key()
- Data.add_symbol()
- Data.align_columns()
- Data.align_data()
- Data.align_index()
- Data.build_feature_config_doc()
- Data.check_dict_type()
- Data.column_stack()
- Data.concat()
- Data.dropna()
- Data.fetch()
- Data.fetch_feature()
- Data.fix_data_dict_type()
- Data.fix_dict_types_in_kwargs()
- Data.from_csv()
- Data.from_data()
- Data.from_data_str()
- Data.from_duckdb()
- Data.from_feather()
- Data.from_hdf()
- Data.from_parquet()
- Data.from_sql()
- Data.get()
- Data.get_base_setting()
- Data.get_base_settings()
- Data.get_feature_wrapper()
- Data.get_key_wrapper()
- Data.get_keys()
- Data.get_symbol_wrapper()
- Data.has_base_setting()
- Data.has_base_settings()
- Data.has_key_dict()
- Data.indexing_func()
- Data.invert()
- Data.invert_data()
- Data.merge()
- Data.modify_state()
- Data.override_feature_config_doc()
- Data.plot()
- Data.prepare_dt()
- Data.prepare_dt_column()
- Data.prepare_dt_index()
- Data.prepare_tzaware_index()
- Data.pull()
- Data.realign()
- Data.remove()
- Data.remove_columns()
- Data.remove_features()
- Data.remove_keys()
- Data.remove_symbols()
- Data.rename()
- Data.rename_columns()
- Data.rename_features()
- Data.rename_in_dict()
- Data.rename_keys()
- Data.rename_symbols()
- Data.replace()
- Data.resample()
- Data.resolve_base_setting()
- Data.resolve_columns()
- Data.resolve_features()
- Data.resolve_key_arg()
- Data.resolve_keys()
- Data.resolve_keys_meta()
- Data.resolve_symbols()
- Data.row_stack()
- Data.run()
- Data.select()
- Data.select_classes()
- Data.select_columns()
- Data.select_delisted()
- Data.select_feature_from_dict()
- Data.select_feature_idxs()
- Data.select_feature_kwargs()
- Data.select_fetch_kwargs()
- Data.select_from_dict()
- Data.select_key_from_dict()
- Data.select_key_kwargs()
- Data.select_keys()
- Data.select_last_index()
- Data.select_returned_kwargs()
- Data.select_run_func_args()
- Data.select_run_func_kwargs()
- Data.select_symbol_from_dict()
- Data.select_symbol_idxs()
- Data.select_symbol_kwargs()
- Data.set_base_settings()
- Data.sql()
- Data.switch_class()
- Data.to_csv()
- Data.to_duckdb()
- Data.to_feather()
- Data.to_feature_oriented()
- Data.to_hdf()
- Data.to_parquet()
- Data.to_sql()
- Data.to_symbol_oriented()
- Data.transform()
- Data.try_fetch_feature()
- Data.try_fetch_symbol()
- Data.try_run()
- Data.try_update_feature()
- Data.try_update_symbol()
- Data.update()
- Data.update_classes()
- Data.update_feature()
- Data.update_fetch_kwargs()
- Data.update_returned_kwargs()
- Data.update_symbol()
- Data.use_feature_config_of()
- HasSettings.get_path_setting()
- HasSettings.get_path_settings()
- HasSettings.get_setting()
- HasSettings.get_settings()
- HasSettings.has_path_setting()
- HasSettings.has_path_settings()
- HasSettings.has_setting()
- HasSettings.has_settings()
- HasSettings.reset_settings()
- HasSettings.resolve_setting()
- HasSettings.resolve_settings_paths()
- HasSettings.set_settings()
- IndexingBase.indexing_setter_func()
- OHLCDataMixin.get_daily_log_returns()
- OHLCDataMixin.get_daily_returns()
- OHLCDataMixin.get_drawdowns()
- OHLCDataMixin.get_log_returns()
- OHLCDataMixin.get_returns()
- OHLCDataMixin.get_returns_acc()
- PandasIndexer.xs()
- Pickleable.decode_config()
- Pickleable.decode_config_node()
- Pickleable.dumps()
- Pickleable.encode_config()
- Pickleable.encode_config_node()
- Pickleable.file_exists()
- Pickleable.getsize()
- Pickleable.load()
- Pickleable.loads()
- Pickleable.resolve_file_path()
- Pickleable.save()
- PlotsBuilderMixin.build_subplots_doc()
- PlotsBuilderMixin.override_subplots_doc()
- PlotsBuilderMixin.plots()
- RemoteData.classes
- RemoteData.close
- RemoteData.cls_dir
- RemoteData.column_only_select
- RemoteData.column_type
- RemoteData.columns
- RemoteData.config
- RemoteData.daily_log_returns
- RemoteData.daily_returns
- RemoteData.data
- RemoteData.delisted
- RemoteData.dict_type
- RemoteData.drawdowns
- RemoteData.feature_classes
- RemoteData.feature_config
- RemoteData.feature_oriented
- RemoteData.feature_wrapper
- RemoteData.features
- RemoteData.fetch_kwargs
- RemoteData.freq
- RemoteData.group_select
- RemoteData.has_ohlc
- RemoteData.has_ohlcv
- RemoteData.high
- RemoteData.hlc3
- RemoteData.iloc
- RemoteData.index
- RemoteData.indexing_kwargs
- RemoteData.key_wrapper
- RemoteData.keys
- RemoteData.last_index
- RemoteData.level_name
- RemoteData.loc
- RemoteData.log_returns
- RemoteData.low
- RemoteData.missing_columns
- RemoteData.missing_index
- RemoteData.ndim
- RemoteData.ohlc
- RemoteData.ohlc4
- RemoteData.ohlcv
- RemoteData.open
- RemoteData.plots_defaults
- RemoteData.range_only_select
- RemoteData.rec_state
- RemoteData.returned_kwargs
- RemoteData.returns
- RemoteData.returns_acc
- RemoteData.self_aliases
- RemoteData.shape
- RemoteData.shape_2d
- RemoteData.single_feature
- RemoteData.single_key
- RemoteData.single_symbol
- RemoteData.stats_defaults
- RemoteData.symbol_classes
- RemoteData.symbol_oriented
- RemoteData.symbol_wrapper
- RemoteData.symbols
- RemoteData.trade_count
- RemoteData.tz_convert
- RemoteData.tz_localize
- RemoteData.volume
- RemoteData.vwap
- RemoteData.wrapper
- RemoteData.xloc
- StatsBuilderMixin.build_metrics_doc()
- StatsBuilderMixin.override_metrics_doc()
- StatsBuilderMixin.stats()
- Wrapping.regroup()
- Wrapping.resolve_column_stack_kwargs()
- Wrapping.resolve_row_stack_kwargs()
- Wrapping.resolve_self()
- Wrapping.resolve_stack_kwargs()
- Wrapping.select_col()
- Wrapping.select_col_from_obj()
- Wrapping.split()

### fetch_symbol class method

    TVData.fetch_symbol(
        symbol,
        client=None,
        client_config=None,
        exchange=None,
        timeframe=None,
        tz=None,
        fut_contract=None,
        adjustment=None,
        extended_session=None,
        pro_data=None,
        limit=None
    )

Override Data.fetch_symbol() to fetch a symbol from TradingView.

Args

`symbol` :`str`

  Symbol.

  Symbol must be in the `EXCHANGE:SYMBOL` format if `exchange` is None.

`client` :TVClient

  Client.

  See TVData.resolve_client().

`client_config` :`dict`

  Client config.

  See TVData.resolve_client().

`exchange` :`str`

  Exchange.

  Can be omitted if already provided via `symbol`.

`timeframe` :`str`

  Timeframe.

  Allows human-readable strings such as "15 minutes".

`tz` :`any`

  Timezone.

  See to_timezone().

`fut_contract` :`int`
  None for cash, 1 for continuous current contract in front, 2 for continuous next contract in front.
`adjustment` :`str`

  Adjustment.

  Either "splits" (default) or "dividends".

`extended_session` :`bool`
  Regular session if False, extended session if True.
`pro_data` :`bool`
  Whether to use pro data.
`limit` :`int`
  The maximum number of returned items.

For defaults, see `custom.tv` in data.

### list_symbols class method

    TVData.list_symbols(
        *,
        exchange_pattern=None,
        symbol_pattern=None,
        use_regex=False,
        client=None,
        client_config=None,
        text=None,
        exchange=None,
        delay=None,
        show_progress=None,
        pbar_kwargs=None,
        market=None,
        markets=None,
        fields=None,
        filter_by=None,
        groups=None,
        template_context=None,
        return_field_data=False,
        **scanner_kwargs
    )

List all symbols.

Uses symbol search when either `text` or `exchange` is provided (returns a subset of symbols). Otherwise, uses the market scanner (returns all symbols, big payload).

When using the market scanner, use `market` to filter by one or multiple markets. For the list of available markets, see MARKET_LIST.

Use `fields` to make the market scanner return additional information that can be used for filtering with `filter_by`. Such information is passed to the function as a dictionary where fields are keys. The function can also be a template that can use the same information provided as a context, or a list of values that should be matched against the values corresponding to their fields. For the list of available fields, see FIELD_LIST. Argument `fields` can also be "all". Set `return_field_data` to True to return a list with (filtered) field data.

Use `groups` to provide a single dictionary or a list of dictionaries with groups. Each dictionary can be provided either in a compressed format, such as `dict(index=index)`, or in a full format, such as `dict(type="index", values=[index])`.

Keyword arguments `scanner_kwargs` are encoded and passed directly to the market scanner.

Uses CustomData.key_match() to check each exchange against `exchange_pattern` and each symbol against `symbol_pattern`.

Usage

- List all symbols (market scanner):

    >>> from vectorbtpro import *

    >>> vbt.TVData.list_symbols()

- Search for symbols matching a pattern (market scanner, client-side):

    >>> vbt.TVData.list_symbols(symbol_pattern="BTC*")

- Search for exchanges matching a pattern (market scanner, client-side):

    >>> vbt.TVData.list_symbols(exchange_pattern="NASDAQ")

- Search for symbols containing a text (symbol search, server-side):

    >>> vbt.TVData.list_symbols(text="BTC")

- List symbols from an exchange (symbol search):

    >>> vbt.TVData.list_symbols(exchange="NASDAQ")

- List symbols from a market (market scanner):

    >>> vbt.TVData.list_symbols(market="poland")

- List index constituents (market scanner):

    >>> vbt.TVData.list_symbols(groups=dict(index="NASDAQ:NDX"))

- Filter symbols by fields using a function (market scanner):

    >>> vbt.TVData.list_symbols(
    ...     market="america",
    ...     fields=["sector"],
    ...     filter_by=lambda context: context["sector"] == "Technology Services"
    ... )

- Filter symbols by fields using a template (market scanner):

    >>> vbt.TVData.list_symbols(
    ...     market="america",
    ...     fields=["sector"],
    ...     filter_by=vbt.RepEval("sector == 'Technology Services'")
    ... )

### resolve_client class method

    TVData.resolve_client(
        client=None,
        **client_config
    )

Resolve the client.

If provided, must be of the type TVClient. Otherwise, will be created using `client_config`.

#### Cookie consent

We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.

- Google Analytics
- GitHub

Manage settings