Python量化交易,轻松获取股市每日龙虎榜详情数据

炒股的朋友,应该都知道股市龙虎榜数据,龙虎榜数据是沪深交易两个市场中,每日两市中涨跌幅、换手率,振幅等的前几名股票排行,我们也可以看到龙虎榜单中的股票在哪个证券营业部的成交量较大。

从这些数据,我们有助于我们分析股票的异动。比如,一只表现平平的股票,突然某一天换手率排行出现在龙虎榜,股票出现异动,那么未来应该有一波行情,我们就可以将这只股票纳入自选股参考。

此外,我们收集历史龙虎榜的证券营业部的净买入和净卖出席位,统计这些数据后进行分析,可以形成对证券营业部的跟踪策略。例如某个营业部的出现在龙虎榜净多头排行上后,该只股票随后几天就有表现,那么我们可以跟踪该营业部,跟随其进行适当操作。

龙虎榜数据,还有很多用途,我们这里先不做深究,后续可以慢慢研究。我们今天先来看下,如何获取每日龙虎榜详情数据,获得龙虎榜数据的其中一种。

首先,我们看下进入龙虎榜数据。

在沪深证券交易所,具备以下任一条件的股票即可:

  • 日价格涨幅偏离值±7%
  • 日换手率达到20%
  • 日价格振幅达到15%
  • 连续三个交易日内,涨幅偏离值累计达到20%

以上4个条件中,每个条件都选前3名的上榜,深市是分主板、中小板、创业板分别取前3的。

下面,我们来仔细看看,如何用python,利用tushare包来获取这个数据。

导入python依赖

安装python后,我们需要安装三个依赖:tushare,pandas,sqlalchemy

安装完成后import下面几个包:

<code>from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Numeric
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
import tushare as ts/<code>

tushare获取数据

我们先用tushare获取数据,tushare提供了获取龙虎榜的数据,接口调用需要指定日期,这里我们拆开2020年3月25号的数据,我们调用接口并返回打印出返回的数据字段:

<code>data = ts.top_list('2020-03-24')
print(data)/<code>

返回数据如下:

Python量化交易,轻松获取股市每日龙虎榜详情数据

龙虎榜数据详情

返回的字段及其含义如下:

code:代码

name:名称

pchange:当日涨跌幅

amount:龙虎榜成交额(万)

buy:买入额(万)

bratio:买入占总成交比例

sell:卖出额(万)

sratio:卖出占总成交比例

reason:上榜原因

date:日期

下载数据并存入mysql数据库

我们通过接口下载数据后,要将数据存入mysql数据库,我们采用追加入库的方式进行存储,表名为:top_list

<code>engine = create_engine('mysql://root:[email protected]:3306/tushare?charset=utf8')
data.to_sql('top_list', engine, if_exists='append')/<code>

入库完成后,我们打开数据库表查看数据:

Python量化交易,轻松获取股市每日龙虎榜详情数据

2020年3月26日 龙虎榜数据详情

我们可以看到数据已经入库。我们分析这些数据可以看到,有几种包括:

  • 日振幅值达到15%的前五只证券
  • ST、*ST和S证券连续三个交易日内收盘价格跌幅偏离值累计达到15%的证券
  • 日涨幅偏离值达到7%的前五只证券
  • 连续三个交易日内,跌幅偏离值累计达到20%的证券
  • ……

根据条件查询龙虎榜数据

我们根据上面返回的字段,定义一个实体类来承接返回的数据。

<code>class TopList(Base):
__tablename__ = 'top_list'
index = Column(Integer, primary_key=True)
code = Column(Integer)
name = Column(String(120))
pchange = Column(String(120))
amount = Column(String(120))
buy = Column(String(120))
sell = Column(String(120))
reason = Column(String(120))
bratio = Column(String(120))
sratio = Column(String(120))
date = Column(String(120))/<code>

根据过滤条件查询数据,我们根据上榜原因查出我们所需要的数据,我们选择上榜原因:

【连续三个交易日内,跌幅偏离值累计达到20%的证券】

通过filter过滤条件查询我们所需要的数据,并在控制台打印出来。

<code>Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
def prn_obj(obj):
for v in obj:
print('\\n'.join(['%s:【%s】' % item for item in v.__dict__.items()]))
lists = session.query(TopList).filter(TopList.reason == "连续三个交易日内,涨幅偏离值累计达到20%的证券").all()
prn_obj(lists)/<code>

看控制台输出,根据我们需要的条件,输出对应的股票的龙虎榜信息:

Python量化交易,轻松获取股市每日龙虎榜详情数据

条件过滤查询


以上就是我们今天讲的量化交易的一部分,获取股票龙虎榜数据,并存入mysql数据库进行过滤查询。

欢迎关注我,大操手量投化投资,一起学习量化交易知识!带你从小白到大神!


分享到:


相關文章: