go语言http调用Tushare财经数据包

Tushare金融数据接口:Python量化投资的数据获取与实战指南 金融数据分析与量化投资的核心基础在于高效、可靠的数据获取。传统方式中,手动采集或商业数据库往往面临效率低下、成本高昂或法律风险等问题。通过API(应用程序编程接口)技术,可以实现对多源异构金融数据的标准化集成与自动化调用,从而将数据获取过程抽象为简单的函数操作。这一技术方案的价值在于,它让开发者能够将精力集中于核心的策略研究与模型构建,而非繁琐的数据清洗与维护工作。在Python生态中,Pandas DataFrame已成为金融数据分析的事实标准数据结构,能够无缝衔接数据获取、处理与可视化流程。Tushar 阅读详情

go语言http调用Tushare财经数据包

Tushare平台介绍

  1. Tushare平台网址 https://tushare.pro/document/1,网址上就有下载安装以及数据获取的方式。Tushare Pro提供了包括股票、指数、基金、期货、数字货币在内的各类资产交易行情的分钟数据。
  2. 免费获取,数据准确,适合量化投资分析师(Quant),对金融市场进行大数据分析的企业和个人,开发以证券为基础的金融类产品和解决方案的公司,正在学习利用python进行数据分析的人使用。
  3. 有以下几种获取方式,今天介绍的是通过http来获取数据。

在这里插入图片描述
4. 为了避免部分用户低门槛无限制的恶意调取数据,更好地保证大多数用户调取数据的稳定性,同时也为了Tushare社区的可持续发展,Pro接口开始引入积分制度。只有具备一定积分级别的用户才能调取相应的API,目前只是一个分级门槛,并不消耗积分。以下只是基础积分权限,积分越多频次越高,除分钟数据外5000以上正常调取数据无频次限制。https://waditu.com/document/1?doc_id=108

使用go + http方式调用Tushare数据

// 具体http网站查看https://tushare.pro/document/1?doc_id=130
const endpoint string = "http://api.waditu.com"
const timeLayout string = "20060102"
    
type KLine struct {
	TsCode    string  `json:"ts_code" structs:"1"`
	TradeDate int64   `json:"trade_date" structs:"2"`
	Close     float64 `json:"close" structs:"3"`
	Open      float64 `json:"open" structs:"4"`
	High      float64 `json:"high" structs:"5"`
	Low       float64 `json:"low" structs:"6"`
	PreClose  float64 `json:"pre_close" structs:"7"`
	LowLimit  float64 `json:"low_limit" structs:"8"`
	HighLimit float64 `json:"high_limit" structs:"9"`
	Volume    float64 `json:"volume" structs:"10"`
	Amount    float64 `json:"amount" structs:"11"`
	Factor    float64 `json:"factor" structs:"12"`
}

type Response struct {
	Code int          `json:"code"`
	Msg  string       `json:"msg"`
	Data ResponseData `json:"data"`
}
// ResponseData stands for the field "data" in the body.
type ResponseData struct {
	Fields []string        `json:"fields"`
	Items  [][]interface{} `json:"items"`
}


type Client struct {
	// token is the token given by tushare
	token string
}

// NewClient creates a new instance of Client
func NewClient(token string) *Client {
	return &Client{token: token}
}

// makeBody makes a request body to tushare by apiName, fields and params.
func (c *Client) makeBody(apiName, fields string,
	params map[string]interface{}) (io.Reader, error) {
	m := map[string]interface{}{
		"api_name": apiName,
		"token":    c.token,
		"fields":   fields,
	}
	if params == nil {
		m["params"] = ""
	} else {
		m["params"] = params
	}
	b, err := json.Marshal(m)
	if err != nil {
		return nil, err
	}
	return bytes.NewBuffer(b), nil
}

// request makes a http request to tushare
func (c *Client) request(body io.Reader) (*Response, error) {
	// do the request
	resp, err := http.Post(endpoint, "application/json", body)
	for err != nil {
		resp, err = http.Post(endpoint, "application/json", body)
	}
	// read the data from the body
	// if the data is abnormal, error will be returned
	defer resp.Body.Close()
	b, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	var res Response
	err = json.Unmarshal(b, &res)
	if err != nil {
		return nil, err
	}
	if res.Code != 0 {
		return nil, errors.New(res.Msg)
	}
	return &res, nil
}

