如何将正确的股票名称插入列表
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 带有日内数据和各自代码名称的代码列表。
希望我已经清楚地解释了我的问题。很抱歉,我不能分享整个日志,他们会使问题太大。
您始终可以只循环遍历结果以重新组织数据。
如果我没理解错的话,你的代码在列表的索引 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
得到这个之后,如果你需要的话,你只需要重新组织你的列表,虽然你的数据在那里,所以我需要更多的信息来理解。
我正在尝试创建一个股票筛选器,但我不知道我在做什么,所以请原谅我的无知。我会尽力解释我的计划,如果我的想法完全不对请告诉我!
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 带有日内数据和各自代码名称的代码列表。
希望我已经清楚地解释了我的问题。很抱歉,我不能分享整个日志,他们会使问题太大。
您始终可以只循环遍历结果以重新组织数据。
如果我没理解错的话,你的代码在列表的索引 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
得到这个之后,如果你需要的话,你只需要重新组织你的列表,虽然你的数据在那里,所以我需要更多的信息来理解。