python金融分析小知识(27)——如何通过python连接Wind(万得)数据库

Posted 君子以自强不息python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python金融分析小知识(27)——如何通过python连接Wind(万得)数据库相关的知识,希望对你有一定的参考价值。

Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助!

今天要个大家讲的是一个十分重要的知识,在我们平时的工作中肯定会经常用到Wind数据库,大家应该都知道Wind数据库有一个excel插件可以使用,大家可以通过excel插件的相关功能来提取Wind数据库的数据:

但是在我平时使用的过程中,我更喜欢用python的强大的数据处理能力,所以我会通过python去获取Wind数据库的数据,今天我就给大家介绍如何通过python连接Wind数据库。

1. 修复python接口

首先我们通过Wind金融终端的界面,里面选择修复python接口,这样接下来我们就可以连接Wind数据库啦!

 

2.通过python连接Wind数据库 

我们首先需要导入相关的包,代码如下:

## 连接Wind接口
import pandas as pd 
from WindPy import w
w.start()

连接成功后,会打印出如下语句,如果你不是下面的情况,有可能是因为你的Wind没有python接口的权限:

 

3.代码生成器的使用 

在第二步连接上Wind数据库后,我们就可以写语句来获取Wind中的数据啦!我们都知道对于不同的平台这种API语句有很大的不同,在这里大家不用去学Wind的API语句,因为我们有一个神器:代码生成器

 

在进入代码生成器后是这样的页面:

 

这个时候我们可以像使用Wind的excel插件一样,在红色框区域内选择自己想要看的标的、想要看的指标等等,这里就不加赘述了。

在这里我举个例子,我来获取融资融券交易金额、万得全A(除科创板)成交额以及上证综指,我们通过代码生成器可以获得如下的获取数据的语句,请注意以下语句是通过代码生成器生成的:

## 获取融资融券交易金额
data = w.edb("M0075989", "2013-01-04", "2022-05-31","Fill=Previous")

## 获取万得全A(除科创板)成交额 单位元
data2 = w.wsd("881008.WI", "amt", "2013-01-04", "2022-05-30", "")

## 获取上证综指
data3 = w.edb("M0020188", "2013-01-04", "2022-05-31","Fill=Previous")

4.整理获取的数据 

我计算了每日融资融券交易金额占比万得全A成交额,代码如下,这里有一点需要注意:就是通过Wind获取得到的数据形式并不是一个常见的DataFrame形式,所以我们需要将其稍微进行转化一下:

## 获取融资融券交易金额
data = w.edb("M0075989", "2013-01-04", "2022-05-31","Fill=Previous")
df = pd.DataFrame(data=data.Data[0],index=data.Times,columns=['融资融券交易金额'])
## 获取万得全A(除科创板)成交额 单位元
data2 = w.wsd("881008.WI", "amt", "2013-01-04", "2022-05-30", "")
df2 = pd.DataFrame(data=data2.Data[0], index=data2.Times,columns=['万得全A(除科创板)成交额'])
df2 = df2['万得全A(除科创板)成交额'] / 100000000
result = pd.merge(df,df2,left_index=True,right_index=True)
result['融资融券交易金额占比万得全A成交额'] = result['融资融券交易金额'] / result['万得全A(除科创板)成交额']
## 获取上证综指
data3 = w.edb("M0020188", "2013-01-04", "2022-05-31","Fill=Previous")
df3 = pd.DataFrame(data=data3.Data[0],index=data3.Times,columns=['上证综合指数'])
## 组合数据
result = pd.merge(result,df3,left_index=True,right_index=True)
result

我们来看看结果:

 

5.可视化展示 

接下来我们将每日融资融券交易金额占比万得全A成交额进行可视化展示,并同时画出上证综指:

## 绘图
import matplotlib.pyplot as plt
%config InlineBackend.figure_format = 'retina'
plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
fig, ax = plt.subplots(figsize = (14,6))
ax.plot(result.index, result['融资融券交易金额占比万得全A成交额'], label = '融资融券交易金额占比万得全A成交额', color = 'firebrick')
ax.axhline(y=0.12,linestyle='--',color = 'firebrick', lw = 2.5)
ax.axhline(y=0.06,linestyle='--',color = 'firebrick', lw = 2.5)
ax2 = ax.twinx()
ax2.plot(result['上证综合指数'], label = '上证综合指数', color = 'darkorange')
lines_1, labels_1 = ax.get_legend_handles_labels()
lines_2, labels_2 = ax2.get_legend_handles_labels()
lines = lines_1 + lines_2
labels = labels_1 + labels_2
ax2.legend(lines, labels, loc='best', frameon=False)

