返回介绍

第一部分 新手入门

第二部分 股票量化相关

第三部分 基金、利率互换、固定收益类

第四部分 衍生品相关

4.13 委比 • 实时计算委比

发布于 2022-02-20 22:26:15 字数 20987 浏览 863 评论 0 收藏 0

最近几个交易日,大盘又是一片惨淡,然而我们发现郭嘉队并没有猛拉指数,转而是对部分股票托底。比如中海油服:

风格的转变,意味着郭嘉队转攻为守,让我们看看都有哪些股票值得郭嘉队托底

# 常量准备
import pandas as pd
from datetime import datetime as dt
from pandas import DataFrame, Series
today = dt.today().strftime('%Y%m%d')   # 获得今天的日期

# DataAPI取所有A股
stocks = DataAPI.EquGet(equTypeCD='A',listStatusCD='L',field='secID,nonrestfloatA',pandas="1")
universe = stocks['secID'].tolist()    # 转变为list格式,以便和DataAPI中的格式符合

# 取所有A股的最新行情
bidask_fields = ['bidBook_volume%s' %i for i in xrange(1, 6)] + ['askBook_volume%s' %i for i in xrange(1, 6)]
fields = ['shortNM','lastPrice','bidBook','askBook','suspension']

def get_data():
    data = DataFrame()
    for i in range(0,len(universe),300):   # 原则上可以性取完的,但是试验中作者发现会报错,估计是运算量太大,所以这里分批次取,每次300个
        t = DataAPI.MktTickRTSnapshotGet(securityID=universe[i:min(i+300,len(universe))],field=fields,pandas="1")
        tmp = DataFrame()
        tmp['secID'] = t['ticker']+'.'+t['exchangeCD']
        tmp[['shortNM','suspension'] + bidask_fields] =t[['shortNM', 'suspension']+bidask_fields]
        data = pd.concat([data,tmp],axis=0)   # 数据拼接

    # 去掉当日停牌的股票 
    data['nonrestfloatA'] = stocks['nonrestfloatA']
    data = data[data['suspension']==0]

    data = data[(data['bidBook_volume1']>0).values & (data['askBook_volume1']>0).values]


    # 去掉没有涨停板的股票
    data['bidBook_volume'] = sum([data['bidBook_volume%s' %i] for i in xrange(1,6)])
    data['askBook_volume'] = sum([data['askBook_volume%s' %i] for i in xrange(1,6)])

    # 计算委比
    data['rate'] = data['bidBook_volume']/(data['askBook_volume']+data['bidBook_volume'])*100   #百分之几
    data = data.sort(columns='rate',ascending=False).reset_index()
    data.drop('index',axis=1,inplace=True)

    # 重命名
    data = data[['secID', 'shortNM', 'bidBook_volume', 'askBook_volume', 'rate']]
    data.columns = ['代码','简称','买量','卖量','委比']
    return data

get_data().head(50)
代码简称买量卖量委比
0601336.XSHG新华保险143107802470099.827700
1600485.XSHG信威集团2086200410099.803856
2600188.XSHG兖州煤业380155389874699.740921
3601808.XSHG中海油服168458214470099.735355
4600362.XSHG江西铜业203433905693599.720911
5600958.XSHG东方证券40691821297299.682227
6600340.XSHG华夏幸福127977905480099.573627
7000951.XSHE中国重汽1964684960099.513748
8002304.XSHE洋河股份29434301520099.486249
9600276.XSHG恒瑞医药22300151250099.442590
10000538.XSHE云南白药17982871020099.435993
11002143.XSHE印纪传媒28134061633599.422739
12000800.XSHE一汽轿车91747995619999.391193
13601958.XSHG金钼股份2046016812780999.379206
14000513.XSHE丽珠集团881306560099.368591
15603288.XSHG海天味业60491403934099.353862
16300202.XSHE聚龙股份1145291760099.340788
17601800.XSHG中国交建2991547820810099.309179
18600403.XSHG大有能源87683856150099.303502
19601225.XSHG陕西煤业5703802340694399.291595
20601098.XSHG中南传媒79020475840099.266373
21601226.XSHG华电重工46046013520099.241347
22600600.XSHG青岛啤酒18879001567399.176654
23601688.XSHG华泰证券116735839729999.173392
24000895.XSHE双汇发展1771852715408099.137899
25601555.XSHG东吴证券1450886812789799.126194
26300003.XSHE乐普医疗23554042097199.117521
27600429.XSHG三元股份67614696160099.097180
28000333.XSHE美的集团95837248963399.073403
29600004.XSHG白云机场33330503200099.049048
30600637.XSHG东方明珠20204001942099.047955
31600741.XSHG华域汽车1541284115059099.032411
32600166.XSHG福田汽车1448520014644598.999121
33002594.XSHE比亚迪29614002996798.998217
34000750.XSHE国海证券1382673214680098.949442
35600664.XSHG哈药股份76542178150698.946369
36601186.XSHG中国铁建2447960226591198.925417
37600519.XSHG贵州茅台894254974198.922450
38601901.XSHG方正证券1190634613286198.896431
39002081.XSHE金 螳 螂61568856910798.890024
40600660.XSHG福耀玻璃37063004460098.810952
41000869.XSHE张 裕A30737493748398.795236
42002431.XSHE棕榈园林15566371910098.787869
43002221.XSHE东华能源24835003060098.782865
44000685.XSHE中山公用800594810020098.763901
45002122.XSHE天马股份58748867421098.752584
46000600.XSHE建投能源861225610914098.748595
47002663.XSHE普邦园林786210410114198.729902
48600823.XSHG世茂股份75449499725198.727448
49002252.XSHE上海莱士18199002360098.719826