func parseUnix(tsDate string) int64 {
	date, _ := time.Parse(timeLayout, tsDate)
	return date.Unix() - 28800
}

// parseRecord parse a list of a record in tushare's response body to our
// entity
func (c *Client) parseRecord(schema []string, record []interface{},
	e interface{}) {
	switch v := e.(type) {
	case *Top10Holder:
		// ts_code,ann_date,end_date,holder_name,hold_amount,hold_ratio
		for i := range record {
			if record[i] == nil {
				continue
			}
			switch schema[i] {
			case "ts_code":
				v.TsCode = record[i].(string)
			case "ann_date":
				v.AnnDate = parseUnix(record[i].(string))
			case "end_date":
				v.Year, _ = strconv.Atoi(record[i].(string)[0:4])
			case "holder_name":
				v.HolderName = record[i].(string)
			case "hold_amount":
				v.HoldAmount = record[i].(float64)
			case "hold_ratio":
				v.HoldRatio = record[i].(float64) / 100.0
			}
		}

	
	case *KLine:
		// ts_code,trade_date,open,high,low,close,pre_close,change,
		// pct_chg,vol,amount
		for i := range record {
			if record[i] == nil {
				continue
			}
			switch schema[i] {
			case "ts_code":
				v.TsCode = record[i].(string)
			case "trade_date":
				v.TradeDate = parseUnix(record[i].(string))
			case "open":
				v.Open = record[i].(float64)
			case "high":
				v.High = record[i].(float64)
			case "low":
				v.Low = record[i].(float64)
			case "close":
				v.Close = record[i].(float64)
			case "pre_close":
				v.PreClose = record[i].(float64)
				v.LowLimit = v.PreClose * 0.9
				v.HighLimit = v.PreClose * 1.1
			case "vol":
				v.Volume = record[i].(float64)
			case "amount":
				v.Amount = record[i].(float64) * 1000
			}
			v.Factor = 1.0
		}
	}
}

// FetchKLineByTsCode fetches kline data of a single asset
func (c *Client) FetchKLineByTsCode(tsCode string, tradeDate,
	startDate, endDate *time.Time, index bool) ([]KLine, error) {
	fields := "ts_code,trade_date,open,high,low,close,pre_close,change," +
		"pct_chg,vol,amount"
	lines := make([]KLine, 0)
	table := ""
	if !index {
		table = "daily"
	} else {
		table = "index_daily"
	}
	params := map[string]interface{}{
		"ts_code": tsCode,
	}
	if tradeDate != nil {
		params["trade_date"] = tradeDate.Format(timeLayout)
	}
	if startDate != nil {
		params["start_date"] = startDate.Format(timeLayout)
	}
	if endDate != nil {
		params["end_date"] = endDate.Format(timeLayout)
	}
	reqBody, err := c.makeBody(table, fields, params)
	if err != nil {
		return nil, err
	}
	resp, err := c.request(reqBody)
	if err != nil {
		return nil, err
	}
	for _, record := range resp.Data.Items {
		line := KLine{}
		c.parseRecord(resp.Data.Fields, record, &line)
		lines = append(lines, line)
	}
	return lines, nil
}

上述代码即为构造一个结构体Kline,然后使用http post方式获取tushare数据,将数据转化为结构体形式。涉及到json数据格式转化,reqBody的构造。

重点在于获取tushare的token,token获取方式可参照https://waditu.com/document/1?doc_id=130。

以上就是go通过http方式来获取tushare数据的过程。

注意事项

http方式调用tushare是有次数限制的,免费数据源不可随意调取,按照平台给出的每分钟调用次数限制来使用。
不同数据类型的限制次数不同,下面给出一个大概的参考次数,

获取数据项次数限制
top10_holder200
Kline500
dividends200
suspensions200

具体限制次数请参照官网(可能会变化)。

切勿攻击,滥用tushare数据包。数据只供策略研究和学习使用,不允许作为商业目的。日渐增多的数据采集和处理需求、持续上升的用户请求,给服务器和带宽的扩容造成了很大压力。做遵纪守法的好公民,每个人心中都应该有一条线。