效果如下图:

 

好啦今天的文章就分享到这里! 

 

 

 

 

python中的金融技术分析[关闭]

【中文标题】python中的金融技术分析[关闭]【英文标题】:Financial technical analysis in python [closed] 【发布时间】:2011-05-23 07:57:41 【问题描述】:

你知道python有没有可用的金融技术分析模块?需要为一个项目计算RSI、EMA、DEMA等各种指标

【问题讨论】:

【参考方案1】:

这里有一些想法...我只使用 Numpy、Scipy 和 Matplotlib 进行财务计算。

py-fi - 非常基本的财务功能 fin2py - 金融工具 Numpy/Scipy - 涵盖所有统计基础知识 Matplotlib - 绘制财务函数 RPy - R 的 Python 接口,允许使用 R 库 ystockquote - 雅虎的 Python API!股票数据 QuantLib - 开源库(据说有 Python 绑定) PyFinancial - 西班牙语文档 PyMacLab - “一系列有助于开展动态宏观经济学研究的课程” TSDB - 用于存储大量时间序列数据 PyVol - 金融时间序列的波动率估计

【讨论】:

在谷歌上遇到了这个问题。下面的 github 链接还列出了许多有用的库/工具,包括 Python:github.com/wilsonfreitas/awesome-quant【参考方案2】:

TA-Lib - 指标库。 How to compile for Python

【讨论】:

您可能还会发现这个TA-Lib python wrapper 很有用。 克里斯托,感谢您的反馈! 对于windows用户,我推荐使用compiled binary of the TA-Lib python wrapper而不是通过依赖地狱。【参考方案3】:

Coursera.org 上还有一个Computational Finnance Course。

他们使用名为 QSTK (QuantSoftware ToolKit) 的 Python 开源库。 他们在 wiki 页面上有一堆 tutorials,你可以随时参加课程 如果您想了解更多信息。

为方便起见,我从下面的 wiki 页面复制了描述:

QSToolKit (QSTK) 是一个基于 Python 的开源软件框架 旨在支持投资组合的构建和管理。我们是 主要为金融专业的学生构建 QSToolKit,计算 学生和具有编程经验的定量分析师。你 不应期望将其用作桌面应用程序交易平台。 相反,将其视为支持 建模、测试和交易的工作流程。

Scroll through the Gallery to see the sorts of things you can do easily with QSTK.
If you are in a hurry, you can skip to the QSToolKit_Installation_Guide. 

QSTK 的关键组件是:

- Data: A data access package that enables fast reading of 
  historical data (qstkutil.DataAccess).
- Processing tools: Uses pandas, a Python package designed for time series 
  evaluation of equity data.
- Portfolio optimization: Using the CVXOPT library.
- Event studies: An efficient event analyzer, Event_Profiler.
- Simulation: A simple backtester, quicksim, 
  that includes transaction cost modeling.

【讨论】:

【参考方案4】:

您可能会发现这个技术指标库很有用。该库的工作方式类似于著名的 ta-lib 库,并且包含未在 talib 中实现的指标

talibextensions

例如,您可以通过以下方式发送最高价和最低价向量以及句点数来使用最高最高价、最低最低价指标:(从存储库中的测试中提取)

    from indicators import TalibExtension
    hhllMatrix = TalibExtension.HHLL(self.high, self.low, 5);

【讨论】:

以上是关于python金融分析小知识(27)——如何通过python连接Wind(万得)数据库的主要内容,如果未能解决你的问题,请参考以下文章

python中的金融技术分析[关闭]

大数据项目实战之Python金融应用编程(数据分析定价与量化投资)

如何分析 Kivy 应用程序?

游戏付费中的金融学和心理学小知识

游戏付费中的金融学和心理学小知识

游戏付费中的金融学和心理学小知识