股票数据分析举例

众所周知,基于出众的开发效率和丰富的开源工具包,python在数据分析和人工智能领域炙手可热,被众多量化交易平台竞相采用。本文略举几例,旨在抛砖引玉。

K线形态选股示例

运行环境:万矿量化平台

目的:从沪深300中选取最近三个月满足 “十字晨星” 形态的股票:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from WindCharts import *
from pandas import DataFrame
from WindPy import *
import talib as ta
from tqdm import tqdm

w.start(show_welcome=False)
print('开始在沪深300中选取满足 “十字晨星” 形态的股票,请稍等...')
start_date, end_date = "2018-07-01" , "2018-09-28"
target_stock = []
list_stock = w.wset("sectorconstituent", "date="+start_date+";windcode=000300.SH").Data[1] #当时的沪深300股票
for code in list_stock:
data = w.wsd(code, "open,high,low,close,volume", start_date, end_date)
data = pd.DataFrame(data.Data, columns=data.Times, index=data.Fields).T
open, high, low, close = np.array(data['OPEN']), np.array(data['HIGH']),np.array(data['LOW']),np.array(data['CLOSE'])
CDLMORNINGDOJISTAR = ta.CDLMORNINGDOJISTAR(open, high, low, close, penetration=0) #十字晨星
if len(np.where(CDLMORNINGDOJISTAR!=0)[0])>0:
target_stock.append(code)
print(target_stock)

输出结果:

1
2
3
> 开始在沪深300中选取满足 “十字晨星” 形态的股票,请稍等...
> ['000425.SZ', '000768.SZ', '000983.SZ', '002153.SZ', '002594.SZ', '002625.SZ', '300033.SZ', '600066.SH', '600208.SH', '600271.SH', '600498.SH', '600588.SH', '600958.SH', '601186.SH', '601607.SH', '601718.SH', '601939.SH']
>

获取某日涨停股

运行环境:万矿量化平台

目的:获取某日涨停个股列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from WindPy import *
from datetime import *
import pandas as pd
w.start() # 启动Wind API
date='2018-09-28' #input("请输入研究日期:") #日期格式请采用规范格式如2011-01-01,只支持交易日
code=w.wset("sectorconstituent","date="+date+";sectorid=a001010100000000")
code=pd.DataFrame(code.Data).T
change=w.wss(list(code[1]), "sec_name,maxupordown","tradeDate="+date+";cycle=D")
change=pd.DataFrame(change.Data).T
result=pd.DataFrame(columns=['股票代码','股票名称'])
print ('涨停的股票有:')
for i in range(len(change[0])):
if (change[1][i]==1):
result.loc[len(result)]=[code[1][i],code[2][i]]
i=i+1
result

输出结果:



龙虎榜个股上榜统计

运行环境:jupyter notebook

目的:运用tushare获取龙虎榜相关信息,并进行排序

1
2
3
4
# 获取近5、10、30、60日个股上榜统计数据,包括上榜次数、累积购买额、累积卖出额、净额、买入席位数和卖出席位数。
import tushare as ts
df = ts.cap_tops(days=10) # count上榜次数,bamount累积购买额(万),samount累积卖出额(万),net净额(万)
df.sort_values(by=['count','net'],ascending=False) # 对df按照上榜次数排序后如有相同的再按照净额排序

输出结果:



如果文章对您有用请随意打赏,谢谢支持!