深交所股票行情数据API接口构建实战:从数据采集到高性能服务 在金融科技与量化投资领域,数据接口是连接原始数据源与应用系统的关键技术组件。其核心原理在于通过网络协议与数据源通信,将异构数据解析、清洗并转化为标准化的结构化信息。这类接口的技术价值在于为策略研究、风险监控和交易系统提供稳定、高效的数据供给,是构建自动化投资分析体系的基石。典型应用场景包括个人量化分析平台、金融信息App以及学术研究的数据支持。本文聚焦于深交所行情数据接口的工程实践,详细剖析了通过Web Scraping技术从财经网站采集实时行情,并利用FastAPI框架与Redis缓存构建高性能API服务 阅读详情

相关推荐

量化数据引擎构建指南:从API选型到工程化实践

在量化交易和金融数据分析领域,获取可靠的市场数据是策略研究的首要基础。其核心原理在于通过API接口与各类数据源建立连接,实现数据的自动化获取与处理。这一过程的技术价值在于将原始、分散的金融信息转化为结构化、可分析的数据资产,为策略开发、风险管理和投资决策提供关键输入。典型的应用场景包括策略回测、实时监控、风险建模和投资组合分析。实践中,开发者需要面对数据源选型、API集成、错误处理和本地化存储等工程挑战。本文以**第三方数据API平台**为例,详细拆解了从申请密钥、多语言SDK接入到数据清洗与校验的完整工作

weixin_30376083的博客 470

获取tushare的数据实现示例

1.引言 需要从tushare获取股票数据,保存在本地,进行分析. 本文以日线接口为例,记录使用java通过http方式处理请求和响应的方法。 日线接口 https://tushare.pro/document/2?doc_id=27 HTTP接口调用方式 https://tushare.pro/document/1?doc_id=130 为了简化多个接口的访问,实现一些基础类,包括...

wherwh的专栏 3384

Tushare多语言访问方式介绍

Tushare是一个免费、开源的金融数据接口包,主要用于股票、基金、债券、期货等金融数据的采集、清洗、加工和存储。虽然Tushare主要以Python语言实现,但用户可以通过多种语言来访问Tushare的数据服务。本文将介绍如何使用Python、JavaScript、R等多种语言来访问Tushare数据。Tushare作为一个强大的金融数据接口包,不仅支持Python,还可以通过HTTP请求在多种编程语言中使用。

Gyz1681的博客 952

免费获得筹码分布接口交易数据,Tushare的使用方法

免费获得筹码分布接口交易数据,Tushare的使用方法

sunshine_sean的专栏 3324

利用golang并发下载股票数据(一)

先贴上代码

6015

Python股票自动交易系统毕业设计:从数据到策略的完整实现

量化交易是金融科技领域的核心技术,它通过数学模型和计算机程序实现自动化投资决策。其核心原理在于将投资逻辑转化为可执行的算法,利用历史数据回测验证策略的有效性,最终实现风险可控下的收益优化。这一技术为金融市场带来了更高的效率和更科学的决策方式,广泛应用于对冲基金、资产管理等场景。在工程实践中,Python因其丰富的数据分析生态成为量化开发的首选语言。本文聚焦于基于Python的股票自动交易系统构建,详细解析了如何使用Tushare进行数据获取、通过TA-Lib计算技术指标,并实现了一个完整的双均线策略回测框架

weixin_30702441的博客 306

Tushare(介绍)

Tushare是一款免费、开源的python财经数据接口包。拥有丰富的数据内容,如沪深股票、指数、公募基金、期货、现货、期权、债券、外汇、港股、美股等行情数据,后续还将开发出行业经济、宏观经济、另类经济等相关功能。平台里面还拥有新手指导手册,便利了广大数据爱好者。数据爱好者们可以通过获取积分的方式获取自己想要的数据。 Tushare官方网址:http://www.tushare.pro Tushare积分获取途径: 注册新用户,获得100分; 成功推荐注册一个有效用户,获得50分(通过不正当手段会回收.

m0_68727842的博客 4435

Python量化系统工程骨架:采集-存储-分析-可视化-深度学习五步闭环

量化系统本质是将投资逻辑转化为可验证、可回测、可部署的代码流水线。其核心在于构建稳定可靠的数据管道,涵盖数据采集、持久化存储、因子分析、决策可视化与模型建模等关键环节。基于Python的工程化实现,强调模块解耦、配置统一、版本可控与多人协作能力,有效规避脚本式开发带来的数据不可溯、策略难迭代、团队难协同等问题。尤其在因子计算与深度学习建模中,需严格防范未来信息泄露、输入标准化失当等典型陷阱。本文聚焦一套经多市场(A股、港股、期货、加密货币)实证的最小可行量化工程骨架,覆盖从原始数据接入到LSTM/Trans

