A. 中国的 Python 量化交易工具链有哪些
万得的Python API,可以用来获取实时数据、历史数据以及下单交易 优点:万得大而全 缺点:下单交易功能不是事件驱动(例如成交回报需要用户去查询,而不是主推)
同花顺iFinD的Python API,类似万得的API 优点:比万得便宜,同花顺的服务态度很好(用户提出新需求后很快就能给出确定的答复或者解决方案)
掘金的量化平台
通联数据的量化平台
QuickFix的Python API(可以用来接国信、方正的FIX接口)
Numpy/Scipy/Matplotlib/Pandas(量化分析)
IPyhon/Spyder(适合做量化分析的IDE环境)
Zipline(策略开发回测)
TuShare财经数据接口 - 可以直接抓取新浪财经、凤凰财经的网站数据,包括行情、基本面、经济数据等等。完全免费,简洁易用,API设计得非常友好,提取的数据格式是Pandas的DataFrame。同时可以获取非高频实时数据(取决于网站更新速度,同事经验大约是15秒),一个极好的非高频股票策略数据解决方案。
恒生电子的量化赢家平台,提供Python接口,链接我点进去后没看到具体的使用教程,希望回头补一下。
米矿ricequant在我提出这个问题时尚只有Java的API,后来也支持了Python,期待2016有新的突破。
B. 怎样用python处理股票
用Python处理股票需要获取股票数据,以国内股票数据为例,可以安装Python的第三方库:tushare;一个国内股票数据获取包。可以在网络中搜索“Python tushare”来查询相关资料,或者在tushare的官网上查询说明文档。
C. 如何使用python抓取炒股软件中资金数据
这个说来有点复杂,用fiddle监控软件跟服务器间的通讯,找到数据源地址,然后用excel或python抓这个源地址数据,可能还要加上反扒代码,构造时间戳等等,你网上找python网抓视频教程看看就知道了。
D. 如何用python抓取股票数据
在 Python的QSTK中,是通过 s_datapath 变量,定义相应股票数据所在的文件夹。一般可以通过 QSDATA 这个环境变量来设置对应的数据文件夹。
具体的股票数据来源,例如沪深、港股等市场,你可以使用免费的WDZ程序输出相应日线、5分钟数据到 s_datapath 变量所指定的文件夹中。然后可使用 Python的QSTK中,qstkutil.DataAccess进行数据访问。
E. 如何使用Python获取股票分时成交数据
可以使用爬虫来爬取数据,在写个处理逻辑进行数据的整理。你可以详细说明下你的需求,要爬取的网站等等。
希望我的回答对你有帮助
F. python能找到股票数据吗
可以用python的相关模块进行股票的基础数据分析,制作曲线等.
G. 如何用python 爬虫抓取金融数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一。鉴于此,我拾起了Python这把利器,开启了网络爬虫之路。
本篇使用的版本为python3.5,意在抓取证券之星上当天所有A股数据。程序主要分为三个部分:网页源码的获取、所需内容的提取、所得结果的整理。
一、网页源码的获取
很多人喜欢用python爬虫的原因之一就是它容易上手。只需以下几行代码既可抓取大部分网页的源码。
为了减少干扰,我先用正则表达式从整个页面源码中匹配出以上的主体部分,然后从主体部分中匹配出每只股票的信息。代码如下。
pattern=re.compile('<tbody[sS]*</tbody>')
body=re.findall(pattern,str(content)) #匹配<tbody和</tbody>之间的所有代码pattern=re.compile('>(.*?)<')
stock_page=re.findall(pattern,body[0]) #匹配>和<之间的所有信息
其中compile方法为编译匹配模式,findall方法用此匹配模式去匹配出所需信息,并以列表的方式返回。正则表达式的语法还挺多的,下面我只罗列所用到符号的含义。
语法 说明
. 匹配任意除换行符“ ”外的字符
* 匹配前一个字符0次或无限次
? 匹配前一个字符0次或一次
s 空白字符:[<空格> fv]
S 非空白字符:[^s]
[...] 字符集,对应的位置可以是字符集中任意字符
(...) 被括起来的表达式将作为分组,里面一般为我们所需提取的内容
正则表达式的语法挺多的,也许有大牛只要一句正则表达式就可提取我想提取的内容。在提取股票主体部分代码时发现有人用xpath表达式提取显得更简洁一些,看来页面解析也有很长的一段路要走。
三、所得结果的整理
通过非贪婪模式(.*?)匹配>和<之间的所有数据,会匹配出一些空白字符出来,所以我们采用如下代码把空白字符移除。
stock_last=stock_total[:] #stock_total:匹配出的股票数据for data in stock_total: #stock_last:整理后的股票数据
if data=='':
stock_last.remove('')
最后,我们可以打印几列数据看下效果,代码如下
print('代码',' ','简称',' ',' ','最新价',' ','涨跌幅',' ','涨跌额',' ','5分钟涨幅')for i in range(0,len(stock_last),13): #网页总共有13列数据
print(stock_last[i],' ',stock_last[i+1],' ',' ',stock_last[i+2],' ',' ',stock_last[i+3],' ',' ',stock_last[i+4],' ',' ',stock_last[i+5])
H. 如何使用 Python 抓取雪球网页
#start coding
首先要知道自己在爬什么~楼主说找到HTML的代码云云,思路其实是错误的。因为我们想要的内容不在原始的html里面。但是肯定在浏览器和服务器之间的通信里,我们只要找到这部分数据就好。
#我用的是Firefox的FireBug
选择网络(Chrome中应该是Network),点击调仓历史记录
可以看到浏览器和服务器之间进行了一次通信。我们截获了一个网址。打开看看。可以看到浏览器和服务器之间进行了一次通信。我们截获了一个网址。打开看看。
看上去像是一堆乱码,但是细心的话就会发现……
也就是说我们要的数据都在这里了,所以只要先获取这个页面的内容然后在提取数据就好了~
#python3项目,python2中请使用urllib和urllib2
import urllib.request
url = '?cube_symbol=ZH010389&count=20&page=1'
req = urllib.request.Request(url,headers=headers)
html = urllib.request.urlopen(req).read().decode('utf-8')
print(html)
运行一下~
报错了~报错没关系,兵来将挡水来土掩~
403禁止访问…应该是headers的问题…什么是headers呢…403禁止访问…应该是headers的问题…什么是headers呢…
你现在用python去访问网页,网页得到的请求就是你是python程序,但是网页并不想让程序看到自己,因为他是给人看的,资源都被程序占了算什么,所以我们要让python伪装成浏览器。
依然是用Firebug查看headers信息。
然后我们完善代码在访问过程中添加headers~然后我们完善代码在访问过程中添加headers~
import urllib.request
headers = {'X-Requested-With': 'XMLHttpRequest',
'Referer': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',
'Host': 'xueqiu.com',
#'Connection':'keep-alive',
#'Accept':'*/*',
'cookie':'s=iabht2os.1dgjn9z; xq_a_token=; xq_r_token=; __utma=1.2130135756.1433017807.1433017807.1433017807.1;'
'__utmc=1; __utmz=1.1433017807.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); Hm_lvt_=1433017809; Hm_lpvt_=1433017809'}
url = '?cube_symbol=ZH010389&count=20&page=1'
req = urllib.request.Request(url,headers=headers)
html = urllib.request.urlopen(req).read().decode('utf-8')
print(html)
这次得到想要的结果了~
我们回过头再去看headers会发现,其实有些我并没有写进去,你也可以自己尝试把headers中的某一行注释掉运行。但是每个站是不一样的,你把所有的都填上去是一定能运行成功的,但是可能其中某一些不是必需的。
比如我们这里只要有User-Agent(缺少报错403)和cookie(缺少报错400)。
好~我们现在拿到了想要的数据,但是看上去太复杂了,一点都不友好。现在我们来解析一下这个网页。其实这个网页是json格式的数据包。
然后我们来观察这个数据的解析。然后我们来观察这个数据的解析。
#你可以直接点击Firebug中的JSON来看,也可以复制到Notepad++中使用json viewer插件查看。
大概是这个样子的……大概是这个样子的……
有了json的构成结构我们就可以来解析它了…
我直接拿Python Shell调试,一会儿完善代码
没什么问题~一切看起来很完美的样子~这一步其实没什么难度,只要你能看懂上一步里我们分析的json数据的组成结构,然后一层一层地向下解析数据就可以了。
完善代码。
import urllib.request
import json
headers = {#'X-Requested-With': 'XMLHttpRequest',
#'Referer': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',
#'Host': 'xueqiu.com',
#'Connection':'keep-alive',
#'Accept':'*/*',
'cookie':'s=iabht2os.1dgjn9z; xq_a_token=; xq_r_token=; __utma=1.2130135756.1433017807.1433017807.1433017807.1;'
'__utmc=1; __utmz=1.1433017807.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); Hm_lvt_=1433017809; Hm_lpvt_=1433017809'}
url = '?cube_symbol=ZH010389&count=20&page=1'
req = urllib.request.Request(url,headers=headers)
html = urllib.request.urlopen(req).read().decode('utf-8')
#print(html)
data = json.loads(html)
print('股票名称',end=':')
print(data['list'][0]['rebalancing_histories'][0]['stock_name'],end=' 持仓变化')
print(data['list'][0]['rebalancing_histories'][0]['prev_weight'],end='-->')
print(data['list'][0]['rebalancing_histories'][0]['target_weight'])
print('股票名称',end=':')
print(data['list'][0]['rebalancing_histories'][1]['stock_name'],end=' 持仓变化')
print(data['list'][0]['rebalancing_histories'][1]['prev_weight'],end='-->')
print(data['list'][0]['rebalancing_histories'][1]['target_weight'])
运行程序~
好嘞!搞定收工!
当然也还不能收工……只是我不干了而已……
To-dos:
可以看到程序是面向过程的…重复代码很多,可以通过定义类或方法实现调用
大概……大概得写点注释……不过这么简单直接无脑面向过程的代码真的需要注释吗
如果是想在他持仓变化时收到提醒,需要爬虫定时爬取页面数据与之前数据进行比较
如果你更细心的话会发现最初的json网址的构成是这样的…cube_symbol='#此处可添加任意组合的号码例如ZH010389'&count=‘#此处数字是一次获取的交易变化数量,也就是说你一次性拿到了20次的交易,你点开之前交易记录的时候并不会重新请求数据而是读取了本地现有的数据此处数据可以任意修改哦~很神奇的试一试吧~20’&page=‘和前面联系起来,前面是一次性获取20条记录,这边便是页码,通过对page数的控制利用循环可以输出所有交易过程,当然,40一页和20两页的效果显然是一样的,看你怎么玩儿了~1’
如果你有耐心看完上面那一大段话的话想必你可以有更多的想法。让别人来指导我们的思路是好的,可是投资的机会稍瞬即逝,跟在别人后面是没有前途的,我们要学习。大数据的时代为什么不试试爬更多人的更多投资记录呢?比如在雪球首页爬取首页推荐的组合,然后自动爬取这些组合所做的所有操作~这样你是不是就有了很厚的一本交易目录,结合过去的股市数据(这些能不能想办法自动获取呢?),你可以自己尝试分析别人作出投资决定的原因(是不是可以把数据自动写入一个excel?提示:xlwt3)…最终指导自己的投资。大数据学习,想想都炫酷。可惜我不炒股…
大概就酱紫~希望有帮助~
写这么多是因为我自己在学爬虫…一周了…看到实践的机会就来试一下…所以是边调BUG边写答案~
大概就写这么多吧…后面的To-dos哪天我突然感兴趣了会试着写一下或者过来补充的…
看到这个答案的…前辈还希望多多指教;看到这个答案的新手…欢迎交流:P
I. 怎么学python爬取财经信息
本程序使用Python 2.7.6编写,扩展了Python自带的HTMLParser,自动根据预设的股票代码列表,从Yahoo Finance抓取列表中的数据日期、股票名称、实时报价、当日变化率、当日最低价、当日最高价。
由于Yahoo Finance的股票页面中的数值都有相应id。
例如纳斯达克100指数ETF(QQQ)
其中实时报价的HTML标记为
[html]view plain
<spanid="yfs_l84_qqq">87.49</span>
而标普500指数ETF(SPY)
其中实时报价的HTML标记为
[html]view plain
<spanid="yfs_l84_spy">187.25</span>
因此本数据抓取程序根据相应的id字符串来查找数据。具体来说就是先继承HTMLParser,然后在自定义的子类中重载handle_data(self, data)方法,查找包含相应id字符串(例如实时报价的id字符串为"yfs_l84_"+股票代码)的HTML标记,并输出这个HTML标记中的数据(例如qqq的<span id="yfs_l84_qqq">87.49</span>,其中的数据87.49就是实时报价。)
样本输出:
数据依次是
数据日期 股票代码 股票名称 实时报价 日变化率 日最低价 日最高价
[python]view plain
05/05/(IBB)233.281.85%225.34233.28
05/05/(SOCL)17.480.17%17.1217.53
05/05/(PNQI)62.610.35%61.4662.74
05/05/2014xsdSPDRS&PSemiconctorETF(XSD)67.150.12%66.2067.41
05/05/2014itaiSharesUSAerospace&Defense(ITA)110.341.15%108.62110.56
05/05/2014iaiiSharesUSBroker-Dealers(IAI)37.42-0.21%36.8637.42
05/05/(VBK)119.97-0.03%118.37120.09
05/05/2014qqqPowerSharesQQQ(QQQ)87.950.53%86.7687.97
05/05/2014ewiiSharesMSCIItalyCapped(EWI)17.86-0.56%17.6517.89
05/05/(DFE)62.33-0.11%61.9462.39
05/05/(PBD)13.030.00%12.9713.05
05/05/(EIRL)38.52-0.16%38.3938.60
J. python用什么方法或者库可以拿到全部股票代码
首先你需要知道哪个网站上有所有股票代码,然后分析这个网站股票代码的存放方式,再利用python写一个爬虫去爬取所有的股票代码