Skip to content

Instantly share code, notes, and snippets.

@kyawswarthwin
Created October 28, 2022 13:12
Show Gist options
  • Save kyawswarthwin/9810640a64e5335e2680d9ec4a6d4101 to your computer and use it in GitHub Desktop.
Save kyawswarthwin/9810640a64e5335e2680d9ec4a6d4101 to your computer and use it in GitHub Desktop.
TradingView Screener
// Data Source: https://static.tradingview.com/static/bundles/embed/57226.e5f80e0c95e53007e6fe.js
const data = {
us: {
title: 'USA',
screenerName: 'america',
screenerTimezone: 'America/New_York',
defaultExchange: 'US',
exchangesForHotlist: ['AMEX', 'NASDAQ', 'NYSE', 'OTC', 'US'],
exchangesStocks: ['NASDAQ', 'NYSE', 'NYSE ARCA', 'OTC'],
group: 'North America'
},
ae: {
title: 'United Arab Emirates',
screenerName: 'uae',
screenerTimezone: 'Asia/Dubai',
exchangesStocks: ['DFM', 'ADX'],
group: 'Middle East / Africa'
},
ar: {
title: 'Argentina',
screenerName: 'argentina',
screenerTimezone: 'America/Argentina/Buenos_Aires',
exchangesForHotlist: ['BCBA'],
exchangesStocks: ['BYMA'],
defaultExchange: 'BCBA',
group: 'Mexico and South America'
},
at: { title: 'Austria' },
au: {
title: 'Australia',
screenerName: 'australia',
screenerTimezone: 'Australia/Sydney',
exchangesStocks: ['ASX'],
group: 'Asia / Pacific'
},
be: {
title: 'Belgium',
screenerName: 'belgium',
screenerTimezone: 'Europe/Brussels',
exchangesForHotlist: ['EURONEXT_BRU'],
exchangesStocks: ['EURONEXTBRU'],
defaultExchange: 'EURONEXT_BRU',
group: 'Europe'
},
bh: {
title: 'Bahrain',
screenerName: 'bahrain',
screenerTimezone: 'Asia/Bahrain',
exchangesStocks: ['BAHRAIN'],
group: 'Middle East / Africa'
},
br: {
title: 'Brazil',
screenerName: 'brazil',
screenerTimezone: 'America/Sao_Paulo',
exchangesStocks: ['BMFBOVESPA'],
group: 'Mexico and South America'
},
ca: {
title: 'Canada',
screenerName: 'canada',
screenerTimezone: 'America/Toronto',
exchangesStocks: ['TSX', 'TSXV', 'CSE', 'NEO'],
group: 'North America'
},
ch: {
title: 'Switzerland',
screenerName: 'switzerland',
screenerTimezone: 'Europe/Zurich',
exchangesStocks: ['SIX', 'BX'],
group: 'Europe'
},
cl: {
title: 'Chile',
screenerName: 'chile',
screenerTimezone: 'America/Santiago',
exchangesStocks: ['BCS'],
group: 'Mexico and South America'
},
cn: {
title: 'China',
tvLocale: 'zh_CN',
screenerName: 'china',
screenerTimezone: 'Asia/Hong_Kong',
exchangesStocks: ['SSE', 'SZSE'],
group: 'Asia / Pacific'
},
co: {
title: 'Colombia',
screenerName: 'colombia',
screenerTimezone: 'America/Bogota',
exchangesStocks: ['BVC'],
group: 'Mexico and South America'
},
cz: { title: 'Czech Republic' },
de: {
title: 'Germany',
tvLocale: 'de_DE',
screenerName: 'germany',
screenerTimezone: 'Europe/Berlin',
defaultExchange: 'XETR',
exchangesStocks: [
'FWB',
'SWB',
'XETR',
'BER',
'DUS',
'HAM',
'HAN',
'MUN',
'TRADEGATE'
],
group: 'Europe'
},
dk: {
title: 'Denmark',
screenerName: 'denmark',
screenerTimezone: 'Europe/Copenhagen',
exchangesStocks: ['OMXCOP'],
group: 'Europe'
},
ee: {
title: 'Estonia',
screenerName: 'estonia',
screenerTimezone: 'Europe/Tallinn',
exchangesStocks: ['OMXTSE'],
group: 'Europe'
},
eg: {
title: 'Egypt',
screenerName: 'egypt',
screenerTimezone: 'Africa/Cairo',
exchangesStocks: ['EGX'],
group: 'Middle East / Africa'
},
es: {
title: 'Spain',
screenerName: 'spain',
screenerTimezone: 'Europe/Madrid',
exchangesStocks: ['BME'],
group: 'Europe'
},
eu: {
title: 'European Union',
screenerName: 'euronext',
screenerTimezone: 'Europe/Paris',
exchangesForHotlist: [],
exchangesStocks: ['EURONEXT']
},
fi: {
title: 'Finland',
screenerName: 'finland',
screenerTimezone: 'Europe/Helsinki',
exchangesStocks: ['OMXHEX'],
group: 'Europe'
},
fr: {
title: 'France',
screenerName: 'france',
screenerTimezone: 'Europe/Paris',
exchangesForHotlist: ['EURONEXT_PAR'],
exchangesStocks: ['EURONEXTPAR'],
defaultExchange: 'EURONEXT_PAR',
group: 'Europe'
},
ge: { title: 'Georgia' },
gr: {
title: 'Greece',
screenerName: 'greece',
screenerTimezone: 'Europe/Athens',
exchangesStocks: ['ATHEX'],
group: 'Europe'
},
hk: {
title: 'Hong Kong',
screenerName: 'hongkong',
screenerTimezone: 'Asia/Hong_Kong',
exchangesStocks: ['HKEX'],
group: 'Asia / Pacific'
},
hu: {
title: 'Hungary',
screenerName: 'hungary',
screenerTimezone: 'Europe/Budapest',
exchangesStocks: ['BET'],
exchangesForHotlist: ['BET'],
defaultExchange: 'BET',
group: 'Europe'
},
id: {
title: 'Indonesia',
screenerName: 'indonesia',
screenerTimezone: 'Asia/Jakarta',
exchangesStocks: ['IDX'],
group: 'Asia / Pacific'
},
ie: { title: 'Ireland' },
il: {
title: 'Israel',
screenerName: 'israel',
screenerTimezone: 'Asia/Jerusalem',
exchangesStocks: ['TASE'],
group: 'Middle East / Africa'
},
in: {
title: 'India',
screenerName: 'india',
screenerTimezone: 'Asia/Kolkata',
exchangesStocks: ['BSE', 'NSE'],
group: 'Asia / Pacific'
},
ir: { title: 'Iran' },
is: {
title: 'Iceland',
screenerName: 'iceland',
screenerTimezone: 'Atlantic/Reykjavik',
exchangesStocks: ['OMXICE'],
group: 'Europe'
},
it: {
title: 'Italy',
screenerName: 'italy',
screenerTimezone: 'Europe/Rome',
exchangesForHotlist: ['MIL'],
exchangesStocks: ['MIL'],
group: 'Europe'
},
jp: {
title: 'Japan',
tvLocale: 'ja',
screenerName: 'japan',
screenerTimezone: 'Asia/Tokyo',
defaultExchange: 'TSE',
exchangesForHotlist: ['NAG', 'TSE'],
exchangesStocks: ['TSE', 'NAG', 'FSE', 'SAPSE'],
group: 'Asia / Pacific'
},
kp: { title: 'Noth Korea' },
kr: {
title: 'South Korea',
tvLocale: 'kr',
screenerName: 'korea',
screenerTimezone: 'Asia/Seoul',
exchangesStocks: ['KRX'],
group: 'Asia / Pacific'
},
lt: {
title: 'Lithuania',
screenerName: 'lithuania',
screenerTimezone: 'Europe/Vilnius',
exchangesStocks: ['OMXVSE'],
group: 'Europe'
},
lv: {
title: 'Latvia',
screenerName: 'latvia',
screenerTimezone: 'Europe/Riga',
exchangesStocks: ['OMXRSE'],
group: 'Europe'
},
lu: {
title: 'Luxembourg',
screenerName: 'luxembourg',
screenerTimezone: 'Europe/Luxembourg',
exchangesStocks: ['LUXSE'],
exchangesForHotlist: ['LUXSE'],
defaultExchange: 'LUXSE',
group: 'Europe'
},
mx: {
title: 'Mexico',
screenerName: 'mexico',
screenerTimezone: 'America/Mexico_City',
exchangesStocks: ['BMV'],
group: 'Mexico and South America'
},
my: {
title: 'Malaysia',
tvLocale: 'ms_MY',
screenerName: 'malaysia',
screenerTimezone: 'Asia/Singapore',
exchangesStocks: ['MYX'],
group: 'Asia / Pacific'
},
ng: {
title: 'Nigeria',
screenerName: 'nigeria',
screenerTimezone: 'Africa/Lagos',
exchangesStocks: ['NSENG'],
group: 'Middle East / Africa'
},
nl: {
title: 'Netherlands',
screenerName: 'netherlands',
screenerTimezone: 'Europe/Amsterdam',
exchangesForHotlist: ['EURONEXT_AMS'],
exchangesStocks: ['EURONEXTAMS'],
defaultExchange: 'EURONEXT_AMS',
group: 'Europe'
},
no: {
title: 'Norway',
screenerName: 'norway',
screenerTimezone: 'Europe/Oslo',
exchangesForHotlist: ['OSL'],
exchangesStocks: ['EURONEXTOSE'],
defaultExchange: 'OSL',
group: 'Europe'
},
nz: {
title: 'New Zealand',
screenerName: 'newzealand',
screenerTimezone: 'Pacific/Auckland',
exchangesStocks: ['NZX'],
group: 'Asia / Pacific'
},
pe: {
title: 'Peru',
screenerName: 'peru',
screenerTimezone: 'America/Lima',
exchangesStocks: ['BVL'],
group: 'Mexico and South America'
},
ph: {
title: 'Philippines',
screenerName: 'philippines',
screenerTimezone: 'Philippines/Manila',
exchangesStocks: ['PSE'],
group: 'Asia / Pacific'
},
pl: {
title: 'Poland',
screenerName: 'poland',
screenerTimezone: 'Europe/Warsaw',
exchangesStocks: ['GPW', 'NEWCONNECT'],
group: 'Europe'
},
pt: {
title: 'Portugal',
screenerName: 'portugal',
screenerTimezone: 'Europe/Lisbon',
exchangesForHotlist: ['EURONEXT_LIS'],
exchangesStocks: ['EURONEXTLIS'],
defaultExchange: 'EURONEXT_LIS',
group: 'Europe'
},
qa: {
title: 'Qatar',
screenerName: 'qatar',
screenerTimezone: 'Asia/Qatar',
exchangesStocks: ['QSE'],
group: 'Middle East / Africa'
},
ro: {
title: 'Romania',
screenerName: 'romania',
screenerTimezone: 'Europe/Bucharest',
exchangesStocks: ['BVB'],
exchangesForHotlist: ['BVB'],
defaultExchange: 'BVB',
group: 'Europe'
},
rs: {
title: 'Serbia',
screenerName: 'serbia',
screenerTimezone: 'Europe/Belgrade',
exchangesStocks: ['BELEX'],
group: 'Europe'
},
ru: {
title: 'Russia',
screenerName: 'russia',
screenerTimezone: 'Europe/Moscow',
exchangesStocks: ['MOEX'],
group: 'Europe'
},
sa: {
title: 'Saudi Arabia',
tvLocale: 'ar_AE',
screenerName: 'ksa',
screenerTimezone: 'Asia/Riyadh',
exchangesStocks: ['TADAWUL'],
group: 'Middle East / Africa'
},
se: {
title: 'Sweden',
tvLocale: 'sv_SE',
screenerName: 'sweden',
screenerTimezone: 'Europe/Stockholm',
exchangesStocks: ['NGM', 'OMXSTO'],
exchangesForHotlist: ['NGM', 'OMXSTO'],
group: 'Europe'
},
sg: {
title: 'Singapore',
screenerName: 'singapore',
screenerTimezone: 'Asia/Singapore',
exchangesStocks: ['SGX'],
group: 'Asia / Pacific'
},
sk: {
title: 'Slovakia',
screenerName: 'slovakia',
screenerTimezone: 'Europe/Bratislava',
exchangesStocks: ['BSSE'],
group: 'Europe'
},
th: {
title: 'Thailand',
tvLocale: 'th_TH',
screenerName: 'thailand',
screenerTimezone: 'Asia/Bangkok',
exchangesStocks: ['SET'],
group: 'Asia / Pacific'
},
tr: {
title: 'Turkey',
screenerName: 'turkey',
screenerTimezone: 'Europe/Istanbul',
exchangesStocks: ['BIST'],
group: 'Europe'
},
tw: {
title: 'Taiwan',
tvLocale: 'zh_TW',
screenerName: 'taiwan',
screenerTimezone: 'Asia/Taipei',
exchangesStocks: ['TWSE', 'TPEX'],
group: 'Asia / Pacific'
},
uk: {
title: 'United Kingdom',
screenerName: 'uk',
screenerTimezone: 'Europe/London',
defaultExchange: 'LSE',
exchangesStocks: ['LSE', 'LSIN'],
group: 'Europe'
},
ve: {
title: 'Venezuela',
screenerName: 'venezuela',
screenerTimezone: 'America/Caracas',
exchangesStocks: ['BVCV'],
group: 'Mexico and South America'
},
vn: {
title: 'Vietnam',
tvLocale: 'vi_VN',
screenerName: 'vietnam',
screenerTimezone: 'Asia/Ho_Chi_Minh',
exchangesStocks: ['HOSE', 'HNX', 'UPCOM'],
group: 'Asia / Pacific'
},
za: {
title: 'South Africa',
screenerName: 'rsa',
screenerTimezone: 'Africa/Johannesburg',
exchangesStocks: ['JSE'],
group: 'Middle East / Africa'
},
ww: { title: 'Worldwide' }
};
const result = {};
Object.keys(data).forEach((country) => {
const { screenerName } = data[country];
if (screenerName) {
result[country.toUpperCase()] = screenerName;
}
});
const sortObject = (o) =>
Object.keys(o)
.sort()
.reduce((r, k) => ((r[k] = o[k]), r), {});
console.log(sortObject(result));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment