TradingView 中文开发文档
  • 序言
  • 更新日志
  • 1、Charting Library 是什么
  • 2、入门指南
    • 2-1、图表库内容
    • 2-2、运行图表库
  • 3、数据绑定
    • 3-1、如何连接我的数据
    • 3-2、JS Api
    • 3-3、UDF
    • 3-4、Symbology
    • 3-5、交易时段
    • 3-6、报价
  • 4、图表定制
    • 4-1、定制概述
    • 4-2、Widget 构造器
    • 4-3、Widget 方法
    • 4-4、图表方法
    • 4-5、功能集
    • 4-6、服务端定制
    • 4-7、定制的使用案例
  • 5、交易终端
    • 5-1、交易终端简介
    • 5-2、经纪商 API
    • 5-3、交易主机
    • 5-4、账户管理器
    • 5-5、交易对象和常量
  • 6、储存和载入图表
  • 6-1、储存和载入的内存示例
  • 7、创建自定义指标
  • 8、最佳实践
  • 9、经常被问到的问题
  • 10、版本变更点
  • 附录
    • 图表的主要组成
    • 周期
    • 时间范围
    • 本地化
    • 覆盖
    • 绘图覆盖
    • 指标覆盖
    • 形状与覆盖
    • 图表样式属性
    • 图表自定义
    • 工具栏自定义
    • CSS主题颜色
    • 订阅
    • 交易元语
    • 在 K 线上做标记
    • 委托
    • WatchedValue
    • 指标 API
    • 形状 API
    • 形状组 API
    • 选择 API
    • 窗格 API
    • 数据列 API
    • 价格刻度 Api
    • 窗格和刻度特性
    • 快捷键
    • 新闻API示例
由 GitBook 提供支持
在本页
  • UDF
  • 表式响应概念
  • API调用
  • 构造函数

这有帮助吗?

  1. 3、数据绑定

3-3、UDF

上一页3-2、JS Api下一页3-4、Symbology

最后更新于3年前

这有帮助吗?


这是啥?: Universal Data Feed 通用数据反馈,基于HTTP协议的旨在以简单有效的方式向图表库提供数据。 我该怎么使用它?: 您应该创建小型的HTTP服务,让它从您的数据库中获取数据并响应图表库请求。

Datafeed 响应通常可以被视为表。例如,关于交易所的商品列表的响应,可以被视为每个商品代表一行,并有存在一些列(minimal_price_movement,description,has_intraday等)。每个列可以是一个数组(因此,它将为每个表的行提供单独的值)。但是当所有表的行具有相同的列值时,可能会出现这种情况:列的值可以是单独的JSON响应。

例如:

让我们假设我们已经请求了名称为NYSE(纽约证券交易所)的商品列表。响应(伪格式)可能像这样

{
   symbols: ["MSFT", "AAPL", "FB", "GOOG"],
   min_price_move: 0.1,
   description: ["Microsoft corp.", "Apple Inc", "Facebook", "Google"]
}

如果我们试图将这个回应设想成一张表,那么它就像这样

Symbol(商品代码)
min_price_move(最小价格变动)
描述

MSFT

0.1

Microsoft corp.

AAPL

0.1

Apple Inc

FB

0.1

Facebook

GOOG

0.1

Google

Request:GET /config

  • supports_search: 设置这一选项为true如果你的datafed 支持商品查询和人商品解析逻辑。

  • supports_group_request: 设置这一选项为true如果您的datafeed只提供所有商品集合的完整信息,并且无法进行商品搜索或单个商品解析。

supports_search和supports_group_request两者之中有只有一个可以为true。

Remark: 如果你的datafeed 没有实现这个调用(根本不响应或发送404),将使用默认配置。 这样::

{
    supports_search: false,
    supports_group_request: true,
    supported_resolutions: ["1", "5", "15", "30", "60", "1D", "1W", "1M"],
    supports_marks: false,
    supports_time: true
}

Request:GET /symbol_info?group=<group_name>

  1. group_name: string

Example:GET /symbol_info?group=NYSE

  • symbol

  • description

  • exchange-listed/exchange-traded

  • minmovement/minmov(注意:minmov已被弃用,并将在未来的版本中被删除)

  • minmovement2/minmov2(注意:minmov2已被弃用,并将在未来的版本中被删除)

  • fractional

  • pricescale

  • has-intraday

  • has-no-volume

  • type

  • ticker

  • timezone

  • session-regular(映射到SymbolInfo.session)

  • session-holidays

  • corrections

  • supported-resolutions

  • force-session-rebuild

  • has-daily

  • intraday-multipliers

  • has-fractional-volume(过时的)

  • volume_precision

  • has-weekly-and-monthly

  • has-empty-bars

