【金融数据接口】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接口

python 复制代码
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:收益率 |

传参细节说明

  1. Fields和Parameter也可以传入list,比如可以用["CLOSE","HIGH","LOW","OPEN"]替代"CLOSE,HIGH,LOW,OPEN";
  2. 获取多个证券数据时,Fields只能选择一个。
  3. 日期支持相对日期宏表达方式,日期宏具体使用方式参考'日期宏'部分内容
  4. options为可选参数,可选参数多个,在参数说明详细罗列。
  5. 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 展示数据时,如果取单个标的数据,以指标为维度进行数据展示, 如果取多个标的数据,只能取单个指标,以标的为维度进行数据展示

示例说明

python 复制代码
# 任取一只国债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)

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

python 复制代码
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

python 复制代码
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()

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

python 复制代码
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则正常

python 复制代码
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

相关推荐
天晟科技7 小时前
GameFi的前景:游戏与金融的未来交汇点
游戏·金融·区块链
张彦峰ZYF14 小时前
投资策略规划最优决策分析
分布式·算法·金融
QQ395753323714 小时前
金融量化交易模型的突破与前景分析
人工智能·金融
QQ395753323714 小时前
金融量化交易:技术突破与模型优化
人工智能·金融
成长之路51414 小时前
中国省级金融发展水平指数(金融机构存款余额、贷款余额、GDP)2020-2023年
金融
uncle_ll17 小时前
金融科技白皮书:2022-2023年度回顾与前瞻
科技·金融
Hotchip华芯邦科技2 天前
MEMS硅麦克风应用电子烟雾化产业稳步爬升,耐高温、 防油、防酸、防腐蚀等性能优势和可实现自动化贴片及极高的一致性等特性使其必将成为主流
科技·单片机·金融·生活·社交电子·健康医疗·制造
gooxi_hui2 天前
Gooxi受邀参加海通证券AI+应用生态大会,助力数智金融高质量发展
人工智能·金融
君臣Andy2 天前
金融量化框架选择
金融
AIGC方案2 天前
免费下载 | 2024年金融数字化转型白皮书
金融