365体育网页版在线登录官网-365平台被黑不给出款怎么办-beat365为什么登录不了

深度阅读体验

365体育网页版在线登录官网

【金融数据接口】wind数据python使用教程

目录 (1)接口手册 (2)包安装与接口调用 (3)常用接口 A.获取k线数据(wsd) 参数说明 集成在options中的参数 传参细节说明 返回说明 示例说明

【金融数据接口】wind数据python使用教程

目录

(1)接口手册

(2)包安装与接口调用

(3)常用接口

A.获取k线数据(wsd)

参数说明

集成在options中的参数

传参细节说明

返回说明

示例说明

B.获取实时行情数据(wsq)

C.获证券代码(wset)

代码获取方法

获取期货品种代码

获取股票、债券和期权代码

(4)判断wind是否在运行以及获取数据是否正常

(1)接口手册

wind客户端接口手册获取

旧版:登录wind → 量化 → API接口 → Python → 接口手册新版:登录wind → 发现 → Client API → Python → 接口手册代码生成器:登录wind → 发现 → 代码生成器C接口文档:3. 获取日时间序列函数w.wsd · Wind C#接口 · 看云

(2)包安装与接口启动

1.安装

安装python打开wind,点击“我的/插件修复”选项,出现下方的界面,点击“修复Python接口”,会弹出接口的相关说明

2.调用

首先,用户必须加载WindPy,然后执行w.start()启动API接口

from WindPy import w

#w.start() # 默认命令超时时间为120秒

w.start(waitTime = 60)

# 如需设置超时时间可以加入waitTime参数,例如waitTime=60,即设置命令超时时间为60秒

result = w.isconnected() # 判断WindPy是否已经登录成功

print(result) # True

w.stop()

# 当需要停止WindPy时,可以使用该命令

# w.start不重复启动,若需要改变参数,如超时时间,用户可以使用w.stop命令先停止后再启动。

# 退出时,会自动执行w.stop(),一般用户并不需要执行w.stop

# 需要注意的是,程序退出时会自动执行w.stop(),因此一般用户并不需要执行w.stop()

(3)常用接口

A.获取k线数据(wsd)

w.wsd(codes, fields, beginTime, endTime, options)

支持股票、债券、基金、期货、指数等多种证券的基本资料、股东信息、市场行情、证券分析、预测评级、财务数据等各种数据。wsd可以支持取 多品种单指标 或者 单品种多指标 的时间序列数据。

参数说明

参数

类型

可选

默认值

说明

codes

str或list

证券代码,支持获取单品种或多品种,如“600030.SH”或[“600010.SH”,“000001.SZ”]

fields

str或list

指标列表,支持获取单指标或多指标,,如“CLOSE,HIGH,LOW,OPEN”

beginTime

str或datetime

endTime

起始日期,为空默认为截止日期,如: "2016-01-01"、“20160101”、“2016/01/01”、"-5D"(当前日期前推5个交易日)、datetime/date类型

endTime

str或datetime

系统当前日期

如: "2016-01-05"、“20160105”、“2016/01/05”、"-2D"(当前日期前推2个交易日) 、datetime/date类型

options

str

“”

options以字符串的形式集成多个参数,具体见代码生成器。如无相关参数设置,可以不给option赋值或者使用options=""

以分号分割,比如"returnType=1;PriceAdj=CP"

集成在options中的参数

参数

类型

可选

默认值

说明

Days

str

'Trading'

日期选项,参数值含义如下:

Weekdays: 工作日,

Alldays: 日历日,

Trading: 交易日

Fill

str

'Blank'

空值填充方式。参数值含义如下:

Previous:沿用前值,

Blank:返回空值

如需选择自设数值填充,在options添加“ShowBlank=X", 其中X为自设数。

Order

str

'A'

日期排序,“A”:升序,“D”:降序

Period

str

'D'

取值周期。参数值含义如下:

D:天,

W:周,

M:月,

Q:季度,

S:半年,

Y:年

