我正在尝试从 Marioriostoev 的 Finviz api 获取股票,但出现解析错误。看起来它没有找到正确的领域。这个程序曾经运行得很完美。但现在却不是了。我不知道它发生在哪个模块中,该程序应该采用过滤器获取与过滤器匹配的 stkcs,将它们放入 Excel 文件中并将其图表图像放入文件夹中
#!/usr/bin/python3
!pip install finviz~=1.4.6
from finviz.screener import Screener
from finviz.screener import Screener
import os
import datetime
Current_Date = datetime.datetime.today().strftime ('%d-%b-%Y')
# Input
valperiod = input('Enter Type of Graphic d,w,m: ')
if valperiod == "w" or "m":
valta ="0"
else:
valta = "1"
# Create the Folder where the data ancharts are going to be stores
newpath = 'D:\\Users\\Jose Mizrahi\\Documents\\finviz-master\\finviz-master\\'+'Breakout1 '+str(Current_Date)+'\\'
if not os.path.exists(newpath):
os.makedirs(newpath)
# Get dict of available filters
# filters dict contains the corresponding filter tags
filters = Screener.load_filter_dict()
filters = [
"cap_small",
"fa_sales5years_pos",
"sh_curvol_o200",
"sh_relvol_o1",
"ta_highlow52w_b0to10h",
"ty=c&p=w&tas=0",
"ta_volatility_mo3&ft=4&o=ticker"
]
stock_list = Screener(filters=filters, table="Performance")
print(stock_list)
# Monthly, Candles, Large, No Technical Analysis
if valperiod == "d":
stock_list.get_charts(period="d", chart_type='c', size='l', ta="1")
else:
stock_list.get_charts(period=valperiod, chart_type='c', size='l', ta="0")
# period='d' > daily
# period='w' > weekly
# period='m' > monthly
# chart_type='c' > candle
# chart_type='l' > lines
# size='m' > small
# size='l' > large
# ta='1' > display technical analysis
# ta='0' > ignore technical analysis
print("Retrieving stock data...")
stock_data = stock_list.get_ticker_details()
print(stock_data)
os.chdir(newpath)
# Export the screener results to CSV file
stock_list.to_csv("JosyBreakout1.csv")
# Create a SQLite database
# stock_list.to_sqlite("sp500.sqlite")
股票列表不会偶然包含 NONE 或 NULL 吗?我确实发现,如果你尝试查找具有这些名称的股票,一些 API 会让人大吃一惊。我认为没有一次出现在我的一个表中,如果我现在通过 API 查找它,它会给出“未找到该请求的安全定义”,但在过去它实际上关闭了 API 连接,而 IB 本身股票从显示屏上消失,IB 与其服务器之间的连接也关闭了。
如果你让它打印“检索股票数据...”然后出错,则说明 get_ticker_details 的线路有问题。如果在此之前出错,我想获取数据来绘制图表就会出现问题。
我会注意到Python中的NoneType在转换为字符串时是“None”。如果返回 stock_list 的行得到一个空的股票列表,也许是返回 NoneType 而不是空列表?然后当你去图表时它会崩溃。我会首先查看您的过滤器,看看它们是否太严格,或者如果您在假期或周末运行它,可能只是一个空结果,否则它会运行良好。
我自己不是 finviz 的用户,但是当然,API 中的某些内容总是有可能发生更改,您必须稍微更改这些过滤器(或者只是在“pip install finviz”行上使用更新版本) .)