歡迎你們訂閱《Python數據分析實戰:構建股票量化交易系統》小冊子,學完小冊上的知識點後,必定要學以至用的方式來輔助咱們分析股票!算法
最近A股市場行情火爆,對股民們來講,選到一隻強勢股是求之不得的事情,由於只有強勢股才能讓本身的收益跑贏大盤,否則只能眼巴巴看着指數不斷上漲,而手上的股票卻不動聲色,懊惱不已!bash
相信你們都據說了量化交易這個東西了吧!不過目前國內外介紹量化的書籍、課程之類的,大可能是金融背景的人編寫的,因此他們的角度和咱們普通股民會有些不一樣。偏研究分析的模型算法可能咱們看不懂、用不到,有些量化系統針對於機構操盤搭建的,也不適合小資金的普通股民。微信
那麼,什麼纔是普通股民所適合的量化交易打開方式呢?本文就用一個接地氣的選股場景來和你們分享一下,普通股民如何去使用量化交易!app
K線形態中有一種威力很大的形態——跳空缺口。跳空缺口指相鄰的兩根K線之間出現了沒有交易的空白區間,當今日最低價與昨日最高價之間沒有重合部分,稱爲向上缺口,當今日最高價與昨日最低價之間沒有重疊部分,稱爲向下缺口。工具
股價留下缺口,不只僅是當日投資者激烈情緒的反映,在不少狀況下,這種缺口對於判斷後市是具備必定意義的。spa
因而咱們結合量化交易這個工具來過濾下近期出現向上跳空缺口的股票,由於這類股票相對來講後市的走勢會更強勁。設計
第一步,咱們要獲取A市場中目標板塊的個股數據,咱們以證券、地產、水泥、銀行、醫療保健、保險、半導體、元器件這幾個板塊爲分析標的。日誌
獲取股票數據的方式有不少,好比Baostock、Tushare、聚寬、通達信……均可以。此處咱們以Tushare爲例,先獲取股票清單,代碼以下所示:code
df_basic = pro.stock_basic(exchange='', list_status='L')
# 剔除2017年之後上市的新股次新股
df_basic = df_basic[df_basic['list_date'].apply(int).values < 20170101]
# 剔除st股
df_basic = df_basic[df_basic['name'].apply(lambda x: x.find('*ST') < 0)]
df_basic = df_basic[(df_basic["industry"] == u"證券") | (df_basic["industry"] == u"全國地產")
| (df_basic["industry"] == u"銀行") | (df_basic["industry"] == u"水泥")
| (df_basic["industry"] == u"保險") | (df_basic["industry"] == u"醫療保健")
| (df_basic["industry"] == u"半導體") | (df_basic["industry"] == u"元器件")]
get_codes = dict(zip(df_basic.ts_code.values, df_basic.industry.values]))
複製代碼
而後就經過一個循環,用pro.daily(ts_code=code_val, start_date=start_val, end_date=end_val) 這個接口獲取個股近一個月的數據。cdn
到這一步,咱們的數據環節就解決了。
第二步,咱們應該設計一個策略去判斷跳空缺口,這裏咱們的算法思路以下:
若是今日是上漲趨勢,今日的最低價大於昨日的最高價,而且達到設定的閾值時爲向上跳空缺口;
若是今日是下跌趨勢,昨天最低價大於今日最高價,而且達到設定的閾值時爲向下跳空缺口。
咱們以此爲目的編寫一個策略,關鍵代碼以下所示:
for kl_index in np.arange(0, self.stock_dat.shape[0]):
today = self.stock_dat.iloc[kl_index] # 若版本提示已經棄用 可以使用loc或iloc替換
today = today.copy()
if (today['changeRatio'] > 0) and ((today.Low - today.preClose) > jump_threshold):
# 向上跳空 (今最低-昨收)/閾值
today['jump_power'] = (today.Low - today.preClose) / jump_threshold
self.jump_pd = self.jump_pd.append(today)
elif (today['changeRatio'] < 0) and ((today.preClose - today.High) > jump_threshold):
# 向下跳空 (昨收-今最高)/閾值
today['jump_power'] = (today.High - today.preClose) / jump_threshold
self.jump_pd = self.jump_pd.append(today)
複製代碼
光是跳空幅度大於閾值還不夠,咱們能夠結合成交量去疊加判斷,畢竟底部出現放量跳空上漲時,說明該股更增強勢。
說了這麼多,最後讓咱們結合數據去進行分析,運行下程序看看能不能選出強勢股。
咱們摘取其中的一些日誌來分析下看看!
changeRatio表示漲跌幅;preClose表示昨日收盤價;jump_power表示跳空能量。
疊加的選擇條件是:成交量大於近期平均值*0.5;漲幅大於2%。
好比檢測000783時,咱們發現了6月15日和7月6日分別出現了符合條件的跳空缺口。尤爲是6月15日出現跳空缺口後出現了幾個交易的調整,爲下一次拉昇蓄勢。若是咱們在6月15的時候可以關注到這個跳空缺口,是頗有指導意義的!
經過這個簡單而又實用的股票量化場景,但願可以給廣大朋友對於量化交易有一個直觀的感覺。
而後,咱們應該升級本身的炒股方式了,把本身之前炒股的那套方法,抽象成策略模型,用量化的方法去全市場回測評估,而後讓程序幫助咱們監測行情的走勢。這個纔是普通股民所適合的量化交易打開方式!
————————————————————————————————————————————————
你們若是想對涉及到的知識點進行更全面、更體系的從0-1方式的介紹,這裏推薦給你們個人書籍《Python股票量化交易從入門到實踐》
!天貓、京東、噹噹全面開售!
同時也歡迎你們關注個人微信公衆號【元宵大師帶你用Python量化交易】瞭解更多Python量化交易相關內容