weixin_42528191的博客 295

Python/JS/Java三语言实战:免费获取股票数据与计算技术指标

在量化分析和金融数据应用开发中,稳定、高效地获取和处理股票数据是核心基础。其原理通常涉及通过网络API或爬虫技术,从财经门户、开源数据包或交易所官方渠道采集行情、K线及基本面信息。这项技术的价值在于,它为个人研究者和开发者提供了低成本启动量化策略回测、构建数据驱动型应用的能力,打破了传统金融数据服务的高昂壁垒。在实际应用场景中,开发者常需根据项目需求,选择Python进行快速数据分析,使用JavaScript构建实时数据服务,或采用Java开发高并发后端系统。本文聚焦于通过Python的akshare库、N

weixin_30263073的博客 640

finance-go:在go中实现的金融市场数据库

财务去 概要 此go软件包旨在为go应用提供简化且格式正确的结构,以访问当前和历史金融市场数据。 查看,该将作为此软件包的生动示例。 只需几次击键,它就会在您最喜欢的命令行中显示报价/选项信息! 产品特点 描述 资源 报价单 雅虎财经 股权报价 雅虎财经 指数报价 雅虎财经 期权报价 雅虎财经 外汇对报价 雅虎财经 加密货币对报价 雅虎财经 期货报价 雅虎财经 ETF报价 雅虎财经 共同基金报价 雅虎财经 历史报价 雅虎财经 期权跨越 雅虎财经 文献资料 上提供了格式整齐的详细实施指令和示例清单。 目前,有关此库中所有功能的详细信息,请参阅文档。 安装 该项目支持模块和Go 1.13+。

go-tushare

