使用Wind开放应用接口,可以轻松获取各种金融数据、快速开发个性化应用、构建量化投资平台、实现自动化生成报表、监控市场行情,或者将Wind数据服务与自有系统完美集成。
http://www.dajiangzhang.com/document
个人做股票研究最难得的是数据源的获取,除了从各大财经网站爬取数据外,从各大财经数据供应商提供的相关接口爬取或者下载,效率更高,数据质量也更有保证。
Wind终端一直是国内投资领域机构投资者必备的工具,但是对小散来说每年动辄几万至几十万不等的费用往往令我们望而却步。好不容易在大奖章网站找到了Wind量化接口个人版 API接口,虽说没有Wind终端完整的功能,但是从基础数据质量和接口易学程度讲,都要方便很多。
很早之前研究过,一直搁置了,这两天重新捡起来完善后,效率果然比从财经网站爬取数据效率高很多。 话不多说,分享下这两天研究的成果。
首先从大奖章网站下载wind量化接口个人版(免费,这点很难得),根据提示安装、注册,然后就可以快乐的玩耍了。
API 接口插件(无需安装Wind终端)及文档:
http://www.dajiangzhang.com/document
下面上代码,已在代码中作了注释,供需要的朋友参考。
每周get一个小技能,一年后也必是收获满满啊,新年加油!
Python代码:(后续持续完善,目标是搭建一个本地的量化投资数据库)
# -*- coding:utf-8 -*-
####################################################################################################################
'''
程序:Wind股票数据下载
功能:从Wind终端或者Wind资讯量化接口个人免费版中下载股票相关数据,保存至本地MySQL数据库,以进一步加工处理和分析
创建时间:2016/01/15 V1.01 创建版本,Python2.7
更新历史:2017/01/06 V1.02 从本地文件读取股票代码列表;升级到Python3.5版本
2017/01/07 V1.03 封装为函数,便于调试和代码管理
2017/01/08 V1.04 封装为类,为后续完善功能准备。自动从Wind中获取股票列表,独立运行;增加日志和参数处理
环境和类库:使用Python 3.5及第三方库pandas、WindPy、sqlalchemy
数据库:MySQL 5.7.16
Wind资讯量化接口 个人版(免费),可从Wind官网或大奖章网站下载安装,注册即可使用
作者:yuzhucu
'''
####################################################################################################################
import pandas as pd
from WindPy import *
from sqlalchemy import create_engine
import datetime,time
import os
class WindStock():
def getCurrentTime(self):
# 获取当前时间
return time.strftime('[%Y-%m-%d %H:%M:%S]', time.localtime(time.time()))
def AStockHisData(self,symbols,start_date,end_date,step=0):
'''
逐个股票代码查询行情数据
wsd代码可以借助 WindNavigator自动生成copy即可使用;时间参数不设,默认取当前日期,可能是非交易日没数据;
只有一个时间参数时,默认作为为起始时间,结束时间默认为当前日期;如设置两个时间参数则依次为起止时间
'''
print(self.getCurrentTime(),": Download A Stock Starting:")
for symbol in symbols:
w.start()
try:
#stock=w.wsd(symbol,'trade_code,open,high,low,close,volume,amt',start_date,end_date)
'''
wsd代码可以借助 WindNavigator自动生成copy即可使用;
时间参数不设,默认取当前日期,可能是非交易日没数据;
只有一个时间参数,默认为起始时间到最新;如设置两个时间参数则依次为起止时间
'''
stock=w.wsd(symbol, "trade_code,open,high,low,close,pre_close,volume,amt,dealnum,chg,pct_chg,vwap, adjfactor,close2,turn,free_turn,oi,oi_chg,pre_settle,settle,chg_settlement,pct_chg_settlement, lastradeday_s,last_trade_day,rel_ipo_chg,rel_ipo_pct_chg,susp_reason,close3, pe_ttm,val_pe_deducted_ttm,pe_lyr,pb_lf,ps_ttm,ps_lyr,dividendyield2,ev,mkt_cap_ard,pb_mrq,pcf_ocf_ttm,pcf_ncf_ttm,pcf_ocflyr,pcf_nflyr,trade_status", start_date,end_date)
index_data = pd.DataFrame()
index_data['trade_date']=stock.Times
stock.Data[0]=symbol
index_data['stock_code