Skip to main content

History

TradingView needs the /history endpoint to:

  • fill the database with deep history,
  • compensate data from /streaming in case of problems.

After initial filling of the database, TradingView makes regular requests to /history endpoint to keep the data relevant. TradingView data feed requests 1-minute bars for the whole day per request. Requests are made sequentially from the current time to the past.

Data requirements

Your data should meet the following requirements:

  • The data must be real, from the production environment preferably. Otherwise, integration tests will fail.
  • Real-time data obtained from the /streaming endpoint must match the historical data obtained from /history. The number of mismatched bars (candles) must not exceed 5% for frequently traded symbols. Otherwise, integration into TradingView is not possible.
  • The data must not include unreasonable price gaps, historical data gaps on 1-minute, daily resolutions (temporal gaps), and incorrect prices (adhesions).
  • The daily bar time should be 00:00 UTC and expected to be a trading day, not a day when a session starts. For example, if the session starts at 10:00 PM on Monday and finishes at 9:00 PM on Tuesday, the daily bar time should be 00:00 UTC on Tuesday.
  • The monthly bar time should be 00:00 UTC and be the first trading day of the month.

TradingView requests /history until the date that the broker reported in the Data requirements form. Without this date, TradingView requests history up to 1800 year.

Response example

Requests to /history consist of the from and to parameters. TradingView expects to receive all bars (except bars with "v": [0]) inside the given interval, including the boundary values.

/history?symbol=BTCUSDT&resolution=1&from=1637502014&to=1637502267

The response example is demonstrated below:

{
"s": "ok",
"t": [
1637502060,
1637502180,
1637502240
],
"o": [
58905.5,
58907.5,
58889
],
"h": [
58908,
58908,
58893.5
],
"l": [
58905.5,
58888.5,
58869
],
"c": [
58907.5,
58889,
58893
],
"v": [
5.365,
2.288,
17.36
]
}

No data in requested period

If there is no data in the requested time period, return an empty response:

  {
"s": "ok",
"t": [],
"o": [],
"h": [],
"l": [],
"c": [],
"v": []
}