From f41cfce2842ab0710d8758127fb39d1829e91ad5 Mon Sep 17 00:00:00 2001 From: Jayzen Date: Wed, 6 Sep 2023 12:24:34 -0700 Subject: [PATCH 1/8] feat(module): add dailyGainers --- docs/modules/dailyGainers.md | 470 ++++++++++++++++++++++++++++ schema.json | 515 +++++++++++++++++++++++++++++++ src/index-common.ts | 2 + src/modules/dailyGainers.spec.ts | 14 + src/modules/dailyGainers.ts | 185 +++++++++++ 5 files changed, 1186 insertions(+) create mode 100644 docs/modules/dailyGainers.md create mode 100644 src/modules/dailyGainers.spec.ts create mode 100644 src/modules/dailyGainers.ts diff --git a/docs/modules/dailyGainers.md b/docs/modules/dailyGainers.md new file mode 100644 index 00000000..febc64f9 --- /dev/null +++ b/docs/modules/dailyGainers.md @@ -0,0 +1,470 @@ +# trendingSymbols + +## Usage: + +```js +import yahooFinance from 'yahoo-finance2'; +const queryOptions = { count: 5, region: 'US', lang: 'en-US' }; +const result = await yahooFinance.dailyGainers(queryOptions); +``` +Result: +```js +{ + "id": "ec5bebb9-b7b2-4474-9e5c-3e258b61cbe6", + "title": "Day Gainers", + "description": "Discover the equities with the greatest gains in the trading day.", + "canonicalName": "DAY_GAINERS", + "criteriaMeta": { + "size": 5, + "offset": 0, + "sortField": "percentchange", + "sortType": "DESC", + "quoteType": "EQUITY", + "criteria": [ + { + "field": "percentchange", + "operators": [ + "GT" + ], + "values": [ + 3 + ], + "labelsSelected": [], + "dependentValues": [] + }, + { + "field": "region", + "operators": [ + "EQ" + ], + "values": [], + "labelsSelected": [ + 52 + ], + "dependentValues": [] + }, + { + "field": "intradaymarketcap", + "operators": [ + "EQ" + ], + "values": [], + "labelsSelected": [ + 1, + 2, + 3 + ], + "dependentValues": [] + }, + { + "field": "dayvolume", + "operators": [ + "GT" + ], + "values": [ + 15000 + ], + "labelsSelected": [], + "dependentValues": [] + } + ], + "topOperator": "AND" + }, + "rawCriteria": "{\"offset\":0,\"size\":5,\"sortField\":\"percentchange\",\"sortType\":\"DESC\",\"quoteType\":\"EQUITY\",\"query\":{\"operator\":\"AND\",\"operands\":[{\"operator\":\"GT\",\"operands\":[\"percentchange\",3.0]},{\"operator\":\"eq\",\"operands\":[\"region\",\"us\"]},{\"operator\":\"or\",\"operands\":[{\"operator\":\"BTWN\",\"operands\":[\"intradaymarketcap\",2000000000,10000000000]},{\"operator\":\"BTWN\",\"operands\":[\"intradaymarketcap\",10000000000,100000000000]},{\"operator\":\"GT\",\"operands\":[\"intradaymarketcap\",100000000000]}]},{\"operator\":\"gt\",\"operands\":[\"dayvolume\",15000]}]}}", + "start": 0, + "count": 5, + "total": 38, + "quotes": [ + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Delayed Quote", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -38.925724, + "regularMarketChange": 0.059, + "regularMarketTime": 1694022026, + "regularMarketPrice": 0.06, + "regularMarketDayHigh": 0.1, + "regularMarketDayRange": "0.06 - 0.1", + "regularMarketDayLow": 0.06, + "regularMarketVolume": 75675, + "regularMarketPreviousClose": 0.001, + "market": "us_market", + "messageBoardId": "finmb_39388687", + "fullExchangeName": "Other OTC", + "longName": "China Evergrande Group", + "financialCurrency": "CNY", + "regularMarketOpen": 0.07, + "averageDailyVolume3Month": 6011, + "averageDailyVolume10Day": 13298, + "fiftyTwoWeekLowChange": 0.0598, + "fiftyTwoWeekLowChangePercent": 299, + "fiftyTwoWeekRange": "2.0E-4 - 0.1899", + "fiftyTwoWeekHighChange": -0.1299, + "fiftyTwoWeekHighChangePercent": -0.68404424, + "fiftyTwoWeekChangePercent": -99.09091, + "dividendDate": 1467936000, + "currency": "USD", + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -0.02, + "sharesOutstanding": 13204299776, + "bookValue": -49.653, + "fiftyDayAverage": 0.00353, + "fiftyDayAverageChange": 0.05647, + "fiftyDayAverageChangePercent": 15.997167, + "twoHundredDayAverage": 0.0192125, + "twoHundredDayAverageChange": 0.0407875, + "twoHundredDayAverageChangePercent": 2.1229668, + "marketCap": 69454192640, + "priceToBook": -0.0012083862, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1273066200000, + "priceHint": 4, + "exchange": "PNK", + "fiftyTwoWeekLow": 0.0002, + "fiftyTwoWeekHigh": 0.1899, + "shortName": "CHINA EVERGRANDE GROUP", + "regularMarketChangePercent": 5900.0103, + "displayName": "China Evergrande", + "symbol": "EGRNF" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Delayed Quote", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -6.969699, + "lastClosePriceToNNWCPerShare": -0.010227259877067203, + "regularMarketChange": 0.030749992, + "regularMarketTime": 1694021728, + "regularMarketPrice": 0.16475, + "regularMarketDayHigh": 0.1761, + "regularMarketDayRange": "0.1534 - 0.1761", + "regularMarketDayLow": 0.1534, + "regularMarketVolume": 90550, + "regularMarketPreviousClose": 0.134, + "bid": 0, + "ask": 0, + "bidSize": 0, + "askSize": 0, + "market": "us_market", + "messageBoardId": "finmb_29328657", + "fullExchangeName": "Other OTC", + "longName": "Country Garden Holdings Company Limited", + "financialCurrency": "CNY", + "regularMarketOpen": 0.1625, + "averageDailyVolume3Month": 20080, + "averageDailyVolume10Day": 81900, + "fiftyTwoWeekLowChange": 0.06474999, + "fiftyTwoWeekLowChangePercent": 0.6474999, + "fiftyTwoWeekRange": "0.1 - 0.43", + "fiftyTwoWeekHighChange": -0.26525003, + "fiftyTwoWeekHighChangePercent": -0.6168605, + "fiftyTwoWeekChangePercent": -51.851852, + "currency": "USD", + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -0.03, + "sharesOutstanding": 27637000192, + "bookValue": 5.669, + "fiftyDayAverage": 0.1658, + "fiftyDayAverageChange": -0.0010500103, + "fiftyDayAverageChangePercent": -0.0063329935, + "twoHundredDayAverage": 0.26685, + "twoHundredDayAverageChange": -0.1021, + "twoHundredDayAverageChangePercent": -0.38261196, + "marketCap": 4553195520, + "priceToBook": 0.029061561, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1181136600000, + "priceHint": 4, + "exchange": "PNK", + "fiftyTwoWeekLow": 0.1, + "fiftyTwoWeekHigh": 0.43, + "shortName": "COUNTRY GARDEN HLDGS CO LTD", + "regularMarketChangePercent": 22.947754, + "displayName": "Country Garden Holdings Company", + "symbol": "CTRYF" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": true, + "customPriceAlertConfidence": "HIGH", + "lastCloseTevEbitLtm": 117.658623, + "lastClosePriceToNNWCPerShare": -459.0150770954308, + "regularMarketChange": 20.809998, + "regularMarketTime": 1694024227, + "regularMarketPrice": 116.1, + "regularMarketDayHigh": 124.3299, + "regularMarketDayRange": "112.13 - 124.3299", + "regularMarketDayLow": 112.13, + "regularMarketVolume": 1778309, + "regularMarketPreviousClose": 95.29, + "bid": 115.36, + "ask": 116.21, + "bidSize": 8, + "askSize": 8, + "market": "us_market", + "messageBoardId": "finmb_1674636", + "fullExchangeName": "NasdaqGS", + "longName": "AeroVironment, Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 113.16, + "averageDailyVolume3Month": 183358, + "averageDailyVolume10Day": 143500, + "fiftyTwoWeekLowChange": 41.189995, + "fiftyTwoWeekLowChangePercent": 0.54985976, + "fiftyTwoWeekRange": "74.91 - 124.3299", + "fiftyTwoWeekHighChange": -8.229904, + "fiftyTwoWeekHighChangePercent": -0.06619409, + "fiftyTwoWeekChangePercent": 7.465887, + "earningsTimestamp": 1693945800, + "currency": "USD", + "earningsTimestampStart": 1701723600, + "earningsTimestampEnd": 1702069200, + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -7.12, + "epsForward": 2.98, + "epsCurrentYear": 2.6, + "priceEpsCurrentYear": 44.653847, + "sharesOutstanding": 26292100, + "bookValue": 21.161, + "fiftyDayAverage": 96.0714, + "fiftyDayAverageChange": 20.028595, + "fiftyDayAverageChangePercent": 0.20847614, + "twoHundredDayAverage": 93.8046, + "twoHundredDayAverageChange": 22.295395, + "twoHundredDayAverageChangePercent": 0.23767911, + "marketCap": 3052512768, + "forwardPE": 38.959732, + "priceToBook": 5.4865084, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1169562600000, + "priceHint": 2, + "exchange": "NMS", + "fiftyTwoWeekLow": 74.91, + "fiftyTwoWeekHigh": 124.3299, + "shortName": "AeroVironment, Inc.", + "regularMarketChangePercent": 21.838594, + "averageAnalystRating": "1.9 - Buy", + "displayName": "AeroVironment", + "symbol": "AVAV" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Delayed Quote", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -6.969699, + "lastClosePriceToNNWCPerShare": -0.010751892814821473, + "regularMarketChange": 0.6400001, + "regularMarketTime": 1694023199, + "regularMarketPrice": 3.94, + "regularMarketDayHigh": 4.1, + "regularMarketDayRange": "3.8 - 4.1", + "regularMarketDayLow": 3.8, + "regularMarketVolume": 64565, + "regularMarketPreviousClose": 3.3, + "bid": 0, + "ask": 0, + "bidSize": 0, + "askSize": 0, + "market": "us_market", + "messageBoardId": "finmb_29328657", + "fullExchangeName": "Other OTC", + "longName": "Country Garden Holdings Company Limited", + "financialCurrency": "CNY", + "regularMarketOpen": 4.02, + "averageDailyVolume3Month": 11522, + "averageDailyVolume10Day": 50640, + "fiftyTwoWeekLowChange": 1.54, + "fiftyTwoWeekLowChangePercent": 0.64166665, + "fiftyTwoWeekRange": "2.4 - 11.0", + "fiftyTwoWeekHighChange": -7.06, + "fiftyTwoWeekHighChangePercent": -0.64181817, + "fiftyTwoWeekChangePercent": -52.034885, + "dividendDate": 1661472000, + "currency": "USD", + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -0.86, + "sharesOutstanding": 1105479936, + "bookValue": 141.725, + "fiftyDayAverage": 4.0494, + "fiftyDayAverageChange": -0.109399796, + "fiftyDayAverageChangePercent": -0.027016299, + "twoHundredDayAverage": 6.6446, + "twoHundredDayAverageChange": -2.7045999, + "twoHundredDayAverageChangePercent": -0.4070373, + "marketCap": 4355591168, + "priceToBook": 0.027800316, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1364995800000, + "priceHint": 4, + "exchange": "PNK", + "fiftyTwoWeekLow": 2.4, + "fiftyTwoWeekHigh": 11, + "shortName": "COUNTRY GARDEN HLDGS CO LTD UNS", + "regularMarketChangePercent": 19.393942, + "symbol": "CTRYY" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -10.073021, + "lastClosePriceToNNWCPerShare": -2.365476868583487, + "regularMarketChange": 4.880001, + "regularMarketTime": 1694024232, + "regularMarketPrice": 35.27, + "regularMarketDayHigh": 35.9199, + "regularMarketDayRange": "30.24 - 35.9199", + "regularMarketDayLow": 30.24, + "regularMarketVolume": 6644840, + "regularMarketPreviousClose": 30.39, + "bid": 34.42, + "ask": 34.49, + "bidSize": 8, + "askSize": 8, + "market": "us_market", + "messageBoardId": "finmb_8548197", + "fullExchangeName": "NYSE", + "longName": "Alteryx, Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 30.3, + "averageDailyVolume3Month": 1941287, + "averageDailyVolume10Day": 1392550, + "fiftyTwoWeekLowChange": 7.3500004, + "fiftyTwoWeekLowChangePercent": 0.26325217, + "fiftyTwoWeekRange": "27.92 - 70.63", + "fiftyTwoWeekHighChange": -35.359997, + "fiftyTwoWeekHighChangePercent": -0.5006371, + "fiftyTwoWeekChangePercent": -51.715923, + "earningsTimestamp": 1691442000, + "currency": "USD", + "earningsTimestampStart": 1698663540, + "earningsTimestampEnd": 1699012800, + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -4.53, + "epsForward": 1.11, + "epsCurrentYear": 0.66, + "priceEpsCurrentYear": 53.439392, + "sharesOutstanding": 63165400, + "bookValue": 0.732, + "fiftyDayAverage": 36.6076, + "fiftyDayAverageChange": -1.3376007, + "fiftyDayAverageChangePercent": -0.03653888, + "twoHundredDayAverage": 46.90595, + "twoHundredDayAverageChange": -11.635948, + "twoHundredDayAverageChangePercent": -0.24806978, + "marketCap": 2505997056, + "forwardPE": 31.774775, + "priceToBook": 48.18306, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1490362200000, + "priceHint": 2, + "exchange": "NYQ", + "fiftyTwoWeekLow": 27.92, + "fiftyTwoWeekHigh": 70.63, + "shortName": "Alteryx, Inc.", + "regularMarketChangePercent": 16.057919, + "averageAnalystRating": "2.3 - Buy", + "displayName": "Alteryx", + "symbol": "AYX" + } + ], + "useRecords": false, + "predefinedScr": true, + "versionId": 9, + "creationDate": 1473796102800, + "lastUpdated": 1660940390625, + "isPremium": false, + "iconUrl": "https://s.yimg.com/cv/apiv2/fin/img/assets/predefined_screeners/trendingUp.png" +} + +``` + +**Note:** The example output above does not cover all possible return results, which can vary by asset type and even time of day (trading period). For an exhausting list of everything we cover and that you might get back, please see the TypeScript interface in https://github.com/gadicc/node-yahoo-finance2/blob/devel/src/modules/trendingSymbols.ts + +## API + +```js +await yahooFinance.dailyGainers(queryOptions, moduleOptions); +``` + +### Query + +While testing, the highest count returned was 38. +region does not seem to do anything when changed, always returns US + +### Query Options + +| Name | Type | Default | Description | +| -------- | ------ | ------- | ----------------------------------------------------------------- | +| `count` | number | 5 | The max amount of symbols that can be returned. | +| `lang` | string | "en-US" | | +| `region` | string | | The region/country. Will override the search country is provided. | + +### Module Options + +See [Common Options](../README.md#common-options). \ No newline at end of file diff --git a/schema.json b/schema.json index 01e0535e..8e75e551 100644 --- a/schema.json +++ b/schema.json @@ -690,6 +690,521 @@ }, "additionalProperties": false }, + "DailyGainersResult": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "canonicalName": { + "type": "string" + }, + "criteriaMeta": { + "$ref": "#/definitions/DailyGainersCriteriaMeta" + }, + "rawCriteria": { + "type": "string" + }, + "start": { + "yahooFinanceType": "number" + }, + "count": { + "yahooFinanceType": "number" + }, + "total": { + "yahooFinanceType": "number" + }, + "quotes": { + "type": "array", + "items": { + "$ref": "#/definitions/DailyGainersQuote" + } + }, + "useRecords": { + "type": "boolean" + }, + "predefinedScr": { + "type": "boolean" + }, + "versionId": { + "yahooFinanceType": "number" + }, + "creationDate": { + "yahooFinanceType": "number" + }, + "lastUpdated": { + "yahooFinanceType": "number" + }, + "isPremium": { + "type": "boolean" + }, + "iconUrl": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "description", + "canonicalName", + "criteriaMeta", + "rawCriteria", + "start", + "count", + "total", + "quotes", + "useRecords", + "predefinedScr", + "versionId", + "creationDate", + "lastUpdated", + "isPremium", + "iconUrl" + ], + "additionalProperties": false + }, + "DailyGainersCriteriaMeta": { + "type": "object", + "properties": { + "size": { + "yahooFinanceType": "number" + }, + "offset": { + "yahooFinanceType": "number" + }, + "sortField": { + "type": "string" + }, + "sortType": { + "type": "string" + }, + "quoteType": { + "type": "string" + }, + "criteria": { + "type": "array", + "items": { + "$ref": "#/definitions/DailyGainersCriterum" + } + }, + "topOperator": { + "type": "string" + } + }, + "required": [ + "size", + "offset", + "sortField", + "sortType", + "quoteType", + "criteria", + "topOperator" + ], + "additionalProperties": false + }, + "DailyGainersCriterum": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "operators": { + "type": "array", + "items": { + "type": "string" + } + }, + "values": { + "type": "array", + "items": { + "yahooFinanceType": "number" + } + }, + "labelsSelected": { + "type": "array", + "items": { + "yahooFinanceType": "number" + } + }, + "dependentValues": { + "type": "array", + "items": {} + } + }, + "required": [ + "field", + "operators", + "values", + "labelsSelected", + "dependentValues" + ], + "additionalProperties": false + }, + "DailyGainersQuote": { + "type": "object", + "properties": { + "language": { + "type": "string" + }, + "region": { + "type": "string" + }, + "quoteType": { + "type": "string" + }, + "typeDisp": { + "type": "string" + }, + "quoteSourceName": { + "type": "string" + }, + "triggerable": { + "type": "boolean" + }, + "customPriceAlertConfidence": { + "type": "string" + }, + "lastCloseTevEbitLtm": { + "yahooFinanceType": "number" + }, + "lastClosePriceToNNWCPerShare": { + "yahooFinanceType": "number" + }, + "firstTradeDateMilliseconds": { + "yahooFinanceType": "number" + }, + "priceHint": { + "yahooFinanceType": "number" + }, + "postMarketChangePercent": { + "yahooFinanceType": "number" + }, + "postMarketTime": { + "yahooFinanceType": "number" + }, + "postMarketPrice": { + "yahooFinanceType": "number" + }, + "postMarketChange": { + "yahooFinanceType": "number" + }, + "regularMarketChange": { + "yahooFinanceType": "number" + }, + "regularMarketTime": { + "yahooFinanceType": "number" + }, + "regularMarketPrice": { + "yahooFinanceType": "number" + }, + "regularMarketDayHigh": { + "yahooFinanceType": "number" + }, + "regularMarketDayRange": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "regularMarketDayLow": { + "yahooFinanceType": "number" + }, + "regularMarketVolume": { + "yahooFinanceType": "number" + }, + "regularMarketPreviousClose": { + "yahooFinanceType": "number" + }, + "bid": { + "yahooFinanceType": "number" + }, + "ask": { + "yahooFinanceType": "number" + }, + "bidSize": { + "yahooFinanceType": "number" + }, + "askSize": { + "yahooFinanceType": "number" + }, + "market": { + "type": "string" + }, + "messageBoardId": { + "type": "string" + }, + "fullExchangeName": { + "type": "string" + }, + "longName": { + "type": "string" + }, + "financialCurrency": { + "type": "string" + }, + "regularMarketOpen": { + "yahooFinanceType": "number" + }, + "averageDailyVolume3Month": { + "yahooFinanceType": "number" + }, + "averageDailyVolume10Day": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekLowChange": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekLowChangePercent": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekRange": { + "type": "string" + }, + "fiftyTwoWeekHighChange": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekHighChangePercent": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekChangePercent": { + "yahooFinanceType": "number" + }, + "earningsTimestamp": { + "yahooFinanceType": "number" + }, + "earningsTimestampStart": { + "yahooFinanceType": "number" + }, + "earningsTimestampEnd": { + "yahooFinanceType": "number" + }, + "trailingAnnualDividendRate": { + "yahooFinanceType": "number" + }, + "trailingAnnualDividendYield": { + "yahooFinanceType": "number" + }, + "marketState": { + "type": "string" + }, + "epsTrailingTwelveMonths": { + "yahooFinanceType": "number" + }, + "epsForward": { + "yahooFinanceType": "number" + }, + "epsCurrentYear": { + "yahooFinanceType": "number" + }, + "priceEpsCurrentYear": { + "yahooFinanceType": "number" + }, + "sharesOutstanding": { + "yahooFinanceType": "number" + }, + "bookValue": { + "yahooFinanceType": "number" + }, + "fiftyDayAverage": { + "yahooFinanceType": "number" + }, + "fiftyDayAverageChange": { + "yahooFinanceType": "number" + }, + "fiftyDayAverageChangePercent": { + "yahooFinanceType": "number" + }, + "twoHundredDayAverage": { + "yahooFinanceType": "number" + }, + "twoHundredDayAverageChange": { + "yahooFinanceType": "number" + }, + "twoHundredDayAverageChangePercent": { + "yahooFinanceType": "number" + }, + "marketCap": { + "yahooFinanceType": "number" + }, + "forwardPE": { + "yahooFinanceType": "number" + }, + "priceToBook": { + "yahooFinanceType": "number" + }, + "sourceInterval": { + "yahooFinanceType": "number" + }, + "exchangeDataDelayedBy": { + "yahooFinanceType": "number" + }, + "exchangeTimezoneName": { + "type": "string" + }, + "exchangeTimezoneShortName": { + "type": "string" + }, + "gmtOffSetMilliseconds": { + "yahooFinanceType": "number" + }, + "esgPopulated": { + "type": "boolean" + }, + "tradeable": { + "type": "boolean" + }, + "cryptoTradeable": { + "type": "boolean" + }, + "exchange": { + "type": "string" + }, + "fiftyTwoWeekLow": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekHigh": { + "yahooFinanceType": "number" + }, + "shortName": { + "type": "string" + }, + "averageAnalystRating": { + "type": "string" + }, + "regularMarketChangePercent": { + "yahooFinanceType": "number" + }, + "symbol": { + "type": "string" + }, + "dividendDate": { + "yahooFinanceType": "number" + }, + "displayName": { + "type": "string" + }, + "trailingPE": { + "yahooFinanceType": "number" + }, + "prevName": { + "type": "string" + }, + "nameChangeDate": { + "yahooFinanceType": "number" + }, + "ipoExpectedDate": { + "yahooFinanceType": "number" + }, + "dividendYield": { + "yahooFinanceType": "number" + }, + "dividendRate": { + "yahooFinanceType": "number" + } + }, + "required": [ + "language", + "region", + "quoteType", + "typeDisp", + "quoteSourceName", + "triggerable", + "customPriceAlertConfidence", + "firstTradeDateMilliseconds", + "priceHint", + "regularMarketChange", + "regularMarketTime", + "regularMarketPrice", + "regularMarketDayHigh", + "regularMarketDayRange", + "currency", + "regularMarketDayLow", + "regularMarketVolume", + "regularMarketPreviousClose", + "market", + "messageBoardId", + "fullExchangeName", + "longName", + "financialCurrency", + "regularMarketOpen", + "averageDailyVolume3Month", + "averageDailyVolume10Day", + "fiftyTwoWeekLowChange", + "fiftyTwoWeekLowChangePercent", + "fiftyTwoWeekRange", + "fiftyTwoWeekHighChange", + "fiftyTwoWeekHighChangePercent", + "fiftyTwoWeekChangePercent", + "trailingAnnualDividendRate", + "trailingAnnualDividendYield", + "marketState", + "epsTrailingTwelveMonths", + "sharesOutstanding", + "bookValue", + "fiftyDayAverage", + "fiftyDayAverageChange", + "fiftyDayAverageChangePercent", + "twoHundredDayAverage", + "twoHundredDayAverageChange", + "twoHundredDayAverageChangePercent", + "marketCap", + "priceToBook", + "sourceInterval", + "exchangeDataDelayedBy", + "exchangeTimezoneName", + "exchangeTimezoneShortName", + "gmtOffSetMilliseconds", + "esgPopulated", + "tradeable", + "cryptoTradeable", + "exchange", + "fiftyTwoWeekLow", + "fiftyTwoWeekHigh", + "shortName", + "regularMarketChangePercent", + "symbol" + ], + "additionalProperties": false + }, + "DailyGainersOptions": { + "type": "object", + "properties": { + "lang": { + "type": "string" + }, + "region": { + "type": "string" + }, + "count": { + "yahooFinanceType": "number" + } + }, + "additionalProperties": false + }, + "NamedParameters": { + "type": "object", + "properties": { + "this": { + "$ref": "#/definitions/ModuleThis" + }, + "queryOptionsOverrides": { + "$ref": "#/definitions/DailyGainersOptions" + }, + "moduleOptions": { + "$ref": "#/definitions/ModuleOptions" + } + }, + "required": [ + "this" + ], + "additionalProperties": false + }, "HistoricalHistoryResult": { "type": "array", "items": { diff --git a/src/index-common.ts b/src/index-common.ts index b22b8f93..6c92b06f 100644 --- a/src/index-common.ts +++ b/src/index-common.ts @@ -17,6 +17,7 @@ import quoteSummary from "./modules/quoteSummary.js"; import recommendationsBySymbol from "./modules/recommendationsBySymbol.js"; import search from "./modules/search.js"; import trendingSymbols from "./modules/trendingSymbols.js"; +import dailyGainers from "./modules/dailyGainers.js"; // other import quoteCombine from "./other/quoteCombine.js"; @@ -44,6 +45,7 @@ export default { recommendationsBySymbol, search, trendingSymbols, + dailyGainers, // other quoteCombine, diff --git a/src/modules/dailyGainers.spec.ts b/src/modules/dailyGainers.spec.ts new file mode 100644 index 00000000..76f53a60 --- /dev/null +++ b/src/modules/dailyGainers.spec.ts @@ -0,0 +1,14 @@ +import dailyGainers from "./dailyGainers.js"; +import testYf from "../../tests/testYf.js"; + +const yf = testYf({ dailyGainers }); + +describe("dailyGainers", () => { + if (process.env.FETCH_DEVEL !== "nocache") + it("throws on weird result", () => { + const devel = "weirdJsonResult.fake.json"; + return expect(yf.dailyGainers({}, undefined, { devel })).rejects.toThrow( + /^Unexpected result/ + ); + }); +}); diff --git a/src/modules/dailyGainers.ts b/src/modules/dailyGainers.ts new file mode 100644 index 00000000..00765901 --- /dev/null +++ b/src/modules/dailyGainers.ts @@ -0,0 +1,185 @@ +import type { + ModuleOptions, + ModuleOptionsWithValidateTrue, + ModuleOptionsWithValidateFalse, + ModuleThis, +} from "../lib/moduleCommon.js"; + +export interface DailyGainersResult { + id: string; + title: string; + description: string; + canonicalName: string; + criteriaMeta: DailyGainersCriteriaMeta; + rawCriteria: string; + start: number; + count: number; + total: number; + quotes: DailyGainersQuote[]; + useRecords: boolean; + predefinedScr: boolean; + versionId: number; + creationDate: number; + lastUpdated: number; + isPremium: boolean; + iconUrl: string; +} + +export interface DailyGainersCriteriaMeta { + size: number; + offset: number; + sortField: string; + sortType: string; + quoteType: string; + criteria: DailyGainersCriterum[]; + topOperator: string; +} + +export interface DailyGainersCriterum { + field: string; + operators: string[]; + values: number[]; + labelsSelected: number[]; + dependentValues: any[]; +} + +export interface DailyGainersQuote { + language: string; + region: string; + quoteType: string; + typeDisp: string; + quoteSourceName: string; + triggerable: boolean; + customPriceAlertConfidence: string; + lastCloseTevEbitLtm?: number; + lastClosePriceToNNWCPerShare?: number; + firstTradeDateMilliseconds: number; + priceHint: number; + postMarketChangePercent?: number; + postMarketTime?: number; + postMarketPrice?: number; + postMarketChange?: number; + regularMarketChange: number; + regularMarketTime: number; + regularMarketPrice: number; + regularMarketDayHigh: number; + regularMarketDayRange: string; + currency: string; + regularMarketDayLow: number; + regularMarketVolume: number; + regularMarketPreviousClose: number; + bid?: number; + ask?: number; + bidSize?: number; + askSize?: number; + market: string; + messageBoardId: string; + fullExchangeName: string; + longName: string; + financialCurrency: string; + regularMarketOpen: number; + averageDailyVolume3Month: number; + averageDailyVolume10Day: number; + fiftyTwoWeekLowChange: number; + fiftyTwoWeekLowChangePercent: number; + fiftyTwoWeekRange: string; + fiftyTwoWeekHighChange: number; + fiftyTwoWeekHighChangePercent: number; + fiftyTwoWeekChangePercent: number; + earningsTimestamp?: number; + earningsTimestampStart?: number; + earningsTimestampEnd?: number; + trailingAnnualDividendRate: number; + trailingAnnualDividendYield: number; + marketState: string; + epsTrailingTwelveMonths: number; + epsForward?: number; + epsCurrentYear?: number; + priceEpsCurrentYear?: number; + sharesOutstanding: number; + bookValue: number; + fiftyDayAverage: number; + fiftyDayAverageChange: number; + fiftyDayAverageChangePercent: number; + twoHundredDayAverage: number; + twoHundredDayAverageChange: number; + twoHundredDayAverageChangePercent: number; + marketCap: number; + forwardPE?: number; + priceToBook: number; + sourceInterval: number; + exchangeDataDelayedBy: number; + exchangeTimezoneName: string; + exchangeTimezoneShortName: string; + gmtOffSetMilliseconds: number; + esgPopulated: boolean; + tradeable: boolean; + cryptoTradeable: boolean; + exchange: string; + fiftyTwoWeekLow: number; + fiftyTwoWeekHigh: number; + shortName: string; + averageAnalystRating?: string; + regularMarketChangePercent: number; + symbol: string; + dividendDate?: number; + displayName?: string; + trailingPE?: number; + prevName?: string; + nameChangeDate?: number; + ipoExpectedDate?: number; + dividendYield?: number; + dividendRate?: number; +} + +const queryOptionsDefaults = { + lang: "en-US", + region: "US", + scrIds: "day_gainers", + count: 5, +}; + +export interface DailyGainersOptions { + lang?: string; + region?: string; + count?: number; +} + +export default function dailyGainers( + this: ModuleThis, + queryOptionsOverrides?: DailyGainersOptions, + moduleOptions?: ModuleOptionsWithValidateTrue +): Promise; + +export default function dailyGainers( + this: ModuleThis, + queryOptionsOverrides?: DailyGainersOptions, + moduleOptions?: ModuleOptionsWithValidateFalse +): Promise; + +export default function dailyGainers( + this: ModuleThis, + queryOptionsOverrides?: DailyGainersOptions, + moduleOptions?: ModuleOptions +): Promise { + return this._moduleExec({ + moduleName: "dailyGainers", + query: { + url: "https://query2.finance.yahoo.com/v1/finance/screener/predefined/saved", + schemaKey: "#/definitions/DailyGainersOptions", + defaults: queryOptionsDefaults, + overrides: queryOptionsOverrides, + needsCrumb: true, + }, + result: { + schemaKey: "#/definitions/DailyGainersResult", + transformWith(result: any) { + console.log(result); + if (!result.finance) + throw new Error("Unexpected result: " + JSON.stringify(result)); + return result.finance.result[0]; + }, + }, + moduleOptions, + }); +} From 30c2e457a0fbbcc9558c93c6e9616509bcc3ade3 Mon Sep 17 00:00:00 2001 From: Jayzen Date: Wed, 6 Sep 2023 12:30:36 -0700 Subject: [PATCH 2/8] update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ded6261..b73a8b97 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ symbol, topHoldings, upgradeDowngradeHistory), [`recommendationsBySymbol`](./docs/modules/recommendationsBySymbol.md), [`trendingSymbols`](./docs/modules/trendingSymbols.md), [`options`](./docs/modules/options.md), -[`insights`](./docs/modules/insights.md), with more +[`insights`](./docs/modules/insights.md), [`dailyGainers`](./docs/modules/dailyGainers.md), with more [coming soon](https://github.com/gadicc/node-yahoo-finance2/issues/8). Extras: [`quoteCombine`](./docs/other/quoteCombine.md). From 7f630f51ca4f3e812e156d6ea62dfcc3be403742 Mon Sep 17 00:00:00 2001 From: Jayzen Date: Wed, 6 Sep 2023 12:31:36 -0700 Subject: [PATCH 3/8] prettier --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b73a8b97..68a5228c 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,8 @@ symbol, topHoldings, upgradeDowngradeHistory), [`recommendationsBySymbol`](./docs/modules/recommendationsBySymbol.md), [`trendingSymbols`](./docs/modules/trendingSymbols.md), [`options`](./docs/modules/options.md), -[`insights`](./docs/modules/insights.md), [`dailyGainers`](./docs/modules/dailyGainers.md), with more +[`insights`](./docs/modules/insights.md), +[`dailyGainers`](./docs/modules/dailyGainers.md), with more [coming soon](https://github.com/gadicc/node-yahoo-finance2/issues/8). Extras: [`quoteCombine`](./docs/other/quoteCombine.md). From de3f974b1b0b59e81aee0aba334b76a17160701e Mon Sep 17 00:00:00 2001 From: Jayzen Date: Wed, 6 Sep 2023 12:42:03 -0700 Subject: [PATCH 4/8] test case fixed --- src/modules/dailyGainers.spec.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/dailyGainers.spec.ts b/src/modules/dailyGainers.spec.ts index 76f53a60..b51d87d6 100644 --- a/src/modules/dailyGainers.spec.ts +++ b/src/modules/dailyGainers.spec.ts @@ -7,8 +7,7 @@ describe("dailyGainers", () => { if (process.env.FETCH_DEVEL !== "nocache") it("throws on weird result", () => { const devel = "weirdJsonResult.fake.json"; - return expect(yf.dailyGainers({}, undefined, { devel })).rejects.toThrow( - /^Unexpected result/ + return expect(yf.dailyGainers({}, undefined, { devel })).resolves.toBeDefined( ); }); }); From 6fbf7f02b4eb5212e40fa519908a0041b2e87321 Mon Sep 17 00:00:00 2001 From: Jayzen Date: Wed, 6 Sep 2023 12:43:27 -0700 Subject: [PATCH 5/8] prettier --- src/modules/dailyGainers.spec.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/dailyGainers.spec.ts b/src/modules/dailyGainers.spec.ts index b51d87d6..eca7e4cc 100644 --- a/src/modules/dailyGainers.spec.ts +++ b/src/modules/dailyGainers.spec.ts @@ -7,7 +7,8 @@ describe("dailyGainers", () => { if (process.env.FETCH_DEVEL !== "nocache") it("throws on weird result", () => { const devel = "weirdJsonResult.fake.json"; - return expect(yf.dailyGainers({}, undefined, { devel })).resolves.toBeDefined( - ); + return expect( + yf.dailyGainers({}, undefined, { devel }) + ).resolves.toBeDefined(); }); }); From 9c467b6159d25fe4b5fad5fd947a80b36465592f Mon Sep 17 00:00:00 2001 From: Jayzen <1714252+z3nful@users.noreply.github.com> Date: Wed, 6 Sep 2023 16:17:16 -0700 Subject: [PATCH 6/8] fix test coverage fixed test cases --- src/modules/dailyGainers.spec.ts | 13 +- tests/http/dailyGainers.json | 502 +++++++++++++++++++++++++++++++ 2 files changed, 512 insertions(+), 3 deletions(-) create mode 100644 tests/http/dailyGainers.json diff --git a/src/modules/dailyGainers.spec.ts b/src/modules/dailyGainers.spec.ts index eca7e4cc..d7aee67c 100644 --- a/src/modules/dailyGainers.spec.ts +++ b/src/modules/dailyGainers.spec.ts @@ -5,10 +5,17 @@ const yf = testYf({ dailyGainers }); describe("dailyGainers", () => { if (process.env.FETCH_DEVEL !== "nocache") - it("throws on weird result", () => { - const devel = "weirdJsonResult.fake.json"; + it("returns expected result", () => { + const devel = "dailyGainers.json"; return expect( - yf.dailyGainers({}, undefined, { devel }) + yf.dailyGainers({}, { devel: `dailyGainers.json` }) ).resolves.toBeDefined(); }); + + it("throws on weird result", () => { + const devel = "weirdJsonResult.fake.json"; + return expect(yf.dailyGainers({}, { devel })).rejects.toThrow( + /^Unexpected result/ + ); + }); }); diff --git a/tests/http/dailyGainers.json b/tests/http/dailyGainers.json new file mode 100644 index 00000000..bc5420d9 --- /dev/null +++ b/tests/http/dailyGainers.json @@ -0,0 +1,502 @@ +{ + "request": { + "url": "https://query2.finance.yahoo.com/v1/finance/screener/predefined/saved?lang=en-US®ion=US&scrIds=day_gainers&count=5" + }, + "response": { + "ok": true, + "status": 200, + "statusText": "OK", + "headers": { + "x-yahoo-request-id": [ + "a8sssk5g6s90i" + ], + "cache-control": [ + "max-age=300, stale-while-revalidate=15, stale-if-error=3600" + ], + "content-encoding": [ + "gzip" + ], + "content-type": [ + "application/json;charset=utf-8" + ], + "vary": [ + "Origin" + ], + "content-length": [ + "161" + ], + "date": [ + "Wed, 07 Apr 2021 21:28:50 GMT" + ], + "age": [ + "0" + ], + "strict-transport-security": [ + "max-age=15552000" + ], + "server": [ + "ATS" + ], + "public-key-pins-report-only": [ + "max-age=2592000; pin-sha256=\"2fRAUXyxl4A1/XHrKNBmc8bTkzA7y4FB/GLJuNAzCqY=\"; pin-sha256=\"I/Lt/z7ekCWanjD0Cvj5EqXls2lOaThEA0H2Bg4BT/o=\"; pin-sha256=\"K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q=\"; pin-sha256=\"Wd8xe/qfTwq3ylFNd3IpaqLHZbh2ZNCLluVzmeNkcpw=\"; pin-sha256=\"WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18=\"; pin-sha256=\"cGuxAXyFXFkWm61cF4HPWX8S0srS9j0aSqN0k4AP+4A=\"; pin-sha256=\"dolnbtzEBnELx/9lOEQ22e6OZO/QNb6VSSX2XHA3E7A=\"; pin-sha256=\"i7WTqTvh0OioIruIfFR4kMPnBqrS2rdiVPl/s2uC/CY=\"; pin-sha256=\"r/mIkG3eEpVdm+u/ko/cwxzOMo1bk4TyHIlByibiA5E=\"; pin-sha256=\"uUwZgwDOxcBXrQcntwu+kYFpkiVkOaezL0WYEZ3anJc=\"; includeSubdomains; report-uri=\"http://csp.yahoo.com/beacon/csp?src=yahoocom-hpkp-report-only\"" + ], + "x-frame-options": [ + "SAMEORIGIN" + ], + "referrer-policy": [ + "no-referrer-when-downgrade" + ], + "connection": [ + "close" + ], + "expect-ct": [ + "max-age=31536000, report-uri=\"http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only\"" + ], + "x-xss-protection": [ + "1; mode=block" + ], + "x-content-type-options": [ + "nosniff" + ] + }, + "bodyJson": { + "finance": { + "result": [ + { + "id": "ec5bebb9-b7b2-4474-9e5c-3e258b61cbe6", + "title": "Day Gainers", + "description": "Discover the equities with the greatest gains in the trading day.", + "canonicalName": "DAY_GAINERS", + "criteriaMeta": { + "size": 5, + "offset": 0, + "sortField": "percentchange", + "sortType": "DESC", + "quoteType": "EQUITY", + "criteria": [ + { + "field": "percentchange", + "operators": [ + "GT" + ], + "values": [ + 3 + ], + "labelsSelected": [], + "dependentValues": [] + }, + { + "field": "region", + "operators": [ + "EQ" + ], + "values": [], + "labelsSelected": [ + 52 + ], + "dependentValues": [] + }, + { + "field": "intradaymarketcap", + "operators": [ + "EQ" + ], + "values": [], + "labelsSelected": [ + 1, + 2, + 3 + ], + "dependentValues": [] + }, + { + "field": "dayvolume", + "operators": [ + "GT" + ], + "values": [ + 15000 + ], + "labelsSelected": [], + "dependentValues": [] + } + ], + "topOperator": "AND" + }, + "rawCriteria": "{\"offset\":0,\"size\":5,\"sortField\":\"percentchange\",\"sortType\":\"DESC\",\"quoteType\":\"EQUITY\",\"query\":{\"operator\":\"AND\",\"operands\":[{\"operator\":\"GT\",\"operands\":[\"percentchange\",3.0]},{\"operator\":\"eq\",\"operands\":[\"region\",\"us\"]},{\"operator\":\"or\",\"operands\":[{\"operator\":\"BTWN\",\"operands\":[\"intradaymarketcap\",2000000000,10000000000]},{\"operator\":\"BTWN\",\"operands\":[\"intradaymarketcap\",10000000000,100000000000]},{\"operator\":\"GT\",\"operands\":[\"intradaymarketcap\",100000000000]}]},{\"operator\":\"gt\",\"operands\":[\"dayvolume\",15000]}]}}", + "start": 0, + "count": 5, + "total": 38, + "quotes": [ + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Delayed Quote", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -38.925724, + "regularMarketChange": 0.059, + "regularMarketTime": 1694022026, + "regularMarketPrice": 0.06, + "regularMarketDayHigh": 0.1, + "regularMarketDayRange": "0.06 - 0.1", + "regularMarketDayLow": 0.06, + "regularMarketVolume": 75675, + "regularMarketPreviousClose": 0.001, + "market": "us_market", + "messageBoardId": "finmb_39388687", + "fullExchangeName": "Other OTC", + "longName": "China Evergrande Group", + "financialCurrency": "CNY", + "regularMarketOpen": 0.07, + "averageDailyVolume3Month": 6011, + "averageDailyVolume10Day": 13298, + "fiftyTwoWeekLowChange": 0.0598, + "fiftyTwoWeekLowChangePercent": 299, + "fiftyTwoWeekRange": "2.0E-4 - 0.1899", + "fiftyTwoWeekHighChange": -0.1299, + "fiftyTwoWeekHighChangePercent": -0.68404424, + "fiftyTwoWeekChangePercent": -99.09091, + "dividendDate": 1467936000, + "currency": "USD", + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -0.02, + "sharesOutstanding": 13204299776, + "bookValue": -49.653, + "fiftyDayAverage": 0.00353, + "fiftyDayAverageChange": 0.05647, + "fiftyDayAverageChangePercent": 15.997167, + "twoHundredDayAverage": 0.0192125, + "twoHundredDayAverageChange": 0.0407875, + "twoHundredDayAverageChangePercent": 2.1229668, + "marketCap": 69454192640, + "priceToBook": -0.0012083862, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1273066200000, + "priceHint": 4, + "exchange": "PNK", + "fiftyTwoWeekLow": 0.0002, + "fiftyTwoWeekHigh": 0.1899, + "shortName": "CHINA EVERGRANDE GROUP", + "regularMarketChangePercent": 5900.0103, + "displayName": "China Evergrande", + "symbol": "EGRNF" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Delayed Quote", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -6.969699, + "lastClosePriceToNNWCPerShare": -0.010227259877067203, + "regularMarketChange": 0.030749992, + "regularMarketTime": 1694021728, + "regularMarketPrice": 0.16475, + "regularMarketDayHigh": 0.1761, + "regularMarketDayRange": "0.1534 - 0.1761", + "regularMarketDayLow": 0.1534, + "regularMarketVolume": 90550, + "regularMarketPreviousClose": 0.134, + "bid": 0, + "ask": 0, + "bidSize": 0, + "askSize": 0, + "market": "us_market", + "messageBoardId": "finmb_29328657", + "fullExchangeName": "Other OTC", + "longName": "Country Garden Holdings Company Limited", + "financialCurrency": "CNY", + "regularMarketOpen": 0.1625, + "averageDailyVolume3Month": 20080, + "averageDailyVolume10Day": 81900, + "fiftyTwoWeekLowChange": 0.06474999, + "fiftyTwoWeekLowChangePercent": 0.6474999, + "fiftyTwoWeekRange": "0.1 - 0.43", + "fiftyTwoWeekHighChange": -0.26525003, + "fiftyTwoWeekHighChangePercent": -0.6168605, + "fiftyTwoWeekChangePercent": -51.851852, + "currency": "USD", + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -0.03, + "sharesOutstanding": 27637000192, + "bookValue": 5.669, + "fiftyDayAverage": 0.1658, + "fiftyDayAverageChange": -0.0010500103, + "fiftyDayAverageChangePercent": -0.0063329935, + "twoHundredDayAverage": 0.26685, + "twoHundredDayAverageChange": -0.1021, + "twoHundredDayAverageChangePercent": -0.38261196, + "marketCap": 4553195520, + "priceToBook": 0.029061561, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1181136600000, + "priceHint": 4, + "exchange": "PNK", + "fiftyTwoWeekLow": 0.1, + "fiftyTwoWeekHigh": 0.43, + "shortName": "COUNTRY GARDEN HLDGS CO LTD", + "regularMarketChangePercent": 22.947754, + "displayName": "Country Garden Holdings Company", + "symbol": "CTRYF" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": true, + "customPriceAlertConfidence": "HIGH", + "lastCloseTevEbitLtm": 117.658623, + "lastClosePriceToNNWCPerShare": -459.0150770954308, + "regularMarketChange": 20.809998, + "regularMarketTime": 1694024227, + "regularMarketPrice": 116.1, + "regularMarketDayHigh": 124.3299, + "regularMarketDayRange": "112.13 - 124.3299", + "regularMarketDayLow": 112.13, + "regularMarketVolume": 1778309, + "regularMarketPreviousClose": 95.29, + "bid": 115.36, + "ask": 116.21, + "bidSize": 8, + "askSize": 8, + "market": "us_market", + "messageBoardId": "finmb_1674636", + "fullExchangeName": "NasdaqGS", + "longName": "AeroVironment, Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 113.16, + "averageDailyVolume3Month": 183358, + "averageDailyVolume10Day": 143500, + "fiftyTwoWeekLowChange": 41.189995, + "fiftyTwoWeekLowChangePercent": 0.54985976, + "fiftyTwoWeekRange": "74.91 - 124.3299", + "fiftyTwoWeekHighChange": -8.229904, + "fiftyTwoWeekHighChangePercent": -0.06619409, + "fiftyTwoWeekChangePercent": 7.465887, + "earningsTimestamp": 1693945800, + "currency": "USD", + "earningsTimestampStart": 1701723600, + "earningsTimestampEnd": 1702069200, + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -7.12, + "epsForward": 2.98, + "epsCurrentYear": 2.6, + "priceEpsCurrentYear": 44.653847, + "sharesOutstanding": 26292100, + "bookValue": 21.161, + "fiftyDayAverage": 96.0714, + "fiftyDayAverageChange": 20.028595, + "fiftyDayAverageChangePercent": 0.20847614, + "twoHundredDayAverage": 93.8046, + "twoHundredDayAverageChange": 22.295395, + "twoHundredDayAverageChangePercent": 0.23767911, + "marketCap": 3052512768, + "forwardPE": 38.959732, + "priceToBook": 5.4865084, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1169562600000, + "priceHint": 2, + "exchange": "NMS", + "fiftyTwoWeekLow": 74.91, + "fiftyTwoWeekHigh": 124.3299, + "shortName": "AeroVironment, Inc.", + "regularMarketChangePercent": 21.838594, + "averageAnalystRating": "1.9 - Buy", + "displayName": "AeroVironment", + "symbol": "AVAV" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Delayed Quote", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -6.969699, + "lastClosePriceToNNWCPerShare": -0.010751892814821473, + "regularMarketChange": 0.6400001, + "regularMarketTime": 1694023199, + "regularMarketPrice": 3.94, + "regularMarketDayHigh": 4.1, + "regularMarketDayRange": "3.8 - 4.1", + "regularMarketDayLow": 3.8, + "regularMarketVolume": 64565, + "regularMarketPreviousClose": 3.3, + "bid": 0, + "ask": 0, + "bidSize": 0, + "askSize": 0, + "market": "us_market", + "messageBoardId": "finmb_29328657", + "fullExchangeName": "Other OTC", + "longName": "Country Garden Holdings Company Limited", + "financialCurrency": "CNY", + "regularMarketOpen": 4.02, + "averageDailyVolume3Month": 11522, + "averageDailyVolume10Day": 50640, + "fiftyTwoWeekLowChange": 1.54, + "fiftyTwoWeekLowChangePercent": 0.64166665, + "fiftyTwoWeekRange": "2.4 - 11.0", + "fiftyTwoWeekHighChange": -7.06, + "fiftyTwoWeekHighChangePercent": -0.64181817, + "fiftyTwoWeekChangePercent": -52.034885, + "dividendDate": 1661472000, + "currency": "USD", + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -0.86, + "sharesOutstanding": 1105479936, + "bookValue": 141.725, + "fiftyDayAverage": 4.0494, + "fiftyDayAverageChange": -0.109399796, + "fiftyDayAverageChangePercent": -0.027016299, + "twoHundredDayAverage": 6.6446, + "twoHundredDayAverageChange": -2.7045999, + "twoHundredDayAverageChangePercent": -0.4070373, + "marketCap": 4355591168, + "priceToBook": 0.027800316, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1364995800000, + "priceHint": 4, + "exchange": "PNK", + "fiftyTwoWeekLow": 2.4, + "fiftyTwoWeekHigh": 11, + "shortName": "COUNTRY GARDEN HLDGS CO LTD UNS", + "regularMarketChangePercent": 19.393942, + "symbol": "CTRYY" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -10.073021, + "lastClosePriceToNNWCPerShare": -2.365476868583487, + "regularMarketChange": 4.880001, + "regularMarketTime": 1694024232, + "regularMarketPrice": 35.27, + "regularMarketDayHigh": 35.9199, + "regularMarketDayRange": "30.24 - 35.9199", + "regularMarketDayLow": 30.24, + "regularMarketVolume": 6644840, + "regularMarketPreviousClose": 30.39, + "bid": 34.42, + "ask": 34.49, + "bidSize": 8, + "askSize": 8, + "market": "us_market", + "messageBoardId": "finmb_8548197", + "fullExchangeName": "NYSE", + "longName": "Alteryx, Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 30.3, + "averageDailyVolume3Month": 1941287, + "averageDailyVolume10Day": 1392550, + "fiftyTwoWeekLowChange": 7.3500004, + "fiftyTwoWeekLowChangePercent": 0.26325217, + "fiftyTwoWeekRange": "27.92 - 70.63", + "fiftyTwoWeekHighChange": -35.359997, + "fiftyTwoWeekHighChangePercent": -0.5006371, + "fiftyTwoWeekChangePercent": -51.715923, + "earningsTimestamp": 1691442000, + "currency": "USD", + "earningsTimestampStart": 1698663540, + "earningsTimestampEnd": 1699012800, + "trailingAnnualDividendRate": 0, + "trailingAnnualDividendYield": 0, + "marketState": "REGULAR", + "epsTrailingTwelveMonths": -4.53, + "epsForward": 1.11, + "epsCurrentYear": 0.66, + "priceEpsCurrentYear": 53.439392, + "sharesOutstanding": 63165400, + "bookValue": 0.732, + "fiftyDayAverage": 36.6076, + "fiftyDayAverageChange": -1.3376007, + "fiftyDayAverageChangePercent": -0.03653888, + "twoHundredDayAverage": 46.90595, + "twoHundredDayAverageChange": -11.635948, + "twoHundredDayAverageChangePercent": -0.24806978, + "marketCap": 2505997056, + "forwardPE": 31.774775, + "priceToBook": 48.18306, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "firstTradeDateMilliseconds": 1490362200000, + "priceHint": 2, + "exchange": "NYQ", + "fiftyTwoWeekLow": 27.92, + "fiftyTwoWeekHigh": 70.63, + "shortName": "Alteryx, Inc.", + "regularMarketChangePercent": 16.057919, + "averageAnalystRating": "2.3 - Buy", + "displayName": "Alteryx", + "symbol": "AYX" + } + ], + "useRecords": false, + "predefinedScr": true, + "versionId": 9, + "creationDate": 1473796102800, + "lastUpdated": 1660940390625, + "isPremium": false, + "iconUrl": "https://s.yimg.com/cv/apiv2/fin/img/assets/predefined_screeners/trendingUp.png" + } + ], + "error": null + } + } + } + } \ No newline at end of file From 494fa5c763b9663d3028bcef9d17e24bd0227b52 Mon Sep 17 00:00:00 2001 From: Jayzen <1714252+z3nful@users.noreply.github.com> Date: Wed, 6 Sep 2023 20:27:54 -0700 Subject: [PATCH 7/8] use YF_QUERY_HOST --- src/modules/dailyGainers.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/dailyGainers.ts b/src/modules/dailyGainers.ts index 00765901..60d17f43 100644 --- a/src/modules/dailyGainers.ts +++ b/src/modules/dailyGainers.ts @@ -165,7 +165,7 @@ export default function dailyGainers( return this._moduleExec({ moduleName: "dailyGainers", query: { - url: "https://query2.finance.yahoo.com/v1/finance/screener/predefined/saved", + url: "https://${YF_QUERY_HOST}/v1/finance/screener/predefined/saved", schemaKey: "#/definitions/DailyGainersOptions", defaults: queryOptionsDefaults, overrides: queryOptionsOverrides, From 90d051e69c3e3662056bd96eeb511b25185c50f6 Mon Sep 17 00:00:00 2001 From: Jayzen <1714252+z3nful@users.noreply.github.com> Date: Wed, 6 Sep 2023 21:17:32 -0700 Subject: [PATCH 8/8] fixed optionals --- schema.json | 4 ---- src/modules/dailyGainers.ts | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/schema.json b/schema.json index 8e75e551..d536555c 100644 --- a/schema.json +++ b/schema.json @@ -1131,7 +1131,6 @@ "messageBoardId", "fullExchangeName", "longName", - "financialCurrency", "regularMarketOpen", "averageDailyVolume3Month", "averageDailyVolume10Day", @@ -1144,9 +1143,7 @@ "trailingAnnualDividendRate", "trailingAnnualDividendYield", "marketState", - "epsTrailingTwelveMonths", "sharesOutstanding", - "bookValue", "fiftyDayAverage", "fiftyDayAverageChange", "fiftyDayAverageChangePercent", @@ -1154,7 +1151,6 @@ "twoHundredDayAverageChange", "twoHundredDayAverageChangePercent", "marketCap", - "priceToBook", "sourceInterval", "exchangeDataDelayedBy", "exchangeTimezoneName", diff --git a/src/modules/dailyGainers.ts b/src/modules/dailyGainers.ts index 60d17f43..882e69c0 100644 --- a/src/modules/dailyGainers.ts +++ b/src/modules/dailyGainers.ts @@ -76,7 +76,7 @@ export interface DailyGainersQuote { messageBoardId: string; fullExchangeName: string; longName: string; - financialCurrency: string; + financialCurrency?: string; regularMarketOpen: number; averageDailyVolume3Month: number; averageDailyVolume10Day: number; @@ -92,12 +92,12 @@ export interface DailyGainersQuote { trailingAnnualDividendRate: number; trailingAnnualDividendYield: number; marketState: string; - epsTrailingTwelveMonths: number; + epsTrailingTwelveMonths?: number; epsForward?: number; epsCurrentYear?: number; priceEpsCurrentYear?: number; sharesOutstanding: number; - bookValue: number; + bookValue?: number; fiftyDayAverage: number; fiftyDayAverageChange: number; fiftyDayAverageChangePercent: number; @@ -106,7 +106,7 @@ export interface DailyGainersQuote { twoHundredDayAverageChangePercent: number; marketCap: number; forwardPE?: number; - priceToBook: number; + priceToBook?: number; sourceInterval: number; exchangeDataDelayedBy: number; exchangeTimezoneName: string;