ok
This commit is contained in:
254
tushare/fina.go
Normal file
254
tushare/fina.go
Normal 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)
|
||||
}
|
||||
Reference in New Issue
Block a user