示例:以下是对datafeed的响应示例GET /symbol_info?group=NYSE(数据为手工制造):

{
   symbol: ["AAPL", "MSFT", "SPX"],
   description: ["Apple Inc", "Microsoft corp", "S&P 500 index"],
   exchange-listed: "NYSE",
   exchange-traded: "NYSE",
   minmov: 1,
   minmov2: 0,
   pricescale: [1, 1, 100],
   has-dwm: true,
   has-intraday: true,
   has-no-volume: [false, false, true]
   type: ["stock", "stock", "index"],
   ticker: ["AAPL~0", "MSFT~0", "$SPX500"],
   timezone: “America/New_York”,
   session-regular: “0900-1600”,
}

Remark 1: 如果您的datafeed配置supports_group_request:true或根本没有响应配置请求,则将使用此调用。

Remark 2: 如果您的datafeed 被请求不支持的集合(如果您对请求#1(支持的集合)的响应是正确的),则会发生404错误)。

Remark 3: 使用此模式(获取大量的商品数据)在浏览器中存储一些用户不需要的数据。 因此,如果您的商品列表有多个项目,请考虑支持商品搜索/单个商品解析。

Request:GET /symbols?symbol=<symbol>

  1. symbol: string. 商品名称或者代码.

例:GET /symbols?symbol=AAL,GET /symbols?symbol=NYSE:MSFT

Remark: 如果您的datafeed配置supports_group_request:false 和 supports_search:true,则将执行此调用。

Request:GET /search?query=<query>&type=<type>&exchange=<exchange>&limit=<limit>

  1. query: string. 用户在商品搜索编辑框中输入的文本

  2. limit: integer. 响应最大项目数

例:GET /search?query=AA&type=stock&exchange=NYSE&limit=15

Remark: 如果您的datafeed配置supports_group_request:false 和 supports_search:true,则将执行此调用。

Request: GET /history?symbol=<ticker_name>&from=<unix_timestamp>&to=<unix_timestamp>&resolution=<resolution>&countback=<countback>

  • symbol: 商品ID

  • from: unix timestamp (UTC) 最左侧所需K线的 unix 时间戳

  • to: unix timestamp (UTC) 最右边的所需K线(不包括在内)

  • resolution: string

  • countback: 以 to 开头的k线(优先级高于 from )。 如果设置了 countback,则应该忽略 from。

例: GET /history?symbol=BEAM~0&resolution=D&from=1386493512&to=1395133512&countback=500

Response: 响应的预期是一个对象,下面列出了一些属性。每个属性都被视为表的列,如上所述。

  • s: 状态码。 预期值:ok|error|no_data

  • errmsg: 错误消息。只在s = 'error'时出现

  • t: K线时间. unix时间戳 (UTC)

  • c: 收盘价

  • o: 开盘价 (可选)

  • h: 最高价 (可选)

  • l: 最低价(可选)

  • v: 成交量 (可选)

  • nextTime: 下一个K线柱的时间 如果在请求期间无数据 (状态码为no_data) (可选)

Remark: K线时间对于月K线柱为这个月的第一个交易日,除去时间的部分。

Remark: 价格应作为数字传递,而不是使用字符串。

例:

{
   s: "ok",
   t: [1386493512, 1386493572, 1386493632, 1386493692],
   c: [42.1, 43.4, 44.3, 42.8]
}
{
   s: "no_data",
   nextTime: 1386493512
}
{
   s: "ok",
   t: [1386493512, 1386493572, 1386493632, 1386493692],
   c: [42.1, 43.4, 44.3, 42.8],
   o: [41.0, 42.9, 43.7, 44.5],
   h: [43.0, 44.1, 44.8, 44.5],
   l: [40.4, 42.1, 42.8, 42.3],
   v: [12000, 18500, 24000, 45000]
}

nextTime是怎么工作的

假设您以周期= 1观看图表,并且Library要求您以[2015年4月3日16:00 UTC + 0,2015年4月3日19:00 UTC + 0]为范围,向纽约证券交易所请求股票数据。 4月3日为受难节,交易所休假。 Library假定你会作出如下响应:

{  
    s: "no_data",
    nextTime: 1428001140000 //2015年4月2日 18:59:00 GMT+0
}

因此nextTime是一个从Library的原始请求边界的左侧(在假想时间线上)的K线柱时间。

所有省略的价格将被视为等于收盘价。

Request:GET /marks?symbol=<ticker_name>&from=<unix_timestamp>&to=<unix_timestamp>&resolution=<resolution>

  1. symbol: symbol name or ticker.

  2. from: unix timestamp (UTC) or leftmost visible bar

  3. to: unix timestamp (UTC) or rightmost visible bar

  4. resolution: string

{
    id: [array of ids],
    time: [array of times],
    color: [array of colors],
    text: [array of texts],
    label: [array of labels],
    labelFontColor: [array of label font colors],
    minSize: [array of minSizes],
}

Remark: 备注:如果您的datafeed在传输的配置数据中发送了supports_marks:true,则会调用此方法。

Request:GET /timescale_marks?symbol=<ticker_name>&from=<unix_timestamp>&to=<unix_timestamp>&resolution=<resolution>

  1. symbol: symbol name or ticker.

  2. from: unix timestamp (UTC) or leftmost visible bar

  3. to: unix timestamp (UTC) or rightmost visible bar

  4. resolution: string

Response: 响应预期为一个具有下列属性的数组对象。

  1. id: unique identifier of a mark

  2. color: rgba color

  3. label: 显示在圆圈中的文字

  4. time: unix time

  5. tooltip: 提示文本

Remark: This call will be requested if your datafeed sentsupports_timescale_marks: truein configuration data.

Request:GET /time

Response: 数字unix时间没有毫秒。 例: 1445324591

Request:GET /quotes?symbols=<ticker_name_1>,<ticker_name_2>,...,<ticker_name_n>

Example:GET /quotes?symbols=NYSE%3AAA%2CNYSE%3AF%2CNasdaqNM%3AAAPL

Response: Response is an object.

  • s: status code for request. Expected values:ok|error

  • errmsg: error message for client

Example:

{
    "s": "ok",
    "d": [{
        "s": "ok",
        "n": "NYSE:AA",
        "v": {
            "ch": "+0.16",
            "chp": "0.98",
            "short_name": "AA",
            "exchange": "NYSE",
            "description": "Alcoa Inc. Common",
            "lp": "16.57",
            "ask": "16.58",
            "bid": "16.57",
            "open_price": "16.25",
            "high_price": "16.60",
            "low_price": "16.25",
            "prev_close_price": "16.41",
            "volume": "4029041"
        }
    }, {
        "s": "ok",
        "n": "NYSE:F",
        "v": {
            "ch": "+0.15",
            "chp": "0.89",
            "short_name": "F",
            "exchange": "NYSE",
            "description": "Ford Motor Compan",
            "lp": "17.02",
            "ask": "17.03",
            "bid": "17.02",
            "open_price": "16.74",
            "high_price": "17.08",
            "low_price": "16.74",
            "prev_close_price": "16.87",
            "volume": "7713782"
        }
    }]
}

Datafeeds.UDFCompatibleDatafeed = function(datafeedURL, updateFrequency, protocolVersion)

这是一个数据服务器的URL,它将得到请求和返回数据。

这是一个有周期的实时数据请求,datafeed将以毫秒为单位发送到服务器。 默认值为10000(10秒)。

Response: 图表库期望接收与JS API调用相同结构的JSON数据。 此外,还应该有2个附加属性::

Response: 预期响应是具有以下列出的属性的对象。 每个属性都被视为表的一列,如上所述(请参见)。响应结构与类似(但不等于),因此有关所有字段的详细信息,请参见其描述。

Response: JSON包含的对象与完全一样

type: string. 您的后台之一

exchange: string. 您的后台之一

Response: 响应将是调用后返回的一个数组类型的商品记录

Remark: bar time 对于日K线时间应以 00:00 UTC为起点。 图表库会根据SymbolInfo的来对齐时间。

Response: 响应预期是一个对象,下面列出了一些属性。此对象与JS API中的相似,但每个属性都被视为表的列,如上所述。

d: array

(更新频率)

symbols data
UDF
表式响应概念
API调用
Datafeed 配置数据
商品集合信息
商品解析
商品检索
K线柱
标识
时间刻度标记
服务器时间
报价
构造函数
datafeedURL
updateFrequency
表式响应
SymbolInfo
SymbolInfo
Session
setup()
支持的类型
支持的交易所
JS API
respective response