找到連續(xù)下跌n天的.股*票

所謂跌久必漲, 事不過三, 只要不是垃圾股, 持續(xù)跌, 就大概率會(huì)漲起來

會(huì)用到的財(cái)經(jīng)數(shù)據(jù)接口, 1, tushare, https://waditu.com/, 注冊(cè)獲取自己的token,

WX20220301-135616@2x.png

2, 現(xiàn)在tushare好多接口都提高權(quán)限了, 所以需要第2個(gè),baostock, http://baostock.com/baostock/index.php/%E9%A6%96%E9%A1%B5, 當(dāng)然還有第3個(gè)可選, 聚寬,https://www.joinquant.com/:

首先, 獲取交易日, 確保n天里沒有非交易日:

WX20220301-141406@2x.png

有了交易日, 我們就可以獲取這些天全部下跌的股票了,獲取n天里每個(gè)交易日下跌的股票, 考慮到韭菜資金少, 你可以選擇自己能買得起的股票價(jià)格區(qū)間, 土豪默認(rèn)全部:


WX20220301-155413@2x.png

取每天的交集, 最后輸出dataframe:


WX20220301-155505@2x.png
#找到連跌n天的股票
import tushare as ts
ts.set_token('4880ea14a96548a小星星5410c6230c4de11622188')
pro=ts.pro_api()
import baostock as bs
 # tushare通用沒有-, baostock通用有-
todaydate = time.strftime('%Y-%m-%d',time.localtime(time.time()))

def get_tradedate(aimdate,n,start_date):
    '''
    獲取交易日
    aimdate: 目標(biāo)交易日 如, 2022-03-01, 默認(rèn)今天
    n: 從今天算獲取今天之前的幾天, 默認(rèn)5
    start_date: 開始日期, 默認(rèn)2022-02-01
    '''
#    aimdate,n,start_date='2022-02-27',5,'2022-02-01'
    
    lg = bs.login()
    rs = bs.query_trade_dates(start_date=start_date, end_date=aimdate)
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 獲取一條記錄,將記錄合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)
    result=result[result['is_trading_day']=='1']
    trade_list=list(result['calendar_date'])
    # 獲取目標(biāo)日前n個(gè)交易日
    trade_list=trade_list[len(trade_list)-n:]
    trade_list=[i.replace('-','') for i in trade_list]
    return trade_list

def get_ticket(trade_list,high_p,low_p):
    '''
    根據(jù)交易天數(shù), 獲取全部下跌的
    '''
    l_ts0=get_day_tickets(trade_list[0].replace('-',''),high_p=9999,low_p=0.1)
    
    for trade_date in trade_list[1:]:
        trade_date=trade_date.replace('-','')# tushare通用沒有-, baostock通用有-
        l_ts=get_day_tickets(trade_date,high_p,low_p)
        l_ts0=list(set(l_ts0).intersection(l_ts))# 交集
    l_ts0=[(i.split('.')[0]) for i in l_ts0]
    # 代碼和名稱對(duì)應(yīng)
    #查詢當(dāng)天的全部正常交易的股票
    stock_rs = bs.query_all_stock(trade_list[0])
    stock_df = stock_rs.get_data()
    stock_df['code'] = stock_df['code'].apply(lambda i:i.split('.')[1])
    df=pd.DataFrame({'code':l_ts0})
    df=df.merge(stock_df,how='left',on='code')
    
    return df  
        
def get_day_tickets(trade_date,high_p,low_p):
    '''獲取該交易日的下跌股票'''
    # trade_date=trade_list[0]
    df = pro.daily(trade_date=trade_date)
    df=df[df['change']<0]
    # 獲取1元~100元的
    df=df[(df['close']<high_p)&(df['close']>low_p)]
    # 除去創(chuàng)業(yè)板和科創(chuàng)板, 大部分韭菜只能買滬深主板的
    df['is_cyb']=df['ts_code'].apply(lambda i:0 if i.startswith('3') or i.startswith('688') or i.startswith('4') or i.startswith('8') else 1)
    df=df[df['is_cyb']==1]
    
    l_ts=list(df['ts_code'])

    return l_ts

def run(aimdate=todaydate,high_p=9999,low_p=0.1,n=5):
    start_date='2022-02-01'
    trade_list=get_tradedate(aimdate,n,start_date)
    l_ts0=get_ticket(trade_list,high_p,low_p)
    return l_ts0

if __name__=='__main__':
    aimdate=None
    l_ts0=run()

試試看


WX20220301-162123@2x.png

WX20220301-162232@2x.png

本文純屬娛樂, 如依據(jù)此文投資虧損, 后果自負(fù)哈哈哈

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容