赞
踩
炒股的朋友,应该都知道股市龙虎榜数据,龙虎榜数据是沪深交易两个市场中,每日两市中涨跌幅、换手率,振幅等的前几名股票排行,我们也可以看到龙虎榜单中的股票在哪个证券营业部的成交量较大。
从这些数据,我们有助于我们分析股票的异动。比如,一只表现平平的股票,突然某一天换手率排行出现在龙虎榜,股票出现异动,那么未来应该有一波行情,我们就可以将这只股票纳入自选股参考。
此外,我们收集历史龙虎榜的证券营业部的净买入和净卖出席位,统计这些数据后进行分析,可以形成对证券营业部的跟踪策略。例如某个营业部的出现在龙虎榜净多头排行上后,该只股票随后几天就有表现,那么我们可以跟踪该营业部,跟随其进行适当操作。
龙虎榜数据,还有很多用途,我们这里先不做深究,后续可以慢慢研究。我们今天先来看下,如何获取每日龙虎榜详情数据,获得龙虎榜数据的其中一种。
首先,我们看下进入龙虎榜数据。
在沪深证券交易所,具备以下任一条件的股票即可:
日价格涨幅偏离值±7%
日换手率达到20%
日价格振幅达到15%
连续三个交易日内,涨幅偏离值累计达到20%
以上4个条件中,每个条件都选前3名的上榜,深市是分主板、中小板、创业板分别取前3的。
下面,我们来仔细看看,如何用python,利用tushare包来获取这个数据。
导入python依赖
安装python后,我们需要安装三个依赖:tushare,pandas,sqlalchemy
安装完成后import下面几个包:
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
tushare获取数据
我们先用tushare获取数据,tushare提供了获取龙虎榜的数据,接口调用需要指定日期,这里我们拆开2020年3月25号的数据,我们调用接口并返回打印出返回的数据字段:
data = ts.top_list('2020-03-24')
print(data)
返回数据如下:
龙虎榜数据详情
返回的字段及其含义如下:
code:代码
name:名称
pchange:当日涨跌幅
amount:龙虎榜成交额(万)
buy:买入额(万)
bratio:买入占总成交比例
sell:卖出额(万)
sratio:卖出占总成交比例
reason:上榜原因
date:日期
下载数据并存入mysql数据库
我们通过接口下载数据后,要将数据存入mysql数据库,我们采用追加入库的方式进行存储,表名为:top_list
engine = create_engine('mysql://root:admin@127.0.0.1:3306/tushare?charset=utf8')
data.to_sql('top_list', engine, if_exists='append')
入库完成后,我们打开数据库表查看数据:
2020年3月26日 龙虎榜数据详情
我们可以看到数据已经入库。我们分析这些数据可以看到,有几种包括:
日振幅值达到15%的前五只证券
ST、*ST和S证券连续三个交易日内收盘价格跌幅偏离值累计达到15%的证券
日涨幅偏离值达到7%的前五只证券
连续三个交易日内,跌幅偏离值累计达到20%的证券
……
根据条件查询龙虎榜数据
我们根据上面返回的字段,定义一个实体类来承接返回的数据。
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))
根据过滤条件查询数据,我们根据上榜原因查出我们所需要的数据,我们选择上榜原因:
【连续三个交易日内,跌幅偏离值累计达到20%的证券】
通过filter过滤条件查询我们所需要的数据,并在控制台打印出来。
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)
看控制台输出,根据我们需要的条件,输出对应的股票的龙虎榜信息:
条件过滤查询
以上就是我们今天讲的量化交易的一部分,获取股票龙虎榜数据,并存入mysql数据库进行过滤查询。
欢迎关注我,大操手量投化投资,一起学习量化交易知识!带你从小白到大神!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。