Skip to main content
TradingView

TradingView Advanced Chart 开发入门

本文介绍的是在 Web 项目中接入 TradingView Advanced Chart 。

申请

TradingView Advanced Chart 是免费使用的,代码文件需要通过 官网 进行申请,申请的时候需要使用公司邮箱,申请后一周内会收到邮件回复,按照邮件内容填写并签署协议文件后回复即可,注意协议文件中邮箱要与申请邮箱保持一致。

使用

使用 TradingView widget 分三步。

window.tvWidget = new TradingView.widget({
    library_path: "path_to_charting_library",
	locale: 'en',
	container: 'tv-chart-container',
	autosize: true,
	interval: '1', // 1 minute
	favorites: {
		intervals: ['1', '15', '1D'],
	},
	allow_symbol_change: false,
	theme: 'light',
    symbol: `EXCHANGE:BTC/USDT`, // default pair
    timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
	disabled_features: [...],
	enabled_features: [...],
	custom_themes: {
		light: [...],
		dark: [...]
	},
    datafeed: ...,
});

autosize 设置为 true , 可以让 widget 始终占满父容器大小,这样只需要定义父容器样式就可以了。 timiezone 设置 Intl.DateTimeFormat().resolvedOptions().timeZone , 可以在界面上按用户时区显示时间。 disabled_featuresenabled_features 用于选择功能,当你需要隐藏某些功能时,就需要在这里配置,功能列表具体可参考 文档链接 。我自己的配置如下:

disabled_features: [
    'symbol_search_hot_key',
    'header_quick_search',
    'header_symbol_search',
    'header_compare',
    'header_settings',
    'header_undo_redo',
    'header_saveload',
    'items_favoriting',
    'symbol_search_hot_key',
    'symbol_info',
    'edit_buttons_in_legend',
    'delete_button_in_legend',
    'use_localstorage_for_settings',
    'create_volume_indicator_by_default',
    'popup_hints',
],
enabled_features: ['show_interval_dialog_on_key_press', 'items_favoriting'],

可以参考下图获取 UI 关键字:

custom_themes 用于设置主题,一般需要定义 lightdark 主题。 主题包括 color1 color2 color3 color4 color5 color6 color7 white black 九个颜色,其中 color1 是主题色,color3 是红色,color4 是绿色。 你可以在 这里 设置好主题,然后复制到项目中。

剩余一个配置就是 datafeed ,这个也是最主要的配置,datafeed 主要提供以下方法。文档链接 .

interface Datafeed {
	onReady(callback: OnReadyCallback) => void;
	searchSymbol(
      userInput: string,
      exchange: string,
      symbolType: string,
      onResult: SearchSymbolsCallback,
	) => Promise<void>;
    resolveSymbol(
      symbolName: string,
      onResolve: ResolveCallback,
      onError: DatafeedErrorCallback,
      extension?: SymbolResolveExtension,
    ) => Promise<void>;
    getBars(
      symbolInfo: LibrarySymbolInfo,
      resolution: ResolutionString,
      periodParams: PeriodParams,
      onResult: HistoryCallback,
      onError: DatafeedErrorCallback,
    ) => Promise<void>;
	subscribeBars(
      symbolInfo: LibrarySymbolInfo,
      resolution: ResolutionString,
      onTick: SubscribeBarsCallback,
      listenerGuid: string,
	  onResetCacheNeededCallback: () => void,
    ) => Promise<void>;
	unsubscribeBars(subscriberUID: string) => void
}

onReady 图表初始化完成时会调用此方法。callback 可以调用一些基础配置。 searchSymbol 用于按用户输入搜索代币。 resolveSymboll 用户获取代币信息。

const symbolInfo = {
    ticker: 'BTCUSD',
    name: 'BTCUSD',
    description: 'Bitcoin/USD',
    type: symbolItem.type,
    session: '24x7',
    timezone: 'Etc/UTC',
    exchange: 'Example Exchange',
    minmov: 1,
    pricescale: 100,
    has_intraday: false,
    visible_plots_set: 'ohlcv',
    has_weekly_and_monthly: false,
    supported_resolutions: ['1', '5', '30', '60', '1D', '1W'],
    volume_precision: 2,
    data_status: 'streaming',
};

getBars 用于获取历史数据。 subscribeBars 用于更新最新数据。 unsubscribeBars 图表切换代币时会调用此方法。