This commit is contained in:
2026-05-01 11:03:19 +08:00
parent b6a199887e
commit aa8a1190f0
24 changed files with 2552 additions and 0 deletions

254
tushare/fina.go Normal file
View File

@@ -0,0 +1,254 @@
package tushare
/*
Income 获取利润表
ts_code: 股票代码,支持多个,逗号分隔
ann_date: 公告日期,格式:YYYYMMDD
start_date: 开始日期,格式:YYYYMMDD
end_date: 结束日期,格式:YYYYMMDD
report_type: 报表类型1:合并报表2:母公司报表
*/
func (cli *TushareClient) Income(ts_code, ann_date, start_date, end_date, report_type string) (*TushareRespData, error) {
params := map[string]any{}
if ts_code != "" {
params["ts_code"] = ts_code
}
if ann_date != "" {
params["ann_date"] = ann_date
}
if start_date != "" {
params["start_date"] = start_date
}
if end_date != "" {
params["end_date"] = end_date
}
if report_type != "" {
params["report_type"] = report_type
}
req := TushareReq{
APIName: "income",
Params: params,
}
fields := []map[string]string{
{"ts_code": "股票代码"},
{"ann_date": "公告日期"},
{"f_ann_date": "实际公告日期"},
{"end_date": "报告期"},
{"basic_eps": "基本每股收益"},
{"diluted_eps": "稀释每股收益"},
{"total_revenue": "营业总收入"},
{"revenue": "营业收入"},
{"total_profit": "利润总额"},
{"net_profit": "净利润"},
{"net_profit_attr_sh": "归属于母公司所有者的净利润"},
{"operating_expense": "营业总成本"},
{"operating_cost": "营业成本"},
}
return cli.Do(req, fields)
}
/*
Balancesheet 获取资产负债表
ts_code: 股票代码,支持多个,逗号分隔
ann_date: 公告日期,格式:YYYYMMDD
start_date: 开始日期,格式:YYYYMMDD
end_date: 结束日期,格式:YYYYMMDD
report_type: 报表类型1:合并报表2:母公司报表
*/
func (cli *TushareClient) Balancesheet(ts_code, ann_date, start_date, end_date, report_type string) (*TushareRespData, error) {
params := map[string]any{}
if ts_code != "" {
params["ts_code"] = ts_code
}
if ann_date != "" {
params["ann_date"] = ann_date
}
if start_date != "" {
params["start_date"] = start_date
}
if end_date != "" {
params["end_date"] = end_date
}
if report_type != "" {
params["report_type"] = report_type
}
req := TushareReq{
APIName: "balancesheet",
Params: params,
}
fields := []map[string]string{
{"ts_code": "股票代码"},
{"ann_date": "公告日期"},
{"f_ann_date": "实际公告日期"},
{"end_date": "报告期"},
{"total_assets": "资产总计"},
{"total_liab": "负债合计"},
{"total_hldr_eqy_exc_min_int": "股东权益合计"},
{"total_hldr_eqy_inc_min_int": "股东权益合计 (含少数股东权益)"},
{"total_share_capital": "股本"},
{"cap_rsrv": "资本公积"},
{"surplus_rsrv": "盈余公积"},
{"undist_prft": "未分配利润"},
{"monetary_cap": "货币资金"},
{"total_current_assets": "流动资产合计"},
{"total_non_current_assets": "非流动资产合计"},
}
return cli.Do(req, fields)
}
/*
Cashflow 获取现金流量表
ts_code: 股票代码,支持多个,逗号分隔
ann_date: 公告日期,格式:YYYYMMDD
start_date: 开始日期,格式:YYYYMMDD
end_date: 结束日期,格式:YYYYMMDD
report_type: 报表类型1:合并报表2:母公司报表
*/
func (cli *TushareClient) Cashflow(ts_code, ann_date, start_date, end_date, report_type string) (*TushareRespData, error) {
params := map[string]any{}
if ts_code != "" {
params["ts_code"] = ts_code
}
if ann_date != "" {
params["ann_date"] = ann_date
}
if start_date != "" {
params["start_date"] = start_date
}
if end_date != "" {
params["end_date"] = end_date
}
if report_type != "" {
params["report_type"] = report_type
}
req := TushareReq{
APIName: "cashflow",
Params: params,
}
fields := []map[string]string{
{"ts_code": "股票代码"},
{"ann_date": "公告日期"},
{"f_ann_date": "实际公告日期"},
{"end_date": "报告期"},
{"net_cash_invest_act": "投资活动产生的现金流量净额"},
{"net_cash_financing_act": "筹资活动产生的现金流量净额"},
{"net_cash_oper_act": "经营活动产生的现金流量净额"},
{"cash_equivalents_end": "现金及现金等价物期末余额"},
{"cash_equivalents_begin": "现金及现金等价物期初余额"},
{"net_increase_cash": "现金及现金等价物净增加额"},
}
return cli.Do(req, fields)
}
/*
FinaIndicator 获取财务指标
ts_code: 股票代码,支持多个,逗号分隔
ann_date: 公告日期,格式:YYYYMMDD
start_date: 开始日期,格式:YYYYMMDD
end_date: 结束日期,格式:YYYYMMDD
*/
func (cli *TushareClient) FinaIndicator(ts_code, ann_date, start_date, end_date string) (*TushareRespData, error) {
params := map[string]any{}
if ts_code != "" {
params["ts_code"] = ts_code
}
if ann_date != "" {
params["ann_date"] = ann_date
}
if start_date != "" {
params["start_date"] = start_date
}
if end_date != "" {
params["end_date"] = end_date
}
req := TushareReq{
APIName: "fina_indicator",
Params: params,
}
fields := []map[string]string{
{"ts_code": "股票代码"},
{"ann_date": "公告日期"},
{"end_date": "报告期"},
{"eps_basic": "基本每股收益"},
{"eps_diluted": "稀释每股收益"},
{"roe": "净资产收益率%"},
{"roe_wa": "净资产收益率 (加权)%"},
{"roa": "总资产净利率%"},
{"gross_margin": "销售毛利率%"},
{"net_profit_margin": "销售净利率%"},
{"current_ratio": "流动比率"},
{"quick_ratio": "速动比率"},
{"debt_to_assets": "资产负债率%"},
{"turnover_days": "存货周转天数"},
{"receivables_turnover": "应收账款周转率"},
}
return cli.Do(req, fields)
}
/*
Forecast 获取业绩预告
ts_code: 股票代码,支持多个,逗号分隔
ann_date: 公告日期,格式:YYYYMMDD
start_date: 开始日期,格式:YYYYMMDD
end_date: 结束日期,格式:YYYYMMDD
type: 预告类型,预增/预减/扭亏/续盈/首亏/略增/略减
*/
func (cli *TushareClient) Forecast(ts_code, ann_date, start_date, end_date, forecast_type string) (*TushareRespData, error) {
params := map[string]any{}
if ts_code != "" {
params["ts_code"] = ts_code
}
if ann_date != "" {
params["ann_date"] = ann_date
}
if start_date != "" {
params["start_date"] = start_date
}
if end_date != "" {
params["end_date"] = end_date
}
if forecast_type != "" {
params["type"] = forecast_type
}
req := TushareReq{
APIName: "forecast",
Params: params,
}
fields := []map[string]string{
{"ts_code": "股票代码"},
{"ann_date": "公告日期"},
{"end_date": "报告期"},
{"type": "预告类型"},
{"net_profit_min": "净利润下限 (万元)"},
{"net_profit_max": "净利润上限 (万元)"},
{"parent_netprofit_min": "归母净利润下限 (万元)"},
{"parent_netprofit_max": "归母净利润上限 (万元)"},
{"summary": "业绩预告摘要"},
}
return cli.Do(req, fields)
}