一個基於機器學習的打板策略分享(二)

版權所有:光明與黑暗([email protected])

原文再續就書接上一回,話說上回我們的程序做了兩件事情:1)將分鐘線的close和volume轉換成了相對值,2)確定了價在量先、OBV為觀察量的信號監測方向。那麼我們在本節將通過信號截取、信號變換和數據組織等一系列編碼,最終生成可供機器學習的原始數據。

下面使用Tushare的daily介面獲取某交易日的日線行情,介面簡介詳見tushare.pro/document/2?.

#獲取股票日線行情,主要用到漲跌幅和最高價和最低價
def build_stock_daily(trade_date):
pro=get_ts_api()
df_stock_daily=pro.daily(trade_date=trade_date)
return df_stock_daily

然後我們對上回的get_stock_minute_data()介面結尾部分稍微改動一下,讓它只返回從開市到close到達最高點的那一段數據:

#截取從開市到close到達最高點的分鐘線index_abs_close_max=df_minute_line[df_minute_line[abs_close]==df_minute_line[abs_close].max()].index.min()+1
df_minute_line=df_minute_line.iloc[0:index_abs_close_max]
df_minute_line=df_minute_line.reset_index(drop=True)
return df_minute_line

接下來我們通過matplotlib繪圖來觀察一下各種封板的OBV線形態:

1)盤中自然板的, 例如2019年4月12日的600365.SH

2)觸及封板但是沒封住的,例如2019年4月12日的300282.SZ,注意我只截取了從開市到觸及漲停時的部分

3)當然少不了觸及封板後倒跌回去的, 例如2019年4月12日的600135.SH,注意我只截取了從開市到觸及漲停時的部分

那麼本節的主要問題來了:現在截取的是從開盤到觸及漲停的OBV分鐘線數據,其中那一段是真正產生拉升信號的呢?這就需要小波變換這個強大的武器了.

容我水一段百度百科文字: 小波變換(wavelet transform,WT)是一種新的變換分析方法,它繼承和發展了短時傅立葉變換局部化的思想,同時又克服了窗口大小不隨頻率變化等缺點,能夠提供一個隨頻率改變的「時間-頻率」窗口,是進行信號時頻分析和處理的理想工具。它的主要特點是通過變換能夠充分突出問題某些方面的特徵,能對時間(空間)頻率的局部化分析,通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節,解決了Fourier變換的困難問題,成為繼Fourier變換以來在科學方法上的重大突破。

我們只需要在代碼中引入:

import pywt
A2,D3,D2,D1=pywt.wavedec(df_minute_temp[obv].values, db4,mode=symmetric,level=3)

就可以將真正開始拉升到觸及漲停的OBV信號的時序特徵提取出來,仍然以上述四隻股票為例,看一下他們的小波信號特徵:

1) 盤中自然板的:2019年4月12日的600365.SH

2) 觸及封板但是沒封住的:2019年4月12日的300282.SZ

3) 當然還有觸及封板後倒跌回去的:2019年4月12日的600135.SH

在這裡我先總結下採用小波變換處理OBV分鐘線的好處:成功將可能長達240分鐘的OBV分鐘線數據濃縮為一個平均只有17個左右特徵點的信號,並最大限度地保留了信號形態.例如:600365.SH

當然,在這裡仔細觀察的各位可能也會發現一些問題,從小波信號的Y軸數據可以看出:無論是哪一種形態(自然封板的、觸及封板但是沒封住的或者觸及封板後倒跌回去的),在封板前的信號強度沒有較大差異。那引入小波變換有什麼好處呢?

  1. 引入小波信號是為了提取信號特徵,至於是否能漲停、漲停後是否能封住、漲停後是否會被砸板。。。。。。這些是市場問題.
  2. 本節的主要目的是從高頻時間序列中通過小波變換提取特徵信息,以為拷貝了代碼就可以靠此打板發財的可以不用往後看了.
  3. 當然,你說這程序沒用我也有所保留,因為從概率統計上分析,4月12日這天一共有149隻股票產生了信號,其中觸及封板後倒跌回去的只有9隻,其餘的都是上漲的.

OK,這一節先水到這裡,下一節我們將引入機器學習來對小波信號進行監督分類學習.敬請期待.


推薦閱讀:
相关文章