① 如何通过雪球查询股票之前的变动状况
一. 雪球公司介绍
雪球 聪明的投资者都在这里。
web 1.0:新闻资讯,股价信息,K线图
web 2.0:SNS 订阅,分享,聊天
web 3.0:移动 APP,交易闭环
雪球现在员工数还不到100,其中技术人员占一半。去年9月C轮融资4kw刀。我们现在的技术栈由下列组件组成:Java,Scala,Akka,Finagle,Nodejs,Docker ,Hadoop。我们当前是租用IDC机房自建私有云,正在往“公私混合云”方向发展。
在雪球上,用户可以获取沪深港美2w+股票的新闻信息,股价变化情况,也可以获取债券,期货,基金,比特币,信托,理财,私募等等理财产品的各类信息,也可以关注雪球用户建立的百万组合,订阅它们的实时调仓信息,还可以关注雪球大V。雪球当前有百万日活跃用户,每天有4亿的API调用。App Store 财务免费榜第 18 名。历史上曾排到财务第二,总免费榜第 19。
二. 雪球当前总体架构
作为一个典型的移动互联网创业公司,雪球的总体架构也是非常典型的设计:
最上层是三个端:web端,android端和iOS端。流量比例大约为 2:4:4 。web3.0 的交易功能,在 web 端并不提供。
接入层以及下面的几个层,都在我们的自建机房内部。雪球当前只部署了一个机房,还属于单机房时代。正在进行“私有云+公有云混合部署”方案推进过程中。
我们当前使用 nodejs 作为 web 端模板引擎。nodejs 模块与android 和 ios 的 app 模块一起属于大前端团队负责。
再往下是位于 nginx 后面的 api 模块。跟 linkedin 的 leo 和微博的 v4 一样,雪球也有一个遗留的大一统系统,名字就叫 snowball 。最初,所有的逻辑都在 snowball 中实现的。后来慢慢的拆出去了很多 rpc 服务,再后来慢慢的拆出去了一些 http api 做成了独立业务,但即便如此,snowball 仍然是雪球系统中最大的一个部署单元。
在需要性能的地方,我们使用 netty 搭建了一些独立的接口,比如 quoto server,是用来提供开盘期间每秒一次的股价查询服务,单机 qps 5w+,这个一会再细说;而 IM 服务,起初设计里是用来提供聊天服务,而现在,它最大的用途是提供一个可靠的 push 通道,提供 5w/s 的消息下发容量,这个也一会再细说。
雪球的服务化拆分及治理采用 twitter 开源的 finagle rpc 框架,并在上面进行了一些二次开发和定制。定制的功能主要集中在 access log 增强,和 fail fast,fail over 策略及降级开关等。 finagle 的实现比较复杂,debug 和二次开发的门槛较高,团队内部对此也进行了一些讨论。
雪球的业务比较复杂,在服务层中,大致可以分为几类:第一类是web1.0,2.0 及基础服务,我们称为社区,包括用户,帖子,新闻,股价,搜索等等,类比对象就是新浪财经门户+微博;第二类是组合及推荐,主要提供股票投资策略的展示和建议,类比对象是美国的motif;第三类是通道,类似股市中的“支付宝”,接入多家券商,提供瞬间开户,一键下单等等各种方便操作的功能。
雪球的业务实现中,包含很多异步计算逻辑,比如搜索建索引,比如股票涨跌停发通知,比如组合收益计算等等,为此,我们设计了一个独立的 Thread/Task 模块,方便管理所有的后台计算任务。但随着这些 task 越来越多,逻辑差异越来越大,一个统一的模块并不是总是最佳的方案,所以,我们又把它拆成了两大类:流式的,和批量式的。
雪球的推荐体系包括组合推荐“买什么”和个性化推荐。我们最近正在重新梳理我们的大数据体系,这个感兴趣的话可以单聊。
最下面是基础设施层。雪球基础设施层包括:redis,mysql,mq,zk,hdfs,以及容器 docker。
线上服务之外,我们的开发及后台设施也很典型:gitlab开发,jenkins打包,zabbix 监控系统向 openfalcon 迁移,redimine向confluence迁移,jira,以及内部开发的 skiing 后台管理系统。
** 三. 雪球架构优化历程**
首先描述一下标题中的“股市动荡”定语修饰词吧:
上证指数从年初的3000点半年时间涨到了5000多,6月12号达到最高点5200点,然后就急转直下,最大单日跌幅 8.48%,一路跌回4000点以下。最近一周都在3900多徘徊。
3月最后一周,A股开户 166万户,超过历史最高纪录 2007年5月第二周165万户。
4月份,证监会宣布A股支持单用户开设多账户。
6月底,证金公司代表国家队入场救市。
7月份,证监会宣布严打场外配资。
中国好声音广告第一晚,带来超过平时峰值200倍的注册量
挑战:小 VS 大:
小:小公司的体量,团队小,机器规模小
大:堪比大公司的业务线数量,业务复杂度,瞬间峰值冲击
雪球的业务线 = 1个新浪财经 + 1 个微博 + 1 个 motif + 1 个大智慧/同花顺。由于基数小,API调用瞬间峰值大约为平时峰值的 30+ 倍。
挑战:快速增长,移动互联网 + 金融,风口,A股大盘剧烈波动。
首先,在app端,在我们核心业务从 web2.0 sns 向 3.0 移动交易闭环进化的过程中,我们开发了一个自己的 hybrid 框架:本地原生框架,加离线 h5 页面,以此来支撑我们的快速业务迭代。当前,雪球前端可以做到 2 周一个版本,且同时并行推进 3 个版本:一个在 app store 等待审核上线,一个在内测或公测,一个在开发。我们的前端架构师孟祥宇在今年的 wot 上有一个关于这方面的详细分享,有兴趣的可以稍后再深入了解。
雪球App实践—构建灵活、可靠的Hybrid框架 http://wot.51cto.com/2015mobile/ http://down.51cto.com/data/2080769
另外,为了保障服务的可用性,我们做了一系列的“端到端服务质量监控”。感兴趣的可以搜索我今年4月份在环信SM meetup上做的分享《移动时代端到端的稳定性保障》。其中在 app 端,我们采用了一种代价最小的数据传输方案:对用户的网络流量,电池等额外消耗几乎为0
每个请求里带上前一个请求的结果
succ or fail : 1 char
失败原因:0 - 1 char
请求接口编号: 1 char
请求耗时:2 - 3 char
其它:网络制式,etc
炒股的人大多都会盯盘:即在开盘期间,开着一个web页面或者app,实时的看股价的上下跳动。说到“实时”,美股港股当前都是流式的数据推送,但国内的A股,基本上都是每隔一段时间给出一份系统中所有股票现价的一个快照。这个时间间隔,理论上是3秒,实际上一般都在5秒左右。 交了钱签了合同,雪球作为合作方就可以从交易所下属的数据公司那里拿到数据了,然后提供给自己的用户使用。
刚才介绍总体架构图的时候有提到 quote server ,说到这是需要性能的地方。
业务场景是这样的,雪球上个人主页,开盘期间,每秒轮询一次当前用户关注的股票价格变动情况。在内部,所有的组合收益计算,每隔一段时间需要获取一下当前所有股票的实时价格。起初同时在线用户不多,这个接口就是一个部署在 snowball 中的普通接口,股价信息被实时写入 redis ,读取的时候就从 redis 中读。后来,A股大涨,snowball 抗不住了。于是我们就做了一个典型的优化:独立 server + 本地内存存储。开盘期间每次数据更新后,数据接收组件主动去更新 quote server 内存中的数据。 后续进一步优化方案是将这个接口以及相关的处理逻辑都迁移到公有云上去。
对于那些不盯盘的人,最实用的功能就是股价提醒了。在雪球上,你除了可以关注用户,还可以关注股票。如果你关注的某只股票涨了或跌了,我们都可以非常及时的通知你。雪球上热门股票拥有超过 50w 粉丝(招商银行,苏宁云商)粉丝可以设置:当这支股票涨幅或跌幅超过 x%(默认7%)时提醒我。曾经连续3天,每天超过1000股跌停,证监会开了一个会,于是接下来2天超过1000股涨停
原来做法:
股票涨(跌)x%,扫一遍粉丝列表,过滤出所有符合条件的粉丝,推送消息
新做法:
预先建立索引,开盘期间载入内存
1%:uid1,uid2
2%:uid3,uid4,uid5
3%:uid6
问题:有时候嫌太及时了:频繁跌停,打开跌停,再跌停,再打开。。。的时候
内部线上记录:
4台机器。
单条消息延时 99% 小于 30秒。
下一步优化目标:99% 小于 10 秒
IM 系统最初的设计目标是为雪球上的用户提供一个聊天的功能:
送达率第一
雪球IM:Netty + 自定义网络协议
Akka : 每个在线client一个actor
推模式:client 在线情况下使用推模式
多端同步:单账号多端可登录,并保持各种状态同步
移动互联网时代,除了微信qq以外的所有IM,都转型成了推送通道,核心指标变成了瞬间峰值性能。原有架构很多地方都不太合适了。
优化:
分配更多资源:推送账号actor池
精简业务逻辑:重复消息只存id,实时提醒内容不推历史设备,不更新非活跃设备的session列表等等
本地缓存:拉黑等无法精简的业务逻辑迁移到本地缓存
优化代码:异步加密存储,去除不合理的 akka 使用
akka这个解释一下:akka 有一个自己的 log adapter,内部使用一个 actor 来处理所有的 log event stream 。当瞬间峰值到来的时候,这个 event stream 一下子就堵了上百万条 log ,导致 gc 颠簸非常严重。最后的解决办法是,绕过 akka 的 log adapter,直接使用 logback 的 appender
线上记录:5w/s (主动限速)的推送持续 3 分钟,p99 性能指标无明显变化
7月10号我们在中国好声音上做了3期广告。在广告播出之前,我们针对广告可能带来的对系统的冲击进行了压力测试,主要是新用户注册模块,当时预估广告播出期间2小时新注册100万
压测发现 DB 成为瓶颈:
昵称检测 cache miss > 40%
昵称禁用词 where like 模糊查询
手机号是否注册 cache miss > 80%
注册新用户:5 insert
优化:
redis store:昵称,手机号
本地存储:昵称禁用词
业务流程优化:DB insert 操作同步改异步
下一步优化计划:
将 sns 系统中所有的上行操作都改成类似的异步模式
接口调用时中只更新缓存,而且主动设置5分钟过期,然后写一个消息到 mq 队列,队列处理程序拿到消息再做其它耗时操作。
为了支持失败重试,需要将主要的资源操作步骤都做成幂等。
前置模块HA:
合作方合规要求:业务单元部署到合作方内网,用户的敏感数据不允许离开进程内存
业务本身要求:业务单元本身为有状态服务,业务单元高可用
解决方案:
使用 Hazelcast In-Memory Data Grid 的 replication map 在多个 jvm 实例之间做数据同步。
java 启动参数加上 -XX:+DisableAttachMechanism -XX:-UsePerfData,禁止 jstack,jmap 等等 jdk 工具连接
关于前置模块,其实还有很多很奇葩的故事,鉴于时间关系,这里就不展开讲了。以后有机会可以当笑话给大家讲。
组合净值计算性能优化:
一支股票可能在超过20万个组合里(南车北车中车,暴风科技)
离线计算,存储计算后的结果
股价3秒变一次,涉及到这支股票的所有组合理论上也需要每 3 秒重新计算一次
大家可能会问,为什么不用户请求时,实时计算呢?这是因为“组合净值”中还包括分红送配,分股,送股,拆股,合股,现金,红利等等,业务太过复杂,开发初期经常需要调整计算逻辑,所以就设计成后台离线计算模式了。当前正在改造,将分红送配逻辑做成离线计算,股价组成的净值实时计算。接口请求是,将实时计算部分和离线计算部分合并成最终结果。
实际上,我们的计算逻辑是比较低效的:循环遍历所有的组合,对每个组合,获取所有的价值数据,然后计算。完成一遍循环后,立即开始下一轮循环。
优化:
分级:活跃用户的活跃组合,其它组合。
批量:拉取当前所有股票的现价到 JVM 内存里,这一轮的所有组合计算都用这一份股价快照。
关于这个话题的更详细内容,感兴趣的可以参考雪球组合业务总监张岩枫在今年的 arch summit 深圳大会上的分享:构建高可用的雪球投资组合系统技术实践 http://sz2015.archsummit.com/speakers/201825
最后,我们还做了一些通用的架构和性能优化,包括jdk升级到8,开发了一个基于 zookeeper 的 config center 和开关降级系统
四. 聊聊关于架构优化的一些总结和感想
在各种场合经常听说的架构优化,一般都是优化某一个具体的业务模块,将性能优化到极致。而在雪球,我们做的架构优化更多的是从问题出发,解决实际问题,解决到可以接受的程度即可。可能大家看起来会觉得很凌乱,而且每个事情单独拎出来好像都不是什么大事。
我们在对一个大服务做架构优化时,一般是往深入的本质进行挖掘;当我们面对一堆架构各异的小服务时,“架构优化”的含义其实是有一些不一样的。大部分时候,我们并不需要(也没有办法)深入到小服务的最底层进行优化,而是去掉或者优化原来明显不合理的地方就可以了。
在快速迭代的创业公司,我们可能不会针对某一个服务做很完善的架构设计和代码实现,当出现各种问题时,也不会去追求极致的优化,而是以解决瓶颈问题为先。
即使我们经历过一回将 snowball 拆分服务化的过程,但当我们重新上一个新的业务时,我们依然选择将它做成一个大一统的服务。只是这一次,我们会提前定义好每个模块的 service 接口,为以后可能的服务化铺好路。
在创业公司里,重写是不能接受的;大的重构,从时间和人力投入上看,一般也是无法承担的。而“裱糊匠”式做法,哪里有性能问题就加机器,加缓存,加数据库,有可用性问题就加重试,加log,出故障就加流程,加测试,这也不是雪球团队工作方式。我们一般都采用最小改动的方式,即,准确定义问题,定位问题根源,找到问题本质,制定最佳方案,以最小的改动代价,将问题解决到可接受的范围内。
我们现在正在所有的地方强推3个数据指标:qps,p99,error rate。每个技术人员对自己负责的服务,一定要有最基本的数据指标意识。数字,是发现问题,定位根源,找到本质的最重要的依赖条件。没有之一。
我们的原则:保持技术栈的一致性和简单性,有节制的尝试新技术,保持所有线上服务依赖的技术可控,简单来说,能 hold 住。
能用cache的地方绝不用db,能异步的地方,绝不同步。俗称的:吃一堑,长一智。
特事特办:业务在发展,需求在变化,实现方式也需要跟着变化。简单的来说:遗留系统的优化,最佳方案就是砍需求,呵呵。
② 谁知道现在什么软件能提供比较稳定的股票实时行情数据,像数畅,网际风等,想找一个稳定的价格无所谓
BIGI行情股指期货外盘期货外汇现货期权沪深股票A股实时行情数据K线接口
1、国际期货、国内期货、外汇、贵金属、现货、期权、股指、数字货币和A股
交易所:纽约NYMEX、纽约COMEX、芝加哥CME、芝加哥CBOE、美国ICE、欧洲ICE、瑞士EUREX、伦敦LME、香港HKEX、新加坡SGX、京东TOCOM、马来西亚BMD、中金所CFFEX、上期所SHFE、大商所DCE、郑商所CZCE、上期能源INE、沪深交易所
2、接入socket websocket http
3、免费调用K线,实时推送K线
4、无延时
5、API接口
6、专业一对一指导
③ 基于微信大数据的股票预测研究
基于微信大数据的股票预测研究
大数据是近些年来的热门话题,无论国际上还是国内,影响很大。经济学、政治学、社会学和许多科学门类都会发生巨大甚至是本质上的变化和发展,进而影响人类的价值体系、知识体系和生活方式。而全球经济目前生成了史无前例的大量数据,如果把每天产生的大量数据比作神话时期的大洪水是完全正确的,这个数据洪流是我们前所未见的,他是全新的、强大的、当然,也是让人恐慌但又极端刺激的。
而我所分享的话题,正是在互联网环境下,如何利用大数据技术,进行股票预测的研究。–今天,我想分享我认为有意义的四点。
1.大数据下的商业预测
根据大数据,我们可以有效地进行故障、人流、流量、用电量、股票市场、疾病预防、交通、食物配送、产业供需等方面的预测。而本文我们所关心的内容是股票市场的预测。
大数据的核心是预测,预测依赖于对数据的分析。那么分析的方法是否是基于随机采样的结果而设计的,这样的分析方法是否会有误差?
从传统认识上,由于资源和科技的局限,如人和计算资源受限、从计算机处理能力来讲无法处理全部数据来获取人们所关注的结果。因此随机采样应运而生,通过所选取的个体来代表全体,如使用随机抽取的方式来使得推论结果更科学。但既然提到了大数据,它是资源发展到一定程度、以及技术发展到一定阶段产生的一个新的认识。如同电力的出现,使人类进入了一个快速发展阶段,大数据也一样,它的含义是全体样本,从整体样本来做推论。在本文大数据的含义是所有股票在整个社交网络上的流动信息,从数据源上讲,本文没有采用所有社交网络上的数据,只分析了微信这个最具代表性的社交媒体作为信息源。
互动数据能反映用户情绪,搜索数据能反映用户的关注点和意图,在股市预测时这两种数据哪种更具有参考价值?
我认为都有价值,互动数据反映了用户对某一特定股票的喜好和厌恶,可以简单描述为对该股票的操作是继续持有还是卖出;而搜索数据则代表用户在收集该股票信息的过程,它是关注度的概念,某只股票搜索度高则意味着消息的影响力大。互动代表着方向,搜索代表着振幅。
我们知道这两种数据得出的结论会有差异,您是如何平衡这两种数据反映的情况来进行预测的?
正如上一个问题里提到的,如果是股票推荐,买进卖出等原则问题,则应该考虑互动数据,但如果已经买到手了,搜索数据可以提供一个幅度的概念,类似债券评级A级、AA级、AAA级等,供投资者参考,因为不同投资者对风险的承受度是不同的。
将股票和市场的消息整理成140字的短消息发布,是否意味着主要发布渠道是微博?现在微信公众号很火,有没有考虑通过这个渠道也发布消息?
事实上,信息传播的方式很多,微信作为新媒体当然影响力不容小觑,但目前技术投入最小的还是邮件、短信等方式,未来会考虑使用公众号来推送股票和市场消息。
如果在未来通过微信公众号推送消息,那么推送的消息会不会作为数据来源被再次采集?这会有多大的影响?
会被采集,但互联网上的每日关于个股的信息数量会达到很大,该推送会增加推荐股票1点权重,每只股票的权重成百上千,因此影响极小。
数据来源是微信公众号,除了准确性的考虑之外,是否还考虑过这样收集数据会较少触犯个人隐私?
从法律角度来看,搜索微信或其他个人聊天记录,是侵犯个人隐私权的,因此如果腾讯开放了这样的接口,每个公民都可以对这样的行为进行投诉、抗议、甚至进行法律起诉直至其改正过错、赔偿损失的。
这样是否意味着即使存在违法的行为,其结果也是由腾讯来承担,而我们作为数据的使用方不需要承担任何法律责任?
在整个社会,我们作为系统技术提供方,应恪守大数据的伦理道德,遵守国家法律,如侵犯个人隐私,系统不会采集,谷歌有一句座右铭“谷歌不作恶”,本文提到的系统也一样。
2.基于大数据进行股票推荐实验
股票的及时度反应了微信文章所发布的时效性,及时度越高,数据价值就越大。
股票的热度反应了当前某只股票被关注的频度,关注频度越大,上涨的可能性越高。
数据的完整性:我们采用循环的方式对所有深沪两地发行约2236只股票(创业版除外)在微信搜索网站上的搜索结果进行保存。
数据的一致性:文件格式由负责保存数据文件的程序决定,单一的流程保障了文件的一致性。
数据的准确性:由于所分析的订阅号文章的是由微信公共平台的公众号所提供,在一定程度上杜绝了虚假消息对于预测系统的破坏。
数据的及时性:考虑到磁盘读写以及采集程序所处的网络带宽,以及搜索引擎对于采集程序的屏蔽,程序中采集两条信息之间间隔了5秒,因此理论上11180秒(3.1个小时)可收集完当日推荐所需要的数据。对于每个交易日,在9点-9点30分之间采集所有数据,需要7台以上的设备可达到最佳效果。本次试验受限于试验设备,在一台设备上,交易日每天早六时开始进行数据采集,也满足及时性要求。
数据分析:查看三个高优先级的股票,该股票当日的开盘价与收盘价,再与当日(2015-4-8)上证综指进行比较,可得在收益上该算法是优于上证综指为样本的整体股票的股价差收益的。
实验结论:按照上述方式,系统每天推荐出当日股票,在开盘时进行买进,在第二个交易日进行卖出。经过一个月21个交易日(2015-3-1至2015-3-31),系统的收益为20%/月。通过微信搜索公众号来预测市场走势和投资情绪呈现出正相关性,因此可以作为股票甄选的因子。
3.股票预测的大数据发展趋势
网络数据分成三种:
一是浏览数据,主要用于电商领域的消费者行为分析,浏览数据反映了用户每一步的访问脚步,进一步刻画出用户的访问路径,分析不同页面的跳转概率等。
二是搜索数据,主要指搜索引擎记录的关键词被搜索频次的时间序列数据,能反映数亿用户的兴趣、关注点、意图。
三是互动数据,主要是微博、微信、社交网站的数据,反映用户的倾向性和情绪因素。
2013年诺贝尔经济学奖得主罗伯特?席勒的观点被无数采访对象引述。席勒于上世纪80年代设计的投资模型至今仍被业内称道。在他的模型中,主要参考三个变量:投资项目计划的现金流、公司资本的估算成本、股票市场对投资的反应(市场情绪)。他认为,市场本身带有主观判断因素,投资者情绪会影响投资行为,而投资行为直接影响资产价格。
计算机通过分析新闻、研究报告、社交信息、搜索行为等,借助自然语言处理方法,提取有用的信息;而借助机器学习智能分析,过去量化投资只能覆盖几十个策略,大数据投资则可以覆盖成千上万个策略。
基于互联网搜索数据和社交行为的经济预测研究,已逐渐成为一个新的学术热点,并在经济、社会以及健康等领域的研究中取得了一定成果。在资本市场应用上,研究发现搜索数据可有效预测未来股市活跃度(以交易量指标衡量)及股价走势的变化。
对于搜索数据:互联网搜索行为与股票市场的关联机理。这个研究属于行为金融与互联网的交叉领域,其原理是:股票量价调整是投资者行为在股票市场上的反应;与此同时,投资者行为在互联网搜索市场也有相应地行为迹象,我们要做到是:找到互联网搜索市场中领先于股票交易的行为指标,综合众多投资者的先行搜索指标,对未来的股票交易做出预判。
如同天气预报那样,不断优化模型、灌入海量信息,然后给出结果。并且在处理的信息中,有80%是“非结构化”数据,例如政策文件、自然事件、地理环境、科技创新等,这类信息通常是电脑和模型难以消化的。采用了语义分析法,可以将互动数据里的金融对话量化为“-1(极度看空)”到“1(极度看多)”之间的投资建议,通过分析互动数据的数据文本,作为股市投资的信号。
4.正在发生的未来
大数据并不是一个充斥着算法和机器的冰冷世界,人类的作用依然无法被完全替代。大数据为我们提供的不是最终答案,只是参考答案,帮助是暂时的,而更好的方法和答案还在不久的将来。
大数据在实用层面的影响很广泛,解决了大量的日常问题。大数据更是利害攸关的,它将重塑我们的生活、工作和思维方式。在某些方面,我们面临着一个僵局,比其他划时代创新引起的社会信息范围和规模急剧扩大所带来的影响更大。我们脚下的地面在移动。过去确定无疑的事情正在受到质疑。大数据需要人们重新讨论决策、命运和正义的性质。拥有知识曾意味着掌握过去,现在则意味着能够预测未来。
大数据并不是一个充斥着算法和机器的冰冷世界,其中仍需要人类扮演重要角色。人类独有的弱点、错觉、错误都是十分必要的,因为这些特性的另一头牵着的是人类的创造力、直觉和天赋。这提示我们应该乐于接受类似的不准确,因为不准确正是我们之所以为人的特征之一。就好像我们学习处理混乱数据一样,因为这些数据服务的是更加广大的目标。必将混乱构成了世界的本质,也构成了人脑的本职,而无论是世界的混乱还是人脑的混乱,学会接受和应用他们才能得益。
我相信,利用基础数据、搜索数据、互动数据再进行加权计算,可以对所有股票进行大数据遴选,从而给出投资建议。我认为,我们的肉身刚刚步入大数据时代,但我们的精神还滞留在小数据、采样思维之中,率先用理性击碎固有思维的人,也将率先获得大数据带来的益处。
④ 股票软件如何导入外部数据
这个真没办法导入,股票软件的数据都是实时接收,资讯类的也是在后台整理好以后再推送的,你的数据可以导入到excel中进行分析
⑤ 银江,数畅,网际风等行情接口怎样购买
1、银江网络行情接口是什么概念,与券商的提供的免费软件有什么区别?
答:在互联网还不是很普及的时候,大部分看盘软件都是用硬件图文卡通过闭路电视信号接受行情,随着互联网越来越普及,各家股票软件公司都开始用互联网传输数据,他们都有各自的行情数据接口。【银江网络接口】是【银江证券投资决策系统】网络版的行情接口,同时兼容分析家(通视卡)接口规范,也可供分析家、飞狐交易师、益盟操盘手、麟龙、干坤、融易等分析软件接收高速股票行情使用。所以如果你的软件带有图文卡选项,并且是通视卡数据标准,基本上就可以使用银江接口,注意:接口安装的时候需要关闭所有相关软件,安装好以后,不需要单独启动银江接口。第一次启动相关股票软件,选择使用图文卡接收接就会启动银江,以后启动股票软件就会自动启动银江接口的。
2、目前有哪些兼容的通视卡标准数据接口,银江接口有什么特点?
答:目前兼容的数据接口有数畅、网际风、王者、倚天金融快车、银江等品牌,与其他接口相比银江有以下特点:
◆大部分的兼容接口以及券商提供的免费软件都是采用请求式数据传输方式,打开一只股票画面,数据才会自动下载,不打开的股票页面,该画面数据不会下载到本地硬盘上,所以如果网络不好,或者服务器不好,就极为耽误看盘。而且因为本地请求到的数据太少。分析软件里的公式指标也没法自动发挥作用,想实时预警或者选股什么的,都没法准确运行,这也是很多人不愿意使用证券公司提供的免费软件的原因。银江网络行情接口,采用的是主动推送方式能将所有数据主动推送到本地硬盘,所以任意打开一个股票页面,股票行情都能立即显示。此时用分析软件里面预警和指标公式选股,都是最准确的。
◆银江接口支持最多4个股票软件同时运行接受当日的动态行情。拥有一套银江网络行情接口,相当于拥有分析家、飞狐交易师、益盟操盘手等多个经典分析软件。(注意:历史数据需要单个软件分别补充。)
◆银江接口行情占用系统资源少,运行高速稳定,各种数据全面、速度快,每分钟9笔10笔是常见的,自动补充当日分时,自动更新F10资料,支持信息地雷,支持补充当日分笔数据。银江网络行情接口是目前唯一支持分析家信息地雷、财务数据、除权数据自动下载支持分析家最好的接口,也是目前唯一支持益盟操盘手2.72版自动下载财务数据、除权数据、补充5分钟线的接口。
◆支持代理服务器,无论是win98还是win2000、xp、win2003都运行稳定流畅,多服务器支持,不用担心行情中断。
◆一个会员号可以在任意电脑上面使用,但是同一时间只能一台电脑在线。
◆价格便宜,是众多接口中价格最低的,传输数据全面,性能最好的接口。
3、银江网络行情软件支持那些版本的股票软件?
答:银江网络目前支持的股票软件版本是分析家4.0---分析家2006 v6.0、飞狐交易师专业版4.06版以下、益盟操盘手2.72版以下等版本比较低一点的股票软件,随着互联网的普及,各家股票软件公司都关闭了图文卡兼容接口,发展自己的行情数据接口,所以最新版的股票软件大都不再提供图文卡接口。所以也就不能再使用兼容数据接口以及银江了。高版本的股票软件里面,目前网络上面流传的只有飞狐交易师网络版4.9的D版可以使用银江接口,益盟操盘手软件网络上面流传的3.04以上的D版都是将2.72的操盘手改了下版本号,并不是真正的高版本操盘手,2.72以上的操盘手要看行情必须使用正版才行。
⑥ 如何获取实时的股票行情信息,有相关的公用接口或者数据源吗
实时股票数据接口
股票数据的获取目前有如下两种方法可以获取:
1.
http/javascript接口取数据
2.
web-service接口
1.http/javascript接口取数据
1.1Sina股票数据接口
以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据
接口:
http://hq.sinajs.cn/list=sh601006
这个url会返回一串文本,例如:
var
hq_str_sh601006="大秦铁路, 27.55, 27.25, 26.91, 27.55, 26.20, 26.91,
26.92,
22114263, 589824680, 4695, 26.91, 57590, 26.90, 14700,
26.89, 14300,
26.88, 15100, 26.87, 3100, 26.92, 8900, 26.93,
14230, 26.94, 25150, 26.95, 15220, 26.96, 2008-01-11,
15:05:32";
这个字符串由许多数据拼接在一起,不同含义的数据用逗号隔开了,按照程序员的思路,顺序号从0开始。
0:”大秦铁路”,股票名字;
1:”27.55″,今日开盘价;
2:”27.25″,昨日收盘价;
3:”26.91″,当前价格;
4:”27.55″,今日最高价;
5:”26.20″,今日最低价;
6:”26.91″,竞买价,即“买一”报价;
7:”26.92″,竞卖价,即“卖一”报价;
8:”22114263″,成交的股票数,由于股票交易以一百股为基本单位,所以在使用时,通常把该值除以一百;
9:”589824680″,成交金额,单位为“元”,为了一目了然,通常以“万元”为成交金额的单位,所以通常把该值除以一万;
10:”4695″,“买一”申请4695股,即47手;
11:”26.91″,“买一”报价;
12:”57590″,“买二”
13:”26.90″,“买二”
14:”14700″,“买三”
15:”26.89″,“买三”
16:”14300″,“买四”
17:”26.88″,“买四”
18:”15100″,“买五”
19:”26.87″,“买五”
20:”3100″,“卖一”申报3100股,即31手;
21:”26.92″,“卖一”报价
(22,
23), (24, 25), (26,27), (28,
29)分别为“卖二”至“卖四的情况”
30:”2008-01-11″,日期;
31:”15:05:32″,时间;
一个简单的JavaScript应用例子:
script
type="text/javascript" src="http://hq.sinajs.cn/list=sh601006"
charset="gb2312">/script>
/javascript">
var
elements=hq_str_sh601006.split(",");
document.write("current
price:"+elements[3]);
这段代码输出大秦铁路(股票代码:601006)的当前股价
current
price:14.20
如果你要同时查询多个股票,那么在URL最后加上一个逗号,再加上股票代码就可以了;比如你要一次查询大秦铁路(601006)和大同煤业(601001)的行情,就这样使用URL:
http://hq.sinajs.cn/list=sh601003,sh601001
查询大盘指数,比如查询上证综合指数(000001):
http://hq.sinajs.cn/list=s_sh000001
服务器返回的数据为:
var
hq_str_s_sh000001="上证指数,3094.668,-128.073,-3.97,436653,5458126";
数据含义分别为:指数名称,当前点数,当前价格,涨跌率,成交量(手),成交额(万元);
查询深圳成指数:
http://hq.sinajs.cn/list=s_sz399001
对于股票的K线图,日线图等的获取可以通过请求http://image.sinajs.cn/…./…/*.gif此URL获取,其中*代表股票代码,详见如下:
查看日K线图:
http://image.sinajs.cn/newchart/daily/n/sh601006.gif
分时线的查询:
http://image.sinajs.cn/newchart/min/n/sh000001.gif
日K线查询:
http://image.sinajs.cn/newchart/daily/n/sh000001.gif
周K线查询:
http://image.sinajs.cn/newchart/weekly/n/sh000001.gif
月K线查询:
http://image.sinajs.cn/newchart/monthly/n/sh000001.gif
1.2
Bai&Google的财经数据
在,
google中搜索某只股票代码时,将会在头条显示此股票的相关信息,例如在google搜索601006时,
第一条搜索结果如下图:
通过点击左边的图片我们发现会将此图片链接到sina财经频道上,也就是说google股票数据的获取也是从sina获取。后经抓包分析,发现google也是采用1.1中介绍的接口。
Bai的股票数据来自的财经频道
http://stock..com/
1.3
其他方式
除了sina,等网站提供股票信息外,其他网站也有类似的接口。我们分析了一款论坛上采用的股票插件,
其中有关于实时股票数据获取的介绍,详见如下代码,其中可以看到有些数据来自sina。
以下是ASP示例:
=5
then
stockdata=gethttp("http://hq.sinajs.cn/list=sh"&code&"")
if
not len(stockdata)=0 then
stockdata=split(stockdata,chr(34))(1)
end if
if
len(stockdata)=0
then
stockdata="0,0,0,0,0,0,0,0,0,0,0,0"
else
stockdatasplit=split(stockdata,",")
stockdata=""&exstock.checkstr(stockdatasplit(0))&","&stockdatasplit(1)&","&stockdatasplit(2)&","&stockdatasplit(3)&","&stockdatasplit(4)&","&stockdatasplit(5)&","&formatdatetime(""&stockdatasplit(30)&"
"&stockdatasplit(31)&"",0)&""
end
if
‘0=股票名称,1=开盘价格,2=昨收盘价格,3=当前价格,4=最高价,5=最低价,6=更新时间
getstockdata=stockdata
end
function
function getstockimg(code)
dim
rndnum,addnum,checkcode,imgsource
if len(code)=5
then
getstockimg="http://image.sinajs.cn/newchart/daily/n/sh"&code&".gif"
end
if
imgsource="http://finance.sina.com.cn"
case
3
getstockimg="http://hq.gazxfe.com/stockchart/realline.chart?"&code&"&1003&SZ
500 330"
imgsource="http://hq.gazxfe.com"
case
4
getstockimg="http://chartse.stockstar.com/chartserver?code="&code&""
imgsource="http://www.stockstar.com/"
end
select
getstockimg=split(""&getstockimg&"||"&imgsource&"","||")
end
function
function getastockimg()
dim
rndnum,addnum,checkcode
dim
getastockimgb,imgsource
addnum=6
randomize:rndnum=cint(rnd*addnum)
select
case rndnum
case
0
getastockimg="http://202.109.106.1/gifchartse/gif/000001.gif"
getastockimgb="http://202.109.106.1/gifchartse/gif/399001.gif"
imgsource="http://www.stockstar.com/"
case
1
getastockimg="http://money.163.com/special/100.gif?C39"
getastockimgb="http://money.163.com/special/101.gif?HrS"
imgsource="http://www.163.com"
case
2
getastockimg="http://www.10jqka.com.cn/curve/realtime/index2.php?code=1a0001&w=180&h=140"
getastockimgb="http://www.10jqka.com.cn/curve/realtime/index2.php?code=399001&w=180&h=140"
imgsource="http://www.10jqka.com.cn"
case
3
getastockimg="http://chart.cnlist.com/stockchart/realline.chart?1a0001&1002&SZ
180
140"
getastockimgb="http://chart.cnlist.com/stockchart/realline.chart?399001&1002&SZ
180
140"
imgsource="http://chart.cnlist.com/"
case
4
getastockimg="http://image.sinajs.cn/newchart/small/ish000001.gif?1189176558328"
getastockimgb="http://image.sinajs.cn/newchart/small/isz399001.gif?1189176558328"
imgsource="http://www.sinajs.cn"
case
5
getastockimg="http://218.1.72.66/cgi/pic/sh/realtime/JA000001164143.png"
getastockimgb="http://218.1.72.66/cgi/pic/sz/realtime/JA399001164143.png"
imgsource="http://www.cnstock.com/"
case
6
getastockimg="http://222.73.29.85/img/000001.png"
getastockimgb="http://222.73.29.85/img/399001.png"
imgsource="http://www.eastmoney.com/"
end
select
getastockimg=split(""&getastockimg&"||"&getastockimgb&"||"&imgsource&"","||")
end
function
%>
2.
web-service接口
2.1 CHINAstock的web-service:
http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
中国股票行情数据
WEB 服务(支持深圳和上海股市的全部基金、债券和股票),数据即时更新。输出GIF分时走势图、日/周/月 K
线图、及时行情数据(股票名称、行情时间、最新价、昨收盘、今开盘、涨跌额、最低、最高、涨跌幅、成交量、成交额、竞买价、竞卖价、委比、买一 - 买五、卖一 -
卖五)。此WEB服务提供了如下几个接口:
2.1.1
getStockImageByCode
GET
股票GIF分时走势图
INput:theStockCode =
股票代号,如:sh000001
POST /WebServices/ChinaStockWebService.asmx
HTTP/1.1
Host: www.webxml.com.cn
Content-Type:
text/xml; charset=utf-8
Content-Length:
length
SOAPAction:
"http://WebXml.com.cn/getStockImageByCode"
string
Output:
2.1.2
getStockImageByteByCode
获得中国股票GIF分时走势图字节数组
INput:theStockCode
= 股票代号,如:sh000001
POST /WebServices/ChinaStockWebService.asmx
HTTP/1.1Host: www.webxml.com.cnContent-Type: text/xml;
charset=utf-8Content-Length: lengthSOAPAction:
"http://WebXml.com.cn/getStockImageByteByCode"
string
返回的数据如下:
hkMyt4m4VkJtstbv8A
2.1.3
getStockImage_kByCode
直接获得中国股票GIF日/周/月 K
线图(545*300pixel/72dpi)
INPUT: theStockCode =
股票代号
theType = K 线图类型(D:日[默认]、W:周、M:月),
POST
/WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockImage_kByCode" string
string
比如按照下图所示输入:
返回的结果就是周K线图:
2.1.4
getStockImage_kByteByCode
获得中国股票GIF日/周/月 K
线图字节数组
Input:theStockCode = 股票代号,如:sh000001
POST
/WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockImage_kByteByCode" string string
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length
base64Binary
比如按照下图输入:
返回的结果就是周K线图字节数组
hkMyt4m4VkJtstbv8A
2.1.5
getStockInfoByCode
获得中国股票及时行情
input:theStockCode
= 股票代号
POST /WebServices/ChinaStockWebService.asmx HTTP/1.1Host:
www.webxml.com.cnContent-Type: text/xml; charset=utf-8Content-Length:
lengthSOAPAction: "http://WebXml.com.cn/getStockInfoByCode"
string
返回的值一个一维字符串数组
String(24),结构为:String(0)股票代号、String(1)股票名称、String(2)行情时间、String(3)最新价(元)、String(4)昨收盘(元)、String(5)今开盘(元)、String(6)涨跌额(元)、String(7)最低(元)、String(8)最高(元)、String(9)涨跌幅(%)、String(10)成交量(手)、String(11)成交额(万元)、String(12)竞买价(元)、String(13)竞卖价(元)、String(14)委比(%)、String(15)-String(19)买一
- 买五(元)/手、String(20)-String(24)卖一 - 卖五(元)/手。
Web
service的方法类似于现在concurrent项目的DBWS数据的获取,都是通过SOAP协议向DBWS服务器获取相关的数据。
利用雅虎查中国股票
http://quote.yahoo.com/d/quotes.csv?s=MSFT&f=slc1wop
返回微软的股票价格
"MSFT","4:00pm
- 30.70",+1.04,"21.46 -
30.75",29.77,29.66
http://quote.yahoo.com/d/quotes.csv?s=000969.SZ&f=slc1wop
这个返回安泰科技的,一般有半个小时的延迟。
但是s=000969.sz
这个后面的sz是深圳的意思, 沪市是SS后缀
⑦ 上证指数历史数据在哪里可以看到呢
适用股票分析软件、上证网以及其他证券网站均可查询!
股市指数是由证券交易所或金融服务机构编制的、表明股票行市变动的一种供参考的数字。
通过指数,对于当前各个股票市场的涨跌情况我们可以直观地看到。
股票指数的编排原理还是比较错综复杂的,那学姐就不在这里细讲了,点击下方链接,教你快速看懂指数:新手小白必备的股市基础知识大全
一、国内常见的指数有哪些?
会由股票指数的编制方法和性质来分类,股票指数有五种类型:规模指数、行业指数、主题指数、风格指数和策略指数。
这当中,最频繁遇见的当属规模指数,比如我们熟知的“沪深300”指数,它说明的是在沪深市场中交易活跃,且代表性和流动性都很好的300家大型企业股票的整体情况。
当然还有,“上证50 ”指数也属于规模指数,代表的是上海证券市场代表性好、规模大、流动性好的50 只股票的整体情况。
行业指数代表的则是某个行业目前的整体状况。比如说“沪深300医药”就算是一个行业指数,代表沪深300中的医药行业股票,反映该行业公司股票的整体表现。
某一主题的整体情况是用主题指数作为代表的,就好比人工智能、新能源汽车这些方面,以下是相关指数:“科技龙头”、“新能源车”等。
想了解更多的指数分类,可以通过下载下方的几个炒股神器来获取详细的分析:炒股的九大神器免费领取(附分享码)
二、股票指数有什么用?
经过文章前面的介绍,大家可以知道,指数选取了市场中具有代表性的一些股票,因此,指数能够帮助我们比较快速的了解到市场的整体涨跌情况,这也是对市场的热度做一个简单的了解,甚至可以预测未来的走势是怎么样的。具体则可以点击下面的链接,获取专业报告,学习分析的思路:最新行业研报免费分享
应答时间:2021-09-06,最新业务变化以文中链接内展示的数据为准,请点击查看
⑧ 股票软件怎么开发股票软件开发需要注意哪些
股票软件开发开发过程包括以下五个阶段:
一、股票软件开发定制分析
然后把它用软件工程开发语言(形式功能规约,软件需求分析就是回答做什么的问题。一个对用户的需求进行去粗取精、去伪存真、正确理解。即需求规格说明书)表达进去的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。
二、股票软件开发设计
也可以是可组合、可分解和可更换的功能单元。模块,股票软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的顺序单元。可以是一个函数、过程、子程序、一段带有顺序说明的独立的顺序和数据。然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的顺序流程、算法和数据结构,主要任务就是设计数据库,常用方法还是结构化顺序设计方法。
三、股票软件开发定制编码
即写成以某一顺序设计语言表示的"源程序清单"充沛了解软件开发语言、工具的特性和编程风格,软件编码是指把软件设计转换成计算机可以接受的顺序。有助于开发工具的选择以及保证软件产品的开发质量。
四、股票软件开发测试
关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,股票软件测试的目的以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)如何才干设计出一套出色的测试用例。依据的顺序内部的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部顺序逻辑结果。白盒法和黑盒法依据的软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。
五、股票软件开发与维护
对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后。对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题演讲、软件修改演讲。
⑨ 什么是全推数据
所谓全推行情,就是股票数据接口将所有股票实时数据同步发送,只要打开软件,无论翻看与否,所有股票的最新实时数据都自动更新,翻看时无停滞感。这样的发送方式对服务器的质量和数量要求较高。现在的nezip网际风接口和早期的数畅、银江接口,以及大智慧新一代L2版具备全推数据提供,所有免费软件都不是全推行情。
相对于全推行情,另一种传输方式就是点播行情,亦称请求行情,是以通达信、经典版大智慧、钱龙为代表,更新模式为:当前页面股票和上证指数行情更新最快,其中上证指数无条件更新(功能设计),其次是行情列表或自选股版面行情,依屏幕大小为30—50支股票,这个版面可见股票是自动更新的,其他股票一律不更新,大智慧新一代点播更绝(只有当前股票能够实时更新)。所以相比飞狐和分析家的全推行情,要省掉95%以上的传输数据,服务器承受的压力当然要小得多,也就是为什么通达信能够一直坚持提供免费行情的原因。即便如此也需要用1000多台服务器(和联众游戏差不多吧),要是通达信也搞全推,至少需要增加50倍以上的服务器投入。
推和点播的优缺点:
点播行情
优点:自动侦测行情服务器连接响应速度。股票历史数据存储在服务器端,客户端在翻动股票的时候会自动获得数据并保留到本地供以后调用。在实时行情中,正在关注的股票K线数据源源不断进来,未翻动股票K线数据会以较小的笔数发送,节约服务器和客户端带宽资源。一旦翻到某个股票,服务器会瞬间补充客户端全部数据。每天不用收盘作业,只需联网就可以翻阅历史行情。盘后可以补充下载历史数据。
缺点:由于该行情传递数据的方式,不能实现盘中实时预警和及时条件选股。
全推行情
优点:在实时接收中,软件会按照服务器的全部推送数据发送方式把所有深沪数据源源不断获得到本地,这种方式有利于盘中实时指标预警和盘中选股。
缺点:该数据传递方式需要占用一定的系统资源和网络带宽,如果网络质量不好,会影响实时数据的连贯性。全推行情接口支持的软件相对专业,目前仅支持飞狐交易师、分析家、大智慧和步步汇盈,新手使用需要有个熟悉的过程。
⑩ 如何实时行情数据接收
这类数据接进来需要非常 使用前一定要测试下是否合适