如何将正确的股票名称插入列表

How to insert the correct stock name into a list

我正在尝试创建一个股票筛选器,但我不知道我在做什么,所以请原谅我的无知。我会尽力解释我的计划,如果我的想法完全不对请告诉我!

import requests #The requests library for HTTP requests in Python
import csv
import pandas as pd
from secrets import IEX_CLOUD_API_TOKEN_TEST
from secrets import IEX_CLOUD_API_TOKEN_LIVE

首先,我得到了我要筛选的符号列表:

   api_url = f'https://cloud.iexapis.com/stable/ref-data/iex/symbols?format=csv&token={IEX_CLOUD_API_TOKEN_LIVE}'
    tickers = []
    with requests.Session() as s:
        download = s.get(api_url)
    
        decoded_content = download.content.decode('utf-8')
    
        cr = csv.reader(decoded_content.splitlines(), delimiter=',')
        my_list = list(cr)
        for row in my_list:
            tickers.append(row[0])
    
    print(tickers)

这给了我:

['symbol', 'A', 'AA', 'AAA', 'AAAU', 'AAC', 'AAC+', 'AAC=', 'AACG', 'AACI', 'AACIU', 'AACIW', 'AADI', 'AADR', 'AAIC', 'AAIC-B', 'AAIC-C', 'AAIN', 'AAL', ...]

然后我循环浏览代码并使用 Alpha Vantage API 到 return 每日 1m 数据:

stocksIntraDay = []

def getIntraday():
    for ticker in tickers[2]:
        print(ticker)
        date = 'year1month1'
        apiKey = '5MACTR59FOK093UR'

        CSV_URL = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol={ticker}&outputsize=full&interval=1min&slice={date}&apikey={apiKey}'

        with requests.Session() as s:
            download = s.get(CSV_URL)
            decoded_content = download.content.decode('utf-8')
            cr = csv.reader(decoded_content.splitlines(), delimiter=',')
            my_list = list(cr)
            for row in my_list:
                row.append(ticker)
                print(row)

getIntraday()

哪个(作为例子)给我:

['time', 'open', 'high', 'low', 'close', 'volume', 'A']
['2022-01-18 16:07:00', '141.32', '141.32', '141.32', '141.32', '100', 'A']
['2022-01-03 15:03:00', '63.385', '63.3864', '63.3507', '63.365', '52168', 'C']

从这里我试图做这样的事情:

[ticker] ['time', 'open', 'high', 'low', 'close', 'volume']
[A]['2022-01-18 16:07:00', '141.32', '141.32', '141.32', '141.32', '100']
...
[AA]['2022-01-18 15:03:00', '63.385', '63.3864', '63.3507', '63.365', '52168']
...
[AAA]['2022-01-18 15:03:00', '63.385', '63.3864', '63.3507', '63.365', '52168']
...
[AAAU]['2022-01-18 15:03:00', '63.385', '63.3864', '63.3507', '63.365', '52168']

即 return 带有日内数据和各自代码名称的代码列表。

希望我已经清楚地解释了我的问题。很抱歉,我不能分享整个日志,他们会使问题太大。

Alpha 文档: https://www.alphavantage.co/documentation/

您始终可以只循环遍历结果以重新组织数据。

如果我没理解错的话,你的代码在列表的索引 6 中。您的结果是列表列表。现在,您需要向 getIntraday() 函数添加一个 return,像这样...

def getIntraday():
    for ticker in tickers[2]:
        print(ticker)
        date = 'year1month1'
        apiKey = '5MACTR59FOK093UR'

        CSV_URL = f'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY_EXTENDED&symbol={ticker}&outputsize=full&interval=1min&slice={date}&apikey={apiKey}'

        with requests.Session() as s:
            download = s.get(CSV_URL)
            decoded_content = download.content.decode('utf-8')
            cr = csv.reader(decoded_content.splitlines(), delimiter=',')
            my_list = list(cr)
            for row in len(my_list):
                my_list[row].append(ticker)
                print(row)
    return my_list

得到这个之后,如果你需要的话,你只需要重新组织你的列表,虽然你的数据在那里,所以我需要更多的信息来理解。