/tradingview-api-adapter

πŸ“Š API Adapter for real-time market data as quoted prices and symbol ticker details from Tradingview πŸ“ˆ

Primary LanguageTypeScriptMIT LicenseMIT

tradingview-api-adapter

πŸ“Š API Adapter for real-time market data as quoted prices and symbol ticker details from Tradingview πŸ“ˆ

β™»οΈŽ In developing

βœ… Current Test Version: 1.2.0 [16.02.2023]

πŸ‘¨πŸ»β€πŸ’»I need your feedback. Help improve the library for our general benefit

Installation

Stable version:

npm i tradingview-api-adapter

Examples

Quote [Class]: Obtaining quoted data in real time

Fields

  minmov, minmove2, circulating_supply, popularity
  average_volume, total_supply, total_shares_outstanding,   
  
  ask, bid,
  
  lp, low_price, open_price, high_price, prev_close_price, 
  open_time, chp, ch, volume, total_shares_diluted, total_value_traded,
  pricescale, pointvalue,
  
  first_bar_time_1s, first_bar_time_1m, first_bar_time_1d,
  all_time_high, all_time_open, all_time_low,
  price_52_week_low, price_percent_change_52_week, price_52_week_high, price_percent_change_1_week
  price_percent_change_1_week,
  
  'trade', 'minute-bar', 'daily-bar', 'prev-daily-bar'

Usage

import {TvApiAdapter} from 'tradingview-api-adapter'


const adapter = new TvApiAdapter();

adapter.Quote('BTCUSD', 'BINANCE', ['lp', 'ch', 'chp']).listen(data => {
    console.log('Last price: ', data.lp);
    console.log('Price change: ', data.ch);
    console.log('Price change in percent: ', data.ch);
})

Result for all fields

  minmove2: 0,
  minmov: 1,

  circulating_supply: 19289550,
  popularity: 6559928,
  average_volume: 1722.622664,
  total_supply: 19289550,
  total_shares_outstanding: 19289550,


  lp: 21666.54,
  low_price: 21431.41,
  open_price: 21793.12,
  high_price: 21899.36,
  prev_close_price: 21792.89,
  open_time: 1676246400,
  chp: -0.58,
  ch: -126.35,
  volume: 1113.41904,
  total_shares_diluted: 21000000,
  total_value_traded: 22323876304.39608,

  pricescale: 100,
  pointvalue: 1,

  first_bar_time_1s: 1660694401,
  first_bar_time_1m: 1578038400,
  first_bar_time_1d: 1578009600,
  all_time_high: 69275.4705132,
  all_time_open: 6976.1030327,
  all_time_low: 3717.974312,
  price_52_week_low: 15479.25,
  price_percent_change_52_week: -48.97188345,
  price_52_week_high: 48240.33,
  price_percent_change_1_week: -6.03974829,
  
  trade: {
    'data-update-time': '1676290514.699386',
    price: '21641.98',
    size: '0.01892',
    time: '1676290505'
  },
  'minute-bar': {
    close: '21641.98',
    'data-update-time': '1676290514.699386',
    high: '21641.98',
    low: '21641.17',
    open: '21641.37',
    time: '1676290500',
    'update-time': '1676290505.0',
    volume: '0.02528'
  },
  'daily-bar': {
    close: '21641.98',
    'data-update-time': '1676290514.699387',
    high: '21899.36',
    low: '21431.41',
    open: '21793.12',
    time: '1676246400',
    'update-time': '1676290505.0',
    volume: '1067.39197'
  },
  'prev-daily-bar': {
    close: '21792.89',
    'data-update-time': '1676246400.609871',
    high: '22092.14',
    low: '21640.57',
    open: '21851.81',
    time: '1676160000',
    'update-time': '1676246396.0',
    volume: '1171.77258'
  }
}

QuoteChannel [πŸ’ŽNEW Class]: Obtaining multi-quoted data in real time

Usage

import {TvApiAdapter} from 'tradingview-api-adapter'


const adapter = new TvApiAdapter();

const exChannel = adapter.QuoteChannel({
    'MUN': ['APC'],
    'Binance': ['BTCUSDT', 'DOGEUSDT']
}, ['lp', 'ask', 'bid'])

=====or=====

const exChannel = adapter.QuoteChannel([
    'BINANCE:BTCUSDT', 'BINANCE:DOGEUSDT' 'MUN:APC'
], ['lp', 'ask', 'bid'])


exChannel.listen(data => {
    console.log(data)
})

The result of the console

{
  BINANCE: {
    DOGEUSDT: { lp: 0.08892, bid: 0.08892, ask: 0.08893 },
    BTCUSDT: { bid: 24597.31, ask: 24597.32, lp: 24597.23 }
  },
  MUN: { 
    APC: { lp: 145.24, bid: 144.86, ask: 144.92 } 
  }
}

