一個能讓你的指標自適應市場週期的演算法庫立身以立學為先,立學以讀書為本——歐陽修
對於很多有數字信號處理背景的交易者,可能很容易理解約翰 艾勒斯的週期理論。他把市場看作一個離散數字信號系統,把大量現代數字信號演算法用到他的指標裏面。其中,他認為市場是一個變週期,富含各種諧波分量的數字信號系統。既然是變週期,所以很多技術指標的參數如果是固定的,就只能在某一段時間內符合市場特徵,能夠正確地反映市場的真實狀態。一旦市場調頻後,固定參數指標的“頻率”就會和市場“失諧”,從而會失效。簡而言之,就像是日常生活中用的FM收音機,頻率能對上就能享受美妙的音樂,一旦頻率偏移就只能聽到雜訊了,這是一個道理。另外,艾勒斯的週期理論認為趨勢只是大循環,大週期分量占主導地位的上升或下降階段,在大週期分量裏還混雜各種節奏的小週期。但是無論如何,是可以採用眾多頻率的正弦波合成進行表達,只不過分量眾多,而且頻率是變化的。這其實不僅和道氏理論,艾略特波浪理論相對應,而且也能和中國纏中說禪的“級別”概念相對應。這就解釋為什麼很多人學習波浪和纏論仍舊炒不好股,因為這個“主控級別”是變化的,並不是一成不變的,如果交易者不能夠快速跟上市場“變頻”的節奏,就會大概率吃面。一個狙擊手要命中一個高速移動的目標,肯定要調整倍鏡的倍數。使用固定倍數倍鏡射擊超出範圍的目標,失手的概率就會增加,使用技術指標是一個道理。
自動調參數的技術指標
目前有很多人嘗試各種方法使得技術指標能夠快速適應市場變化,也就是自適應指標(Adaptive Indicators)。這裏不乏使用AI機器學習演算法,甚至採用最新的Transformer演算法的交易者。但是,傳統機器學習演算法訓練需要大量樣本和訓練才能保證演算法收斂,獲得有效的參數。但是這種及時性往往不能夠滿足快速變化的市場走勢。這時就可以考慮採用艾勒斯週期理論中一些自適應演算法對指標參數進行自適應。
舉個例子,下圖是一個通過離散傅裏葉變換計算主控週期,並用主控週期對RSI指標參數進行“調諧”的自適應RSI。簡單地說,這個自適應RSI的參數既不是14也不是7,而是根據市場變化計算出一個動態的參數N,你可以設定這個N的變化範圍,演算法會自動計算出這個N值,並讓RSI在不同參數中自動調整。
SZSE: 399006 創業板指數行情來自TradingView
為了對比看出加不加自適應對於指標的影響,我用下麵ESCGO振盪器進行對比,上面是我寫的固定參數的ESCGO指標,下麵是我採用了自適應的ESCGO指標,是不是能看出什麼差別來呢?
SZSE: 399006 創業板指數行情來自TradingView
我閱讀了艾勒斯的4本英文著作,把其發表的文章都仔細研究後,總結了12種計算市場主控週期(Dominant Cycle)的演算法,並將其寫成TradingView代碼庫dc_ta公開分享在社區。
1. EhlersHoDyDC()。這是艾勒斯採用希爾伯特變換(Hilbert Transform)結合零差鑒別器(Homodyne Discriminator)計算主控週期的演算法。零差(Homodyne)意味著市場信號被自身相乘。更準確地說,我們希望將當前K線的信號與前一根K線的信號的複數值相乘。根據定義,複共軛是一個複數,其虛部的符號已反轉。
2. EhlersPhAcDC()。這是採用希爾伯特變換(Hilbert Transform)結合相位累加器(Phase Accumulator)計算主控週期的演算法。市場主控週期測量採用相位累加法總是使用一個完整週期的歷史數據。這既是優點也是缺點。優點是在獲得的主控週期的滯後性直接與迴圈週期有關。也就是說,短週期的測量比較長週期的測量具有更少的滯後。然而,用於進行測量的樣本數量意味著平均週期隨迴圈週期而變化。與信號相比,更長的平均時間會降低雜訊水準。因此,較短的週期週期必然具有較高的輸出信噪比 (SNR)。因此,這種演算法更適合計算小週期,以保證較少的週期計算滯後性。
3. EhlersDuDiDC()。這是採用希爾伯特變換(Hilbert Transform)結合雙差分(Dual Differential)演算法計算主控週期的方式。市場信號分量經過複雜的平均並在 EMA 中進行平滑處理,以避免在隨後的乘法步驟中出現任何不希望的叉積。週期直接從平滑的同相和正交分量求解。分母的臨時計算作為 Value1 執行,以確保分母不會有零值。Valuel 的符號相對於理論方程是相反的,因為差異是在時間上向後看的。
4. EhlersCycPer()。這是週期演算法(Cycle Period)。它顯示了如何計算當前週期週期,即當前峰值或穀值與下一個峰值或穀值之間的大致K線數。
5. EhlersCycPer2()。這是週期演算法(Cycle Period)另一個版本。
6. EhlersBPZC()。這是帶通濾波過零(Bandpass Zero Crossings)法。對於數字濾波器理論比較理解的交易者會知道,可以通過約束帶通濾波器帶寬找到主控週期,並濾除其他週期分量,然後輸出信號會像一個正弦波,當正弦波從一個零點開始上穿到下一次上穿零為一個週期。
7. EhlersAutoPer()。這是自相關週期圖(Autocorrelation Periodogram)法。自相關週期圖的構建從使用最小三個平均K線的自相關函數開始。使用自相關結果的離散傅裏葉變換 (DFT) 提取迴圈資訊。與其他頻譜估計技術相比,這種方法特定的優勢(不代表實際應用中這些優勢更加明顯)。
8. EhlersHoDyDCE()。這是艾勒斯採用帶通濾波(Bandpass Filtering)結合零差鑒別器(Homodyne Discriminator)計算主控週期的演算法。
9. EhlersPhAcDCE()。這是艾勒斯採用帶通濾波(Bandpass Filtering)結合相位累加器(Phase Accumulator)計算主控週期的演算法。
10. EhlersDuDiDCE()。這是艾勒斯採用帶通濾波(Bandpass Filtering)結合雙差分(Dual Differential)演算法計算主控週期的方式。
11. EhlersDFTDC()。這是通過離散傅裏葉變換提取主控週期的方法。
12. EhlersDFTDC2()。這是利用多個帶通濾波結合離散傅裏葉變換提取主控週期的方法。
dc_ta庫可以賦能傳統指標,但是這裏也有難點,就是動態自適應參數的定標問題:以哪個值為基準,振幅多少才是最優。我理解採用dc_ta自適應庫只能將跟蹤市場變化的一部分工作由演算法承擔,仍需控制演算法長期的漂移。我也仍在研究階段,目前來看除了定標,就是計算出來的週期滯後性問題仍需要評估。也就是計算出來的週期如果已經是“昨日黃花”,對於當下市場的意義就不大了。歡迎感興趣的朋友和我交流相關見解。