可以看到里面不乏贵州茅台,美的集团,张裕A等十几倍市盈率的现金牛企业。这也就反映了个股正处在严重两极分化的过程,郭嘉队和主力更亲睐于优质蓝筹。

由于这里计算委比时,只是针对买卖五档行情,所以有一定的失真,而且在行情软件上按照委比排序,效果更直观。那为什么还要搞得这么复杂呢?

因为不想错过发生过的委比结果,因为还想对当天整个的委比情况做分析。

下面的代码通过一个while循环,每隔10秒打印一次委比前30的股票名称:

import time
import datetime

full_data = DataFrame()

while 1:
    now = datetime.datetime.now()
    if now.hour>=15:
        break

    data = DataFrame()
    time_str =  '%2s%2s%2s' %(now.hour, now.minute, now.second)

    try:
        data = get_data()[:30]
        data['time'] = time_str
    except Exception,e:
        print e

    if data.empty:
        continue

    full_data = full_data.append(data)
    print now, ', '.join([ e for e in data['简称'].values])

    time.sleep(10)

2015-08-03 14:01:36.452456 广发证券, 张  裕A, 江铃汽车, 比亚迪, 兖州煤业, 云南白药, 海天味业, 信威集团, 东华能源, 中集集团, 美邦服饰, 万华化学, 华电国际, 申万宏源, 陕国投A, 环旭电子, 华域汽车, 一汽轿车, 哈药股份, 陕西煤业, 聚龙股份, 日出东方, 誉衡药业, 格力电器, 深圳燃气, 徐工机械, 新 和 成, 建投能源, 康恩贝, 驰宏锌锗
2015-08-03 14:01:48.711193 广发证券, 兖州煤业, 张  裕A, 江铃汽车, 云南白药, 中集集团, 海天味业, 格力电器, 中国西电, 比亚迪, 贵人鸟, 美邦服饰, 东华能源, 万华化学, 哈药股份, 华电国际, 申万宏源, 贵州茅台, 陕国投A, 华域汽车, 陕西煤业, 日出东方, 誉衡药业, 聚龙股份, 新 和 成, 深圳燃气, 建投能源, 驰宏锌锗, 一汽轿车, 国海证券
2015-08-03 14:02:01.886604 广发证券, 兖州煤业, 张  裕A, 中集集团, 东吴证券, 江铃汽车, 华电国际, 海天味业, 云南白药, 中国西电, 万华化学, 申万宏源, 国海证券, 比亚迪, 东华能源, 互动娱乐, 哈药股份, 日出东方, 华域汽车, 环旭电子, 双汇发展, 誉衡药业, 格力电器, 陕国投A, 深圳燃气, 东方能源, 新 和 成, 一汽轿车, 驰宏锌锗, 聚龙股份
2015-08-03 14:02:12.446392 中集集团, 广发证券, 云南白药, 兖州煤业, 张  裕A, 东吴证券, 江铃汽车, 丽珠集团, 信威集团, 金 融 街, 海天味业, 华电国际, 双汇发展, 互动娱乐, 哈药股份, 万华化学, 上海医药, 华域汽车, 新华保险, 日出东方, 国海证券, 贵人鸟, 冠农股份, 申万宏源, 驰宏锌锗, 誉衡药业, 深圳燃气, 上海莱士, 徐工机械, 一汽轿车
2015-08-03 14:02:25.053561 张  裕A, 云南白药, 中集集团, 东吴证券, 兖州煤业, 广发证券, 丽珠集团, 首航节能, 双汇发展, 金 融 街, 海天味业, 万华化学, 华电国际, 东方能源, 互动娱乐, 哈药股份, 日出东方, 中煤能源, 上海医药, 环旭电子, 华域汽车, 国海证券, 誉衡药业, 申万宏源, 贝因美, 深圳燃气, 聚龙股份, 浙大网新, 一汽轿车, 上海莱士
2015-08-03 14:02:36.258301 中集集团, 张  裕A, 云南白药, 兖州煤业, 广发证券, 万华化学, 丽珠集团, 海天味业, 中文传媒, 互动娱乐, 中国西电, 一汽轿车, 东华能源, 哈药股份, 东吴证券, 华电国际, 格力电器, 金 融 街, 日出东方, 华域汽车, 国海证券, 誉衡药业, 申万宏源, 深圳燃气, 科力远, 陕国投A, 二三四五, 上海莱士, 粤电力A, 驰宏锌锗
2015-08-03 14:02:46.940336 中集集团, 张  裕A, 云南白药, 兖州煤业, 中文传媒, 广发证券, 万华化学, 丽珠集团, 贵州茅台, 尚荣医疗, 日出东方, 一汽轿车, 东吴证券, 东方能源, 康恩贝, 哈药股份, 金 融 街, 海天味业, 中国神华, 华域汽车, 中国西电, 互动娱乐, 誉衡药业, 上海医药, 闰土股份, 申万宏源, 深圳燃气, 科力远, 聚龙股份, 二三四五
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
<mercury-input-27-f8d02897ce95> in <module>()
     24     print now, ', '.join([ e for e in data['简称'].values])
     25 
---> 26     time.sleep(10)
     27 

KeyboardInterrupt:

本贴的实现参考于社区高人 @明轩 @jiang.wei 的涨停板帖子。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文