去TuShare 官方网站: : 本项目作为一个普通爱好者做的GO版本SDK,目前实现了沪深股票,指数1000积分(含)的所有接口调用,并增加了布尔线数据的获取,随后会逐步增加其他接口和更多技术指标数据 已经支持了的接口 type TuShare func NewTuShare ( token string ) ( ts * TuShare ) func ( ts * TuShare ) AdjFactor ( params QuotationRequest , items AdjFactorItems ) ( tsRsp * TushareResponse , err error ) func ( ts * TuShare ) BakDaily ( params BakDailyRequest , items BakDailyItems ) ( tsRsp *

如何用AI多智能体打造你的专属股票分析平台:TradingAgents-CN完整指南

还在为复杂的金融量化系统而头疼吗?想用AI技术进行股票分析却不知从何入手?TradingAgents-CN作为一款基于多智能体LLM的中文金融交易框架,让你轻松拥有专业的AI投资分析能力。无论你是投资新手、量化交易爱好者,还是企业级用户,这个13000+星标认证的开源项目都能满足你的需求。本文将为你提供完整的部署指南,帮助你快速搭建自己的智能交易分析平台。 ## AI股票分析新纪元:从传统量化到

gitblog_00893的博客 534

HTML5期末大作业:水果超市网站设计——水果超市(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 网购商城设置网页

HTML5期末大作业:水果超市网站设计——水果超市(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 网购商城设置网页 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大

1712

AI Agent操作系统:从单兵作战到智能体协同的架构演进

在人工智能领域,智能体(Agent)正从单一任务执行者向协同工作系统演进。其核心原理在于通过任务编排与资源调度,将复杂问题分解为可并行处理的子任务,并由专业化智能体分工协作。这一架构的技术价值在于显著提升了复杂工作流的自动化程度与执行效率,解决了传统单体智能体面临的信息孤岛与上下文断裂问题。在应用场景上,它尤其适用于市场调研、数据分析、内容生成等需要多步骤、多模态处理的任务流程。本文以Gliding Horse项目为例,深入探讨了AI Agent操作系统的三层架构模型,并详细解析了其任务编排器与共享记忆体等

weixin_34315485的博客 421

从CMOS到CML:手把手教你为PLL选对分频器电路(附性能对比与选型指南)

本文深入解析了PLL分频器电路的三大主流架构——静态CMOS、动态TSPC和CML,通过性能参数对比和实测数据,提供了从频率需求、功耗预算到噪声防护的完整选型指南。特别针对高频应用的CML分频器设计要点和混合架构优化方案,为射频与模拟IC设计工程师提供实用参考。

weixin_30887919的博客 457

ARTIX-7 GTP 3G-SDI 工程构建与调试实战

本文详细介绍了基于ARTIX-7 FPGA和GTP收发器的3G-SDI工程构建与调试实战。从基础概念解析到Vivado工程创建、GTP IP核配置、SDI IP核集成,再到系统集成与时钟域处理,提供了全面的技术指导。文章还分享了调试技巧、常见问题排查方法以及性能验证步骤,帮助开发者快速掌握3G-SDI视频传输技术的实现与优化。

weixin_30443813的博客 256

tushare的使用

503520 Tushare 提供免费的数据接口,包含沪深股票数据、财务报表数据、指数、基金、期权、期货、港股、美股、宏观经济等数据,甚至新闻快讯、上市公司公告、全球新冠疫情数据也包含在内。Tushare 提供http, Python, MATLAB, R 的数据接口,方便获取实时数据。 Tushare 社区已经开发开放了主流编程语言的SDK,开箱即用,非常方便。使用者可以基于http获取数据,亦可使用Python、MATLAB的SDK获取数据,还可以在R中获取数据。获取数据的方式在官网都有详细介绍。

weixin_66987656的博客 506

比亚迪 10C 闪充技术全解析:超高速离子通道与双电子流设计如何颠覆电动车补能格局?

性能碾压主流方案参数宁德时代6C比亚迪10C优势幅度最大电流700A1000A+43%内阻降幅30%50%+67%5分钟补能240公里400公里+67%

百态·数智思维 | 聚焦大数据、量化与未来AI 1122

tushare获取基本面相关数据&&可视化

宁德时代基本面数据的可视化

treacherousfly的博客 2039

嵌入式接口通识知识之PCIe接口

PCIe x1接口是最常见的一种,插槽的长度是最短的,仅有25mm。PCIe x4接口有四个数据通道,提供比x1接口更高的带宽,插槽的长度为39mm,分为前后两组,一组22根针脚用于供电,剩下的42根针脚是数据针脚。插槽全长89mm,有164根针脚,分为前后两组,较短的插槽有22根针脚,主要用于供电,较长的插槽142根,主要用于数据传输,具有16通道所带来的高带宽。PCIe x8接口有八个数据通道,插槽全长56mm,有98跟针脚,分为前后两组,较短的22根针脚用于供电,剩下的76根针脚是数据针脚。

2301_76587520的博客 1305

Linux与Windows双系统,安装完linux后无法通过grub进入Windows的解决方法

先装Windows 10,Windows可正常启动,再装Kali,Kali提示装grub后照装。然而装完后重启发现无Windows选项。

sakurashockwave的博客 6454

Tushare使用分享(二)

tushare使用分享(二)

m0_58584303的博客 5348

《UDS协议从入门到精通》系列——图解0x85:控制DTC的设置

如何让ECU停止或恢复DTC状态位更新?有哪些注意点?图解+示例教你快速上手UDS 0x85服务!!

车载系统攻城狮 3863

彻底解决!go-stock项目Tushare API Token输入框粘贴失效的技术攻关

在go-stock项目的设置页面中,用户反馈Tushare API Token输入框(Tushare Token)无法通过Ctrl+V或右键菜单粘贴内容。这一问题严重影响用户体验,尤其对于需要频繁更换API令牌的场景,手动输入32位随机字符串不仅效率低下,还容易出错。通过对生产环境用户反馈的汇总分析,该问题导致约15%的新用户在首次配置时放弃使用核心功能。 ## 技术栈与组件背景 该项目前端基...

gitblog_01429的博客 1041

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6241

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Tushare最好用的金融数据接口之一

Tushare最好用的金融数据接口之一 作者 l_byll 1. tushare面向人群 当你使用某个接口的时候,你首先要了解的就是它所面向的人群,tushare接口主要面向于从事金融相关的高校,企业和个人,只要对金融感兴趣,或者你所从事的业务与金融相关,你都可以使用tushare接口对你的业务提供可靠的业务支撑。 2. tushare初体验 首先你要使用这个接口,那么你肯定要先找到他的开发文档,了解这个接口都提供什么样的数据服务。 tushare现在分为两个版本,首先是比较老一点的tushare版本,这

l_byll的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 算法概论第八章课后题--8.3
下一篇: boost pyconfig.h 修复方法
Coder_zyq
博客等级 码龄10年 3粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值