繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168財經網>人物頻道>帖子

【共享函數】過濾ST,停牌,漲停等

作者/jjdsad 2019-09-07 12:00 0 來源: FX168財經網人物頻道
stocks = get_all_securities(date='2019-09-02').index.tolist()
print (len(stocks))
3680

過濾停牌¶

def filter_paused(stocks,end_date,day=1,x=1):
    '''stocks:股票池     end_date:查詢日期
    day : 過濾最近多少天(包括今天)停牌過的股票,默認只過濾今天
    x : 過濾最近day日停牌數>=x日的股票,默認1次
    返回 :過濾後的股票池 '''
    s = get_price(stocks,end_date=end_date,count =day,fields='paused').paused.sum()
    return s[s< x].index.tolist()

res = filter_paused(stocks,'2019-09-02')
print (len(res))
3661

過濾ST¶

def filter_st(stocks,day):
    datas = get_extras('is_st',stocks,end_date = day ,count=1).T
    return  datas[~datas.iloc[:,0]].index.tolist()

res = filter_st(stocks,'2019-09-02')
print (len(res))
3537

過濾/判斷跌漲停等¶

由於漲停的定義比較複雜(一字板,觸板等) , 使用條件也各有不同(判斷當期是否漲停還是判斷昨天有無漲停等) , 所以此處僅做示例,具體判斷大家可以在使用時再考慮。

# 因為停牌時 . 漲跌停,當前價都是填充交易日的數據, 所以同時也會過濾掉停牌的標的
df = get_price(stocks,end_date='2019-09-02',count=1,fields=['close','low',
                                                            'high','high_limit','low_limit']).iloc[:,0]

s1 = df[df.close!=df.high_limit].index.tolist()  #剔除掉收盤價等於漲停價的
print (len(s1))
s2 = df[df.low!=df.high_limit].index.tolist()  #剔除掉最低價等於漲停價的(漲停一字板)
print (len(s2))
s3 = df[df.high!=df.low_limit].index.tolist()  #剔除掉最高價等於漲停價的(跌停一字板)
print (len(s3))

res = filter_paused(stocks,'2019-09-02')
print (len(res))
3572
3654
3659
3661
df2 = get_price(stocks,end_date='2019-09-02 11:00:00',count=1,fields=['close',
                                        'high_limit','low_limit'],frequency='1m').iloc[:,0]
res = df2[df2.close ==df2.high_limit].index.tolist()  #挑選出 11:00 的收盤價等於漲停價的
print(len(res))  #包含了停牌股
res2 = filter_st(res,'2019-09-02')  #剔除停牌
print (len(res2))    #在2019-09-02 11:00:00 漲停的股票
65
51
df3 = get_price(stocks,end_date='2019-09-02 11:00:00',start_date='2019-09-02 09:00:00',fields=['high','close',
                                        'high_limit'],frequency='1m')
# 篩選出2019-09-02 開盤 截至 11:00:00  (觸摸到過漲停價) 且 (11:00:00未封板)  ; 也就是漲停後開板的標的
df3.close.iloc[-1][(df3.high.max()==df3.high_limit.iloc[-1])&(df3.close.max()!=df3.high_limit.iloc[-1])]
000820.XSHE     1.79
002356.XSHE     2.26
002520.XSHE     7.29
002536.XSHE     6.01
300183.XSHE    14.03
603613.XSHG    47.30
603737.XSHG    63.70
Name: 2019-09-02 11:00:00, dtype: float64
conditions1 = (df3.high == df3.high_limit).sum()<2  #封板時間不超過2分鍾
conditions2 = (df3.high == df3.high_limit).sum()>0   #有過封板
conditions3 = df3.close.max()!=df3.high_limit.iloc[-1]  #11:00:00的時候未漲停
df3.close.iloc[-1][conditions1&conditions2&conditions3]  #篩選出滿足上述三個條件的標的
002520.XSHE     7.29
002536.XSHE     6.01
300183.XSHE    14.03
603737.XSHG    63.70
Name: 2019-09-02 11:00:00, dtype: float64

示例函數 : 統計某一天停牌,當日新上市,上漲,下跌,漲停,跌停戶¶

def Market_statistics(check_date,filter_st=True):
    '''check_date: 統計日期,
    filter_st: 是否過濾st'''
    info_data = get_all_securities(date=check_date)
    all_list = info_data.index.tolist()
    st_df  =  get_extras('is_st', all_list,end_date=check_date, df=True, count=1).T
    st_list = st_df[st_df.iloc[:,0]].index.tolist()
    print ('st股票有%s只'%len(st_list))
    print ('未退市的有%s只'%len(all_list))

    all_data = get_price(all_list,end_date=check_date,count=2,fields=['paused','close','high_limit','low_limit'])
    paused_data = all_data.paused.iloc[-1]
    paused_list = paused_data[paused_data==1].index.tolist()
    print ('停牌%s只'%len(paused_list))

    new_data = all_data.drop(paused_list,axis=2)
    if filter_st ==True:
        filter_list = list(set(st_list)-set(paused_list))
        new_data = new_data.drop(filter_list,axis=2)
    pct_data = new_data.close.pct_change().iloc[1]
    print ('當日新上市股票:%s'%pct_data[np.isnan(pct_data)].index.tolist())
    print ('上漲%s只(不含當日上市)'%len(pct_data[pct_data>=0]))
    print ('下跌%s只'%len(pct_data[pct_data<0]))

    limit_up_data = new_data.iloc[:,-1,:][new_data.iloc[:,-1,:].close==new_data.iloc[:,-1,:].high_limit]
    print ('漲停%s只'%len(limit_up_data))
    limit_down_data = new_data.iloc[:,-1,:][new_data.iloc[:,-1,:].close==new_data.iloc[:,-1,:].low_limit]
    print ('跌停%s只'%len(limit_down_data))
Market_statistics('2019-09-03')
st股票有144只
未退市的有3680只
停牌18只
當日新上市股票:[]
上漲2261只(不含當日上市)
下跌1268只
漲停56只
跌停2只
 
分享到:
舉報財經168客戶端下載

全部回複

0/140

投稿 您想發表你的觀點和看法?

更多人氣分析師

  • 張亦巧

    人氣2208文章4145粉絲45

    暫無個人簡介信息

  • 張迎妤

    人氣1904文章3305粉絲34

    個人專注於行情技術分析,消息面解讀剖析,給予您第一時間方向...

  • 指導老師

    人氣1864文章4423粉絲52

    暫無個人簡介信息

  • 李冉晴

    人氣2320文章3821粉絲34

    李冉晴,專業現貸實盤分析師。

  • 梁孟梵

    人氣2184文章3177粉絲39

    qq:2294906466 了解群指導添加微信mfmacd

  • 王啟蒙現貨黃金

    人氣312文章3407粉絲8

    本人做分析師以來,並專注於貴金屬投資市場,尤其是在現貨黃金...

  • 金泰鉻J

    人氣2328文章3925粉絲51

    投資問答解咨詢金泰鉻V/信tgtg67即可獲取每日的實時資訊、行情...

  • 金算盤

    人氣2696文章7761粉絲125

    高級分析師,混過名校,廝殺於股市和期貨、證券市場多年,專注...

  • 金帝財神

    人氣4760文章8329粉絲119

    本文由資深分析師金帝財神微信:934295330,指導黃金,白銀,...

FX168財經

FX168財經學院

FX168財經

FX168北美