TradingCalendar

str

'SSE'

交易日对应的交易所。参数值含义如下:

SSE :上海证券交易所,

SZSE:深圳证券交易所,

CFFE:中金所,

TWSE:台湾证券交易所,

DCE:大商所,

NYSE:纽约证券交易所,

CZCE:郑商所,

COMEX:纽约金属交易所,

SHFE:上期所,

NYBOT:纽约期货交易所,

HKEX:香港交易所,

CME:芝加哥商业交易所,

Nasdaq:纳斯达克证券交易所,

NYMEX:纽约商品交易所,

CBOT:芝加哥商品交易所,

LME:伦敦金属交易所,

IPE:伦敦国际石油交易所

Currency

str

'Original'

输入币种。参数值含义如下:

Original:“原始货币”,

HKD:“港币”,

USD:“美元”,

CNY:“人民币”

PriceAdj

str

不复权

股票和基金(复权方式)。参数值含义如下:

F:前复权,

B:后复权,

T:定点复权;债券(价格类型)

CP:净价,

DP:全价,

MP:市价,

YTM:收益率

传参细节说明

Fields和Parameter也可以传入list,比如可以用[“CLOSE”,“HIGH”,“LOW”,“OPEN”]替代“CLOSE,HIGH,LOW,OPEN”;获取多个证券数据时,Fields只能选择一个。日期支持相对日期宏表达方式,日期宏具体使用方式参考'日期宏’部分内容options为可选参数,可选参数多个,在参数说明详细罗列。wsd函数支持输出DataFrame数据格式,需要函数添加参数usedf=True,可以使用usedfdt=True来填充DataFrame输出NaT的日期。

fields常见指标

open:开盘价high:当日最高价low:当日最低价close:当日收盘价pre_close:昨日收盘价volume:当日成交量amt:即amount,成交金额dealnum:下单量chg:涨跌额pct_chg:涨跌幅vwap:成交量加权平均价trade_status:交易状态turn:换手率free_turn:自由股换手率rel_ipo_chg:相较于首次公开发行时的涨跌额rel_ipo_pct_chg:相较于首次公开发行时的涨跌幅度pe_ttm:Price earnings ratio,市盈率。TTM:Trailing Twelve Months,即消除季节等时序因素的影响pe_lyr:LYR:Last Year Ratio。即以当前总市值,除以去年一年的总净润,表示静态市盈率pb_lf:Price-to-Book Ratio,市净率。表示每股股价除以每股净资产;LF:Last File,表示每股净资产应该使用最新公告中的数据ps_lyr:Price-to-Sales Ratio,市销率。ev:Enterprise Value,即总市值pcf_ocf_ttm:Price Cash Flow Ratio 市现率; Operating Cash Flow,经营现金流trade_status:交易状态

返回说明

如果不指定usedf=True,该函数将返回一个WindData对象,包含以下成员:

返回码

解释

说明

ErrorCode

错误ID

返回代码运行错误码,.ErrorCode =0表示代码运行正常。

若为其他则需查找错误原因.

Data

数据列表

返回函数获取的数据

比如读取000592.SZ的close指标从'2017-05-08'到'2017-05-18'区间的数据

返回值为.Data=[[5.12,5.16,5.02,4.9,4.91,5.13,5.35,5.42,5.32],[5.3,5.12,5.17,4.98,4.94,4.93,5.1,5.4,5.4]]

Codes

证券代码列表

返回获取数据的证券代码列表.Codes=[000592.SZ]

Field

指标列表

返回获取数据的指标列表.Fields=[CLOSE]

Times

时间列表

返回获取数据的日期序列.Times=[20170508,20170509,20170510,20170511,20170512,20170515,20170516, 20170517,20170518]

注:以DataFrame 展示数据时,如果取单个标的数据,以指标为维度进行数据展示, 如果取多个标的数据,只能取单个指标,以标的为维度进行数据展示

示例说明

# 任取一只国债010107.SH六月份以来的净值历史行情数据

