高頻交易算法研發心得--WAVT指標(Warensoft交易量趨勢指標)算法及應用算法
注:WAVT指標由Warensoft(王宇)原創。學習
前面聊了一系列的常見應用指標,包括短線、長線的指標,而且也無耐的指出每種指標的問題。固然每寫一篇文章,也都是一次學習過程。通過一年多的學習研究,筆者也自創了一個應用指標,並將其命名爲WAT指標,本次讓咱們一塊兒來探討一下,歡迎你們扔磚!測試
1.指標定義spa
WAVT:Warensoft交易量趨勢(Warensoft Volume Trend),是根據必定時期內交易量描述出買賣趨勢的指標量,適合於中長期交易。WAVT指標表達形式,以下所示:code
如圖所示,WAVT指標包括兩種顯示形式,一個是曲線圖,一個是方波圖,方波圖是由曲線圖計算獲得的。其中,曲線圖能夠較爲直觀的顯示當前行情的變化趨勢,可是不便於量化交易;而方波圖是對曲線圖進行了一次數值變換,適合計算機進行量化交易。blog
2.趨勢線的計算class
我相信有不少程序猿和我同樣,一直都但願經過行情變化曲線的極值點,來捕獲最合理的買賣時機。這裏存在兩個技術難點:軟件
對於趨勢線的計算,最簡單的想法是利用K線進行繪製。因爲K線是市場的最直接反映,因此其波動性會比較大,所以,以K線做爲數據源的話,整個圖像中出現的M頭或W底會很是的多。List
前段時間,研究了一下OBV指標,同時,有一個10多年的老股民朋友(也是資深軟件工程師)告訴我說:「能夠利用交易量來模擬行情」。本人大受啓發,所以,WAVT的趨勢線的數據源是來自市場交易量的。軟件工程
前一篇文章中(談RSI指標),咱們說過經典的MACD以及MA均線,都是從固定週期的價格做爲判讀的指導思想,並將價格進行平滑處理,而後獲得可參考的判讀結果。排除我的經驗外,這些計算方法從方法論層面上來講是一種數值化斷定方法(即:先有數據,再斷定結果)。
然而基於交易量的OBV指標,則是從交易量的角度,分析人們的交易信心(信心是沒法量化的),所以,OBV指標是帶有預測性。另外,相同週期的OVB指標要比MA指標更靠近真實行情,同時OBV的曲線要比MA的曲線平滑得多!
我們書歸正文,WAVT指標中的趨勢線算法描述以下:
public List<TimeValuePair> GetWAVTTrendLine() { //1.首先獲取帶有Vol值的K線數據。 var kline = GetKline(); //2.計算OBV指標值,注意這裏使用40作爲平滑週期 var obv = GetOBV(kline,40); //3.獲取極值點採樣,注意這裏須要進行兩次採樣,所以參數爲2 var peeks = GetPeekPoints(obv, 2); //4.由於極值點數據,在時間上是不連續的, //所以,須要對極值點數據進行線性插值,以保證每一個時間點上都有數據 peeks = InterplotData(peeks); }
通過上面4個步驟,咱們就能夠獲得WAVT趨勢線。具體算法比較複雜,看官們能夠本身實現,或者調用Warensoft Stock Service Client來實現。其圖像以下所示:
3.方波圖的計算
趨勢線的特色是比較直觀,適合人眼來觀察行情,可是不便於計算機量化處理。下面咱們來進行方波化變換,以便計算機量化。其過程以下:
//1.計算WAVT趨勢線 var trendLine = GetWAVTTrendLine(); //2.全部數據減去前一個數值,獲得方波值 var value = trendLine[i] - trendLine[i - 1]; //3.對方波數據進行噪聲濾波,以去掉干擾數據 value = MakeFilter(value);
通過上面3個步驟,咱們就能夠獲得WAVT方波圖,其圖像以下所示:
4.應用方式
經過前面的算法描述,咱們不難發現,方波圖能夠較好的把握大致的買賣時機,即:
以下圖所示:
5.總結
本指標算法尚在測試中,應用須要謹慎。
WAVT指標能夠用於中長期的交易,可是隻能大致來把握趨勢,和其餘技術指標同樣,WAVT指標存在必定的延時性,在應用的時候會錯過最最低值和最最高值。