es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se muestra los datos en el gráfico de Trading view utilizando la API de Alpha Vantage?

fetch('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=demo')
.then(res => res.json())
.then(data => {
const cdata = Object.entries(data["Time Series (Daily)"]).map(([time, values]) => {
  return {
    time: time,
    open: parseFloat(values["1. open"]),
    high: parseFloat(values["2. high"]),
    low: parseFloat(values["3. low"]),
    close: parseFloat(values["4. close"])
  };
});
candleSeries.setData(cdata);
})
.catch(err => console.log(err))

Esta es mi API DATA

Cuando ejecuto este código, aparece un error que indica que “data.map” no es una función.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El error “data.map no es una función” significa que el objeto “data” no es un array y por lo tanto no se puede mapear. En este caso, es probable que el objeto “data” sea un objeto con propiedades anidadas.

    Para resolver este error y mapear sobre los datos, necesitas acceder a la propiedad anidada específica que contiene el array de datos sobre el que quieres mapear. Por ejemplo, si el objeto “data” contiene una propiedad “timeSeries” que contiene un array de objetos con propiedades “open”, “high”, “low”, “close” y “time”, necesitarías actualizar el código a algo como esto:

    fetch('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=IBM&apikey=demo')
      .then(res => res.json())
      .then(data => {
        const cdata = Object.entries(data['Time Series (Daily)']).map(d => ({
          time: d[0],
          open: parseFloat(d[1]['1. open']),
          high: parseFloat(d[1]['2. high']),
          low: parseFloat(d[1]['3. low']),
          close: parseFloat(d[1]['4. close'])
        }));
        candleSeries.setData(cdata);
      })
      .catch(err => console.log(err));
    

    Este código asume que el objeto “data” contiene una propiedad “Time Series (Daily)” que contiene un objeto con datos diarios para el símbolo de la acción “IBM”. El código utiliza el método Object.entries() para convertir el objeto en un array sobre el cual se puede mapear, y luego mapea el array para crear un nuevo array con objetos que contienen las propiedades “open”, “high”, “low”, “close” y “time”. El método “parseFloat()” convierte los valores de cadena de los datos de precios a números. Finalmente, se llama al método “candleSeries.setData()” con el nuevo array de datos.

Comments are closed.