hqchartPy2数据对接教程3-FINANCE数据
FINANCE接口函数
# FINANCE() 财务数据 数组
def GetFinance(self, symbol, id, period,right,kcount,jobID)
参数说明
symol
股票代码
id
对应 FINANCE(id)
period
周期
0=日线 1=周线 2=月线 3=年线 4=1分钟 5=5分钟 6=15分钟 7=30分钟 8=60分钟 9=季线 10=分笔
right
复权
0=不复权 1=前复权 2=后复权
kcount
k线个数
jobID
任务id
返回数据格式
返回一个字典类型的数据
单数值类型
如:
FINANCE(15) 流动负债,上市公司最近一期财报数据
FINANCE(17) 资本公积金,上市公司最近一期财报数据
都是返回最新一期财报数据
格式
{'type‘:0, data:数据 }
时间序列数据
如:
FINANCE(1) 总股本(随时间可能有变化)
FINANCE(7) 流通股本(随时间可能有变化)
是一个时间序列数据, 降序排序
格式
{‘type’:2, data:数据数组 , date:日期数组(数值型)}
tushare数据对接例子
数据使用tushare的数据对接
- 每日指标 daily_basic, 接口文档见https://waditu.com/document/2?doc_id=32
- 财务指标数据 fina_indicator。 接口文档见https://waditu.com/document/2?doc_id=79
- 资产负债表 balancesheet。 接口文档见https://waditu.com/document/2?doc_id=36
对接数据代码
class TushareHQChartData(IHQData) :
..........................
# FINANCE() 财务数据 数组
def GetFinance(self, symbol, id, period,right,kcount,jobID) :
if (id==1) : # FINANCE(1) 总股本(随时间可能有变化)
return self.GetDailyBasicData(symbol,"total_share")
elif (id==7) :# FINANCE(7) 流通股本(随时间可能有变化)
return self.GetDailyBasicData(symbol,"float_share")
elif (id==9) : # FINANCE(9) 资产负债率 即:(总资产-净资产-少数股东权益)/总资产*100,上市公司最近一期财报数据
return self.GetFinaIndicatorLatest(symbol,"debt_to_assets")
elif (id==15) : # FINANCE(15) 流动负债,上市公司最近一期财报数据
return self.GetBalanceSheetLatest(symbol,"total_cur_liab")
elif (id==17) : # FINANCE(17) 资本公积金,上市公司最近一期财报数据
return self.GetBalanceSheetLatest(symbol,"capital_rese_ps")
elif (id==18) : # FINANCE(18) 每股公积金,上市公司最近一期财报数据
return self.GetBalanceSheetLatest(symbol, "surplus_rese_ps")
elif (id==40) : # FINANCE(40) 流通市值
return self.GetDailyBasicDataLatest(symbol,"circ_mv")
elif (id==43) : # FINANCE(43) 净利润同比增长率,上市公司最近一期财报数据
return self.GetFinaIndicatorLatest(symbol,"q_profit_yoy")
elif (id==44) : # FINANCE(44) 收入同比增长率,上市公司最近一期财报数据
return self.GetFinaIndicatorLatest(symbol,"q_sales_yoy")
# https://waditu.com/document/2?doc_id=32
def GetDailyBasicData(self, symbol,fieldname) :
df=self.TusharePro.daily_basic(ts_code=symbol,start_date=str(self.StartDate), end_date=str(self.EndDate), fields='trade_date,{0}'.format(fieldname))
df=df.sort_index(ascending=False) # 数据要降序排
print(df)
aryDate=df["trade_date"]
aryDate[aryDate == ''] = 0
aryDate = aryDate.astype(np.int).tolist()
if (fieldname in ("total_share","float_share" )) :
aryShare=np.multiply(df[fieldname],10000).tolist()
else :
aryShare=df[fieldname].tolist()
result={"type": 2} # 类型2 根据'date'自动合并到K线数据上
result["data"]=aryShare
result["date"]=aryDate
return result
# https://waditu.com/document/2?doc_id=32
def GetDailyBasicDataLatest(self, symbol,fieldname):
df=self.TusharePro.daily_basic(ts_code=symbol, trade_date=str(self.EndDate), fields='trade_date,{0}'.format(fieldname))
print(df)
result={"type": 0} # 类型0 单值数据
if (fieldname=='circ_mv') : # 流通市值 万元
result["data"]=df[fieldname]*10000
else :
result["data"]=df[fieldname]
return result
# https://waditu.com/document/2?doc_id=79
def GetFinaIndicatorLatest(self,symbol,fieldname):
df = self.TusharePro.fina_indicator(ts_code=symbol)
print(df)
result={"type": 0} # 类型0 单值数据
if (len(df[fieldname])>0) :
result["data"]=df[fieldname][0] # 取最新一期的数据
else :
result["data"]=0
return result
# https://waditu.com/document/2?doc_id=36
def GetBalanceSheetLatest(self,symbol,fieldname):
df = self.TusharePro.balancesheet(ts_code=symbol, fields="end_date,{0}".format(fieldname))
print(df)
result={"type": 0} # 类型0 单值数据
if (len(df[fieldname])>0) :
value=df[fieldname][0]
if (np.isnan(value)) :
result["data"]=0
else :
result["data"]=df[fieldname][0] # 取最新一期的数据
else :
result["data"]=0
return result
交流QQ群
如果有什么问题或需求可以加交流QQ群: 950092318** 联系群主(QQ48274798)
hqchartPy动态库地址
https://github.com/jones2000/HQChart/tree/master/C++指标计算引擎/py版本
HQChart代码地址
地址:https://github.com/jones2000/HQChart