转载:https://www.joinquant.com/community/post/detailMobile?postId=15276&page=&limit=20&replyId=&tag=
作为基本面投资者,企业的估值指标(pe、pb、ps)及财务数据非常重要,而如何快速导出特定时间段的这些数据?
下面的代码不仅可以快速导出JQ所有的估值指标及最新财务数据(需要哪些指标可以直接在代码中添加),而且还有股票筛选功能,代码简单,功能灵活。
from jqdatasdk import *
import sqlalchemy
import pandas as pd
from datetime import datetime, timedelta # 导入datetime模块
auth('name','password') #输入用户名密码
"""
该代码可以设定指定区间、指定股票(可以筛选或者列出具体代码)、指定估值指标及财务数据,将所有数据生成一个csv文件。
财务数据为该日期时公布最新财报数据
"""
#############
#用户输入
startDate=datetime.strptime("2018-01-01", "%Y-%m-%d") #输入初始日
endDate=datetime.strptime("2018-02-01", "%Y-%m-%d") #输入到期日
stockList=['000001.XSHE','000002.XSHE','000006.XSHE'] #输入股票代码
savePath="C:/JQresult.csv" #输入结果保存路径
##############
calDay=startDate
dataList=[]
while(calDay<=endDate):
calDayFormat=calDay.strftime('%Y-%m-%d') #将日期转成字符串
df = get_fundamentals(query(
#下一行为估值指标,包括代码、市值、pe、pb、ps、pcf,可自由添加其它指标
valuation.code, valuation.market_cap, valuation.pe_ratio, valuation.pb_ratio,valuation.ps_ratio,valuation.pcf_ratio,\
#下一行为资产负债表,包括报表发布日期、报表期最后一天、总资产、可自由添加其它指标
balance.pubDate,balance.statDate,balance.total_assets,\
#下一行为利润表,包括报营业总收入、净利润、可自由添加其它指标
income.total_operating_revenue,income.net_profit
#可自由添加其它表和指标……
).filter(
valuation.code.in_(stockList), #指定股票为stockList的股票,如果这个代码删掉,则为全部股票
#可在下面加入各种筛选标准,如筛选出pe<10、Pb<3的股票
# valuation.pe_ratio < 10,
# valuation.pb_ratio<3
).order_by(
# 按市值降序排列
valuation.market_cap.desc()
).limit(
# 最多返回个数,最大不超过10000行
10000
), date=calDayFormat)
df["date"]=calDayFormat
calDay=calDay+timedelta(days=1)
dataList.append(df)
finalDf=pd.concat(dataList)
finalDf.to_csv(savePath)