TickerDetails [Class]: Allows you to get additional info about Ticker Symbol

Usage

import {TvApiAdapter} from 'tradingview-api-adapter'

const adapter = new TvApiAdapter();

const DogeInfo = adapter.TickerDetails('DOGEUSD', 'Binance');

DogeInfo.ready(tm => {
    console.log(tm)
})

The result of the console

{
    seriesKey: 'BINANCE:DOGEUSD',
    baseName: [ 'BINANCE:DOGEUSD' ],
    symbol: 'DOGEUSD',
    symbolFullname: 'BINANCE:DOGEUSD',
    feedTicker: 'DOGEUSD',
    exchangeListedSymbol: 'DOGEUSD',
    sessionId: 'crypto',
    sessionRegularDisplay: '24x7',
    sessionExtendedDisplay: '24x7',
    sessionExtended: '24x7',
    sessionDisplay: '24x7',
    sessionRegular: '24x7',
    subsessions: [
        {
            description: 'Regular Trading Hours',
            id: 'regular',
            private: false,
            session: '24x7',
            'session-display': '24x7'
        }
    ],
    subsessionId: 'regular',
    group: 'binance_spreads_runner2',
    perms: { rt: { prefix: 'BINANCE' } },
    marketStatus: { phase: 'regular', tradingday: '20230215' },
    internalStudyId: 'CurrencyConverter@tv-basicstudies-132!',
    internalStudyInputs: { rate: 'INDEX:BTCUSD', symbol: 'BINANCE:DOGEBTC', useRTRate: true },
    exchange: 'BINANCE',
    exchangeTraded: 'BINANCE',
    listedExchange: 'BINANCE',
    providerId: 'binance',
    description: 'Dogecoin / US Dollar (calculated by TradingView)',
    shortDescription: 'Dogecoin / US Dollar (calculated by TradingView)',
    type: 'crypto',
    currencyCode: 'USD',
    currencyId: 'USD',
    baseCurrency: 'DOGE',
    baseCurrencyId: 'XTVCDOGE',
    symbolPrimaryName: 'BINANCE:DOGEUSD',
    symbolProname: 'BINANCE:DOGEUSD',
    proName: 'BINANCE:DOGEUSD',
    shortName: 'DOGEUSD',
    originalName: 'BINANCE:DOGEUSD',
    maxPrecision: 8,
    isTradable: false,
    hasDepth: false,
    fundamentalData: true,
    fractional: false,
    popularityRank: 3.5793118736554446,
    proPerm: '',
    variableTickSize: '',
    historyTag: '',
    rtLag: '9.069304',
    rtUpdateTime: '1676465374.0',
    timezone: 'Etc/UTC',
    currentSession: 'market',
    feedHasIntraday: true,
    hasIntraday: true,
    isReplayable: true,
    hasPriceSnapshot: false,
    feed: 'runner-intraday',
    feedHasDwm: false,
    hasNoBbo: false,
    hasNoVolume: false,
    hasDwm: true,
    localPopularity: {
        AE: 790,
        BR: 4642,
        CN: 5611,
        DE: 13065,
        ES: 13891,
        FR: 15763,
        ID: 2634,
        IL: 318,
        IN: 13750,
        IT: 5159,
        JP: 6325,
        KR: 5983,
        PL: 5440,
        RU: 29302,
        SE: 645,
        TH: 7900,
        TR: 20474,
        TW: 3793,
        US: 539550,
        VN: 2443
    },
    localPopularityRank: {
        AE: 4.2420188926631495,
        BR: 3.8731514888536487,
        CN: 3.8369531543119244,
        DE: 3.5775828338723796,
        ES: 3.8642349392929574,
        FR: 3.5099721819085126,
        ID: 3.634900014607327,
        IL: 3.946343180230935,
        IN: 4.3838522732435745,
        IT: 3.65965996833445,
        JP: 4.086705608977654,
        KR: 3.7368189724535967,
        PL: 3.5024902792902957,
        RU: 3.7239316911388682,
        SE: 3.8583321674815934,
        TH: 3.512627747031323,
        TR: 3.629837049479071,
        TW: 3.74280732258542,
        US: 3.463184155816383,
        VN: 4.052303315748319
    },
    visiblePlotsSet: 'ohlcv',
    prefixes: [ 'RUNNER_BINANCE2' ],
    brokerNames: {},
    currencyLogoId: 'country/US',
    baseCurrencyLogoId: 'crypto/XTVCDOGE',
    volumeType: 'base',
    typespecs: [ 'synthetic' ]
}