column_names = "sec_name,ytm_b,volume,duration,convexity,open,high,low,close,vwap"

history_data = w.wsd("010107.SH",

column_names,

"2018-06-01", "2018-06-11",

"returnType=1;PriceAdj=CP",

usedf=True)

# returnType表示到期收益率计算方法,PriceAdj表示债券价格类型‘

history_data[1].head()

B.获取实时行情数据(wsq)

用这个接口获取实时数据的下载量是有限制的,超过一定量就要额外收费

from WindPy import w

w.start()

data = w.wsq("000920.SZ, 002573.SZ",

"rt_last, rt_open, rt_low, rt_last_vol, rt_high, rt_pre_close",

func="DemoWSQCallback")

'''

rt_last: 最新实时价格

rt_open: 今日开盘价

rt_low: 开盘到当前时间之间的最低价

rt_last_vol: 开盘到当前时间之间的成交量

rt_high: 开盘到当前时间之间的最高价

rt_pre_close: 前一日收盘价

'''

print(data)

'''

.ErrorCode=0

.Codes=[000920.SZ,002573.SZ]

.Fields=[RT_LAST,RT_OPEN,RT_LOW,RT_LAST_VOL,RT_HIGH,RT_PRE_CLOSE]

.Times=[20221107 14:01:42]

.Data=[

[10.15,6.390000000000001],

[10.15,5.92],

[10.15,5.86],

[1200.0,200.0],

[10.15,6.390000000000001],

[9.23,5.8100000000000005]

]

'''

print(data.Data)

C.获取证券代码(wset)

代码获取方法

wind客户端首页→代码生成器→数据集WSET→板块与指数→板块成分

→ 在坐标(sectorID,编辑)处进行板块选择期货 → 选某个交易所 → 选择全部品种

获取期货品种代码

download_future_codeList.py

from WindPy import w

w.start()

import datetime as dt

def main():

today = dt.datetime.now().strftime(("%Y-%m-%d"))

# print(type(today), today)

# 如果当天非交易日,则不下载数据

pass

savepath = "./Instruments.csv"

writefile = open(savepath, "w")

# (1)下载中金所期货合约代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a599010101000000")

# print(result)

data = result.Data

# print(data)

# print(data[1])

for item in data[1]:

code = item.split(".")[0]

writefile.write(code + ",CFFEX\n")

# (2)下载上期所

result = w.wset("sectorconstituent", f"date={today};sectorid=a599010201000000")

data = result.Data

# print(data)

# print(data[1])

for item in data[1]:

code = item.split(".")[0].lower()

writefile.write(code + ",SHFE\n")

# (3)下载上海能源中心

result = w.wset("sectorconstituent", f"date={today};sectorid=1000041395000000")

data = result.Data

# print(data)

for item in data[1]:

code = item.split(".")[0].lower()

writefile.write(code + ",INE\n")

# (4)下载大商所

result = w.wset("sectorconstituent", f"date={today};sectorid=a599010301000000")

data = result.Data

for item in data[1]:

code = item.split(".")[0].lower()

writefile.write(code + ",DCE\n")

# (5)下载郑商所

result = w.wset("sectorconstituent", f"date={today};sectorid=a599010401000000")

data = result.Data

# print(data)

for item in data[1]:

code = item.split(".")[0]

writefile.write(code + ",CZCE\n")

# (6)下载广州所

result = w.wset("sectorconstituent", f"date={today};sectorid=1000046789000000")

data = result.Data

# print(data)

for item in data[1]:

code = item.split(".")[0].lower()

writefile.write(code + ",GFE\n")

writefile.close()

if __name__ == "__main__":

main()

获取股票、债券和期权代码

import datetime as dt

from WindPy import w

w.start()

def is_connect_wind():

# 检测wind是否在运行

# 返回True或者False

return w.isconnected()

def save_data(data_list, save_path):

"""

data_list: 数据,元素为"601669.SSE"这样

save_path: 保存路径

"""

if len(data_list) > 0:

