Browse Source

Fix missing close price in historical market data of Yahoo Finance service

pull/7694/head
Thomas Kaul 1 week ago
parent
commit
8ecc2bd654
  1. 23
      apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

23
apps/api/src/services/data-provider/yahoo-finance/yahoo-finance.service.ts

@ -143,8 +143,7 @@ export class YahooFinanceService implements DataProviderInterface {
[date: string]: DataProviderHistoricalResponse; [date: string]: DataProviderHistoricalResponse;
}> { }> {
try { try {
const historicalResult = this.convertToHistoricalResult( const chartResult = await this.yahooFinance.chart(
await this.yahooFinance.chart(
this.yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol( this.yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(
symbol symbol
), ),
@ -156,17 +155,27 @@ export class YahooFinanceService implements DataProviderInterface {
DATE_FORMAT DATE_FORMAT
) )
} }
)
); );
const historicalResult = this.convertToHistoricalResult(chartResult);
const response: { const response: {
[date: string]: DataProviderHistoricalResponse; [date: string]: DataProviderHistoricalResponse;
} = {}; } = {};
for (const historicalItem of historicalResult) { for (const { close, date } of historicalResult) {
response[format(historicalItem.date, DATE_FORMAT)] = { // The chart endpoint can omit the close price of a historical item, for
marketPrice: historicalItem.close // example if the daily data of an exchange has not been consolidated yet.
}; // In this case, the market price of the corresponding quote is taken.
const marketPrice =
close ??
(isSameDay(date, chartResult.meta.regularMarketTime)
? chartResult.meta.regularMarketPrice
: undefined);
if (marketPrice) {
response[format(date, DATE_FORMAT)] = { marketPrice };
}
} }
return response; return response;

Loading…
Cancel
Save