writefile = open(save_path, "w")

for code in data_list:

writefile.write(code + "\n")

writefile.close()

def get_stock_code_wind():

"""

获取wind股票代码

"""

# 当日日期

today = dt.datetime.now().strftime("%Y-%m-%d")

# 调用wind接口获取全部A股代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a001010100000000")

stock_code_list = []

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# 判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 or item.find("SH") != -1:

stock_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# 若未成功获取数据,则返回空列表

if len(stock_code_list) > 0:

return stock_code_list

else:

return []

def get_index_code_wind():

"""

获取wind指数代码

"""

# 当日日期

today = dt.datetime.now().strftime("%Y-%m-%d")

# 调用wind接口获取全部指数代码

index_code_list = []

# a.调用wind接口获取上证系列指数代码

result = w.wset("sectorconstituent", f"date={today};sectorid=1000002442000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# [3]判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 and len(item) == 9:

index_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

index_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# b.调用wind接口获取中证系列指数代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a399010104000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# 判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 and len(item) == 9:

index_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

index_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# c.调用wind接口获取深证系列指数代码

result = w.wset("sectorconstituent", f"date={today};sectorid=1000003626000000")

# [2]判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# [3]判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1and len(item) == 9:

index_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

index_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# 若未成功获取数据,则返回空列表

if len(index_code_list) > 0:

return index_code_list

else:

return []

def get_bond_code_wind():

"""

获取wind债券代码,含可转债

"""

# 当日日期

today = dt.datetime.now().strftime("%Y-%m-%d")

# 调用wind接口获取全部债券代码

bond_code_list = []

# a.调用wind接口获取上交所债券代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a101010200000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# [3]判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 and len(item) == 9:

bond_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

bond_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# b.调用wind接口获取深交所债券代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a101010300000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# 判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 and len(item) == 9:

bond_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

bond_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# 若未成功获取数据,则返回空列表

if len(bond_code_list) > 0:

return bond_code_list

else:

return []

def get_convert_bond_code_wind():

"""

获取wind可转债代码

"""

# 当日日期

today = dt.datetime.now().strftime("%Y-%m-%d")

# 调用wind接口获取全部可转债券代码

convert_bond_code_list = []

# a.调用wind接口获取上交所可转债券代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a101010206000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# [3]判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 and len(item) == 9:

convert_bond_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

convert_bond_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# b.调用wind接口获取深交所可转债券代码

result = w.wset("sectorconstituent", f"date={today};sectorid=a101010306000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# 判断数据是否为空

if len(data) > 0:

for item in data[1]:

# print(item)

if item.find("SZ") != -1 and len(item) == 9:

convert_bond_code_list.append(item)

elif item.find("SH") != -1 and len(item) == 9:

convert_bond_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# 若未成功获取数据,则返回空列表

if len(convert_bond_code_list) > 0:

return convert_bond_code_list

else:

return []

def get_stock_option_code_wind():

"""

获取wind股票期权代码

"""

# 当日日期

today = dt.datetime.now().strftime("%Y-%m-%d")

# 调用wind接口获取全部期权代码

stock_option_code_list = []

# a.调用wind接口获取上交所期权代码

result = w.wset("sectorconstituent", f"date={today};sectorid=1000018859000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# [3]判断数据是否为空

if len(data) > 0:

# print(data)

for item in data[1]:

# print(item)

if item.find("SZ") != -1:

stock_option_code_list.append(item)

elif item.find("SH") != -1:

stock_option_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# b.调用wind接口获取深交所期权代码

result = w.wset("sectorconstituent", f"date={today};sectorid=1000034419000000")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# 判断数据是否为空

if len(data) > 0:

# print(data)

for item in data[1]:

# print(item)

if item.find("SZ") != -1:

stock_option_code_list.append(item)

elif item.find("SH") != -1:

stock_option_code_list.append(item)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# 若未成功获取数据,则返回空列表

if len(stock_option_code_list) > 0:

return stock_option_code_list

else:

return []

def get_future_option_code_wind():

"""

获取wind期货期权代码

"""

# 当日日期

today = dt.datetime.now().strftime("%Y-%m-%d")

# 调用wind接口获取全部期权代码

future_option_code_list = []

exchange_list = [

["1000034440000000", "中金所"],

["1000021571000000", "上期所"],

["1000041406000000", "上期能源"],

["1000033252000000", "大商所"],

["1000016058000000", "郑商所"],

["1000046211000000", "广期所"]

]

# 调用wind接口获取期权代码

for i in range(len(exchange_list)):

sectorid = exchange_list[i][0]

exchange = exchange_list[i][1]

result = w.wset("sectorconstituent", f"date={today};sectorid={sectorid}")

# 判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# [3]判断数据是否为空

if len(data) > 0:

# print(data)

for item in data[1]:

# print(item)

temp_list = item.split(".")

suffix = "."

if exchange == "中金所":

suffix += "CFE"

elif exchange == "上期所":

suffix += "SFE"

elif exchange == "上期能源":

suffix += "INE"

elif exchange == "大商所":

suffix += "DCE"

elif exchange == "郑商所":

suffix += "ZCE"

elif exchange == "广期所":

suffix += "GFE"

code = temp_list[0] + suffix

future_option_code_list.append(code)

else:

# print("len(result.Data) == 0")

return []

else:

# print("result.ErrorCode != 0, exist error")

return []

# 若未成功获取数据,则返回空列表

if len(future_option_code_list) > 0:

return future_option_code_list

else:

return []

(4)判断wind是否在运行以及获取数据是否正常

是否连接成功:w.isconnected(),值为True则正常

获取数据是否正常:result.ErrorCode,值为0则正常

from WindPy import w

import datetime as dt

import shutil

import os

w.start()

def download_future_code_wind(save_path):

# 当日日期

today = dt.datetime.now().strftime(("%Y-%m-%d"))

# print(type(today), today)

# 如果当天非交易日,则不下载数据

pass

# 备份之前生成的文件

if os.path.exists(save_path):

temp_list = save_path.split(".")

bakeup_path = temp_list[0] + "_bakeup." + temp_list[1]

shutil.copyfile(save_path, bakeup_path)

is_get_wind_data = True # 是否成功获取到wind数据

while True:

writefile = open(save_path, "w")

# 下载中金所期货合约代码

result = w.wset("sectorconstituent",

f"date={today};sectorid=a599010101000000")

# 2.判断代码运行是否正常

if result.ErrorCode == 0:

# print(result)

data = result.Data

# print(data)

# print(data[1])

# 3.判断数据是否为空

if len(data) > 0:

for item in data[1]:

code = item.split(".")[0]

writefile.write(code + ",CFFEX\n")

else:

is_get_wind_data = False

break

else:

is_get_wind_data = False

break

writefile.close()

break

# 若未成功获取数据,则用备份的那个文件替换保存文件

if not is_get_wind_data:

print("无法获取到wind数据")

if os.path.exists(save_path):

os.remove(save_path)

temp_list = save_path.split(".")

bakeup_path = temp_list[0] + "_bakeup." + temp_list[1]

if os.path.exists(bakeup_path):

shutil.copyfile(bakeup_path, save_path)

if __name__ == "__main__":

# 要检测wind是否正在运行,还要检测以及能否获取到数据

# 1.检测wind是否在运行

is_connect_wind = w.isconnected()

print(f"is_connect_wind={is_connect_wind}")

if is_connect_wind:

print("use wind to get future codeList")

savepath = "./Instruments.csv"

download_future_code_wind(savepath)

end

相关阅读

365体育网页版在线登录官网 幻想计划角色武器大全 初始角色武器推荐

幻想计划角色武器大全 初始角色武器推荐

幻想计划角色武器大全,在游戏中角色还是很多的,那么新手要选择哪个比较好呢?初始有哪些是值得培养的呢?下面就一起来看一下吧。 清光