freqAI-LSTM是一個用於自動交易加密貨幣的人工智慧系統。該系統如同經驗豐富的交易者一樣監控市場,利用機器學習的力量自動化交易決策,根據過去的模式預測未來的價格走向。
想像一下,當你在股票市場進行交易時,你會查看圖表,確認多個指標(如移動平均線、相對強弱指數(RSI)、MACD等),然後判斷「現在是買進的時機還是賣出的時機」。這個系統能夠學習這整個判斷過程的AI,持續不斷地監控市場,全天候運作。
傳統的自動交易系統基於簡單的規則(例如,「RSI低於30則買入」)。然而,市場是複雜且隨時變化的。這個freqAI-LSTM系統的創新之處在於它擁有以下三種能力。
學習能力:自動從過去的數據中學習市場的模式。AI在短時間內可以獲得人類交易者幾年來積累的經驗。
適應能力:根據市場的情況(波動性高低、趨勢的有無)自動調整策略。就像經驗豐富的交易者根據市場環境改變其交易風格一樣。
多維分析:人類同時處理的資訊量是有限的,但該系統能夠同時分析數十種指標,考慮這些複雜的相互作用來做出判斷。
LSTM是「長短期記憶」(Long Short-Term Memory)的縮寫,是一種用於處理時序數據的特殊神經網路。為什麼「時序」重要呢?
股票或加密貨幣的價格單看當前值無法做出充分的判斷。理解「從哪裡來、向哪裡去」的流動至關重要。例如,當前價格是100美元,但如果一小時前是90美元和110美元,其意義完全不同。
普通的神經網路沒有「記憶力」。每個數據點是獨立處理的,而LSTM則可以像人類記憶一樣,在處理新資訊的同時保持過去的信息。
LSTM的記憶機制示例:
LSTM擁有三個「門」,這與人類大腦選擇信息的過程相似。
在股票預測的上下文中,LSTM會自動學習「三天前的急劇上漲是短期新聞造成的,不再需要關注」(遺忘)、「昨日持續的上升趨勢是重要的」(輸入)、「在此時點,應將這個上升趨勢的信息用於預測」(輸出)的判斷。
該系統使用多個技術指標。每個指標就像測量市場不同面向的「感應器」。
移動平均線(MA):透過計算過去價格的平均值,消除短期噪音,清晰顯示趨勢方向。如果10日移動平均線上升,則表示短期的上升趨勢。
舉個具體例子,假設過去10天的收盤價為「100、102、101、103、105、104、106、108、107、110」,則10日移動平均為104.6。整體趨勢顯示「正在上升」。
RSI(相對強弱指數):一種判斷買入過多或賣出過多的指標,值在0到100之間。一般來說,70以上被視為過度買入,30以下則為過度賣出。
RSI的直觀理解是「近期價格上漲牛力量與下跌力量的平衡」的測量。例如,RSI為90表示,近期一直上漲,可能即將出現回調(下跌)。
MACD(移動平均收斂擴散指標):通過觀察兩條移動平均線之間的關係來檢測趨勢變化。當短期線上穿長期線時發出買入信號,下穿時發出賣出信號。
MACD就像在追蹤「快船」和「慢船」。快船(短期移動平均)超過慢船(長期移動平均)的瞬間是市場動力變化的重要指標。
布林帶:統計計算價格變動範圍的指標。當帶寬擴大時,顯示市場不穩定(波動性高);當帶寬縮小時,則顯示市場穩定。
布林帶可視覺化價格的「正常範圍」。價格突破布林帶外部意味著統計異常,通常會有趨勢回歸布林帶內部的情況出現。
CCI(商品通道指數):測量價格與統計平均的距離。極端值暗示價格可能回歸平均水平。
ROC(變化率):以百分比表示當前價格與若干期間前的價格變化程度。這是一項測量動量(勢頭)強度的指標。
不同指標的量級各異。RSI的範圍是0到100,價格數可能高達數千美元,交易量則可能有數百萬。直接將這些數據輸入機器學習模型會導致大數值特徵被過度重視。
正規化是將所有指標轉換為同一範圍(例如-1到1或0到1)的過程。本系統使用Z-score正規化。
Z-score正規化的計算:
正規化值 = (原始值 - 平均值) / 標準差
這樣就可以用「這個值距離平均值多少個標準差」的統一尺度表達所有指標。例如,Z-score為2.0表示「高於平均2標準差」,這在統計上被判定為非常高。
該系統大致由三部分組成。
數據處理管道:獲取原始市場數據,計算技術指標,並進行正規化,將其轉換為機器學習模型可以理解的格式。
LSTM模型:根據處理後的數據預測未來的目標分數。該分數是「市場是否處於有利狀態」的數值化結果。
決策引擎:將LSTM的預測結果與設定的閾值進行比較,生成實際的交易信號。
讓我們逐步查看系統內數據的流動。
步驟1: 數據收集
從交易所API每小時獲取原始市場數據(價格、交易量、時間)。根據設置,系統還可以同時收集2小時和4小時K線數據,從多個時間軸分析市場。
步驟2: 特徵生成
通過FreqAI框架的三個函數逐步生成特徵。
基本特徵包括價格變化率、生的交易量和生的價格。這些是市場信息的最基本組成。
擴展特徵則添加了CCI、RSI、MACD、布林帶等計算後的技術指標。這裡的關鍵是需從多個時間軸(1小時K線、2小時K線、4小時K線)來計算這些指標。捕捉短期和長期運動,使市場理解更為全面。
此外,還包括來自相互關聯的幣對(如:BTC/USDT與ETH/USDT)的特徵。由於加密貨幣市場中主要幣種的 beweging 會影響其他幣種,因此這種信息極為有用。
標準特徵會添加時間特徵,如星期幾和時刻。市場有時會隨時間而改變特性(例如,美國市場開盤時交易量會增加),因此這些信息也非常重要。
步驟3: 正規化
所有指標都經過Z-score正規化進行標準化,這樣可以在公平的基礎上比較不同範圍的指標。
步驟4: 動態加權
對正規化的指標施加根據市場情況而定的權重。這是本系統最具創新的部分之一。
例如,檢測到強趨勢時,將動量指標(ROC)的權重提高1.5倍。因為在趨勢市場中「勢頭」傾向於持續。反之在盤整市場(橫盤)中,RSI等反向指標會更有效。
步驟5: 綜合分數計算
對權重指標進行綜合,並應用市場環境和波動性調整,最終計算出目標分數。
再來看看這個目標分數的公式:
T = S × R × V × R2 × V2
每個乘法項目都有深刻意義。S為指標的綜合評估,R為短期市場環境,V為短期風險調整,R2為長期趨勢,V2為長期風險調整。由此可見,若其中任一項為零或負值,整體分數也會降低。這反映了「只有當所有條件都符合時才進行交易」的慎重做法。
步驟6: LSTM預測
將過去5小時的目標分數輸入LSTM模型,預測下一個小時的分數。
LSTM不僅僅依賴於「目前的分數高,因此下一次也會高」來預測。而是學習「過去5小時分數變化模式」。例如,「分數逐漸上升的模式後,可能會持續上升」的時序關聯性。
步驟7: 交易判斷
將預測分數與閾值比較,生成交易信號。
這些閾值是根據過去數據進行優化決定的。買入閾值相對較低,而賣出閾值高,這意味著系統擁有「較易於進行多頭頭寸,而對空頭頭寸則較為謹慎」的特性。
讓我們分層查看模型的架構。
輸入層:接收5小時的特徵量數據。每個時間步驟都包含多個特徵(正規化的指標組)。
LSTM層(三層結構):
第1層:接收輸入數據,生成隱藏狀態(128維)。這一層是「從原始數據中提取基本模式」。
第2層:接收第1層的輸出,學習更抽象的模式,理解「多種基本模式的組合」。
第3層:提取最上層的特徵,能夠理解「整個市場的上下文」。
每個LSTM層後都會應用批標準化和丟棄(Dropout)。
批標準化:通過正規化每個小批次的數據來穩定學習。這加速學習過程並提升性能。
丟棄(40%):隨機暫時禁用40%的神經元。這是防止「過擬合」的重要技術。
那麼,什麼是過擬合呢?例如,學生完全背誦考試題目的答案,卻無法應對新問題。丟棄技術使網絡不依賴於特定的神經元,而是學習更通用的模式。這就像一支運動隊即使某位成員缺席也能正常運作的韌性系統。
全連接層:
將LSTM層的輸出(128維)壓縮到36維。這是「將高維度的複雜信息凝縮為預測所需的本質信息」的過程。
Alpha丟棄(50%):為進一步正則化,對全連接層也以50%的概率禁用神經元。Alpha丟棠相比傳統的丟棄技術與SELU激活函數的兼容性更佳。
輸出层:
將36維的向量轉換為最終的預測值(1維)。這個值是下一小時目標分數的預測。
僅使用固定權重的傳統系統存在根本性問題。市場環境不斷變化,但系統的標準不變。
這就像無論天氣如何都穿著同樣的衣服一樣。晴天和雨天、夏天和冬天都穿同樣的衣服無法舒適生活。同樣,在趨勢市場和盤整市場中,有效指標是不同的。
系統根據過去數據學習各指標的基本重要程度。
指標 | 重量 | 解釋 |
---|---|---|
移動平均偏差 | 0.54347 | 中等重要性 |
MACD | 0.82226 | 高重要性 |
ROC | 0.56675 | 中等重要性 |
RSI | 0.77918 | 高重要性 |
布林帶寬度 | 0.98488 | 最高重要性 |
結果顯示,對於布林帶寬度權重最高是有趣的,這反映出市場波動情報在交易判斷中至關重要。當波動性高時需謹慎,波動性低時則可積極進行判斷。
系統持續監控趨勢強度,一旦檢測到強趨勢,自動增加動量指標的權重。
趨勢強度的計算方法:
趨勢強度 = |移動平均線 - 現在價格|
此值越大,表示價格與移動平均線的距離越大,判斷出強趨勢。
強趨勢的閾值:
強趨勢閾值 = 14期間的平均趨勢強度 + 1.5 × 標準差
此公式基於統計學的方法。「大於平均1.5標準差的值」在統計上極為顯著。這樣就能夠真正檢測到強趨勢。
啟用權重調整:
當趨勢強度超過閾值時,將動量(ROC)的權重增加1.5倍。
為什麼增大動量權重?因為在強趨勢時,市場「勢頭帶來勢頭」。在上升趨勢中,會引起更多的買盤,而在下降趨勢中則會引起更多的賣盤。動量指標正好用來測量這種「勢頭」,因此在趨勢情況下應加大重視。
現在讓我們通過具體示例來查看正規化、加權和總和的計算過程。
假設某時刻的正規化指標值如下:
當前檢測到強趨勢。
集成分數的計算:
S = (0.54347 × 0.5) + (0.82226 × 0.8) + (0.56675 × 1.5 × 0.3) + (0.77918 × -0.2) + (0.98488 × 0.6)
注意到,ROC的權重從一般的0.56675提高到1.5倍的0.85013。
計算結果為:
S = 0.272 + 0.658 + 0.255 - 0.156 + 0.591 = 1.620
這個分數表明「整體市場處於強勢狀態」,但由於RSI為負值(過度賣出),不是所有指標都達成一致。透過加權和總和,更重要的指標(如MACD和BB寬度)的意見會得到更強的體現。
「狀態」指的是市場的基本狀況和特性。主要有三種狀態:
上升趨勢:價格持續上升。此時,「低位買入」策略有效。
下降趨勢:價格持續下跌。此時,「反彈賣出」策略有效。
盤整市場:價格在一個固定範圍內上下波動。這種情況下,「反向操作」策略有效。
即使是相同指標的相同值,在不同的狀態下解釋也可大相徑庭。例如,RSI為70(過度買入),在強上升趨勢中表示「可能會繼續上升」,但在盤整市況中則表示「可能會反轉下跌」。
布林帶統計性地定義價格的「正常範圍」。中線代表移動平均,上下限為±2標準差的位置。
狀態判別邏輯:
在盤整市場中,系統會抑制信號。因為在沒有明確方向的情況下,更容易出現錯誤信號。
「同時高於兩者」的條件是關鍵。因為僅僅是暫時超出上限(隨即回落)和持續高於上限的情況必須區分開來。
實際例子:
假設比特幣價格為10,000美元,布林帶為如下狀態:
案例1:價格上升至10,600美元
價格 > 中線(10,600 > 10,000):真
價格 > 上限(10,600 > 10,500):真
→ R = 1(上升狀態)
案例2:價格為10,200美元
價格 > 中線(10,200 > 10,000):真
價格 > 上限(10,200 > 10,500):假
→ R = 0(盤整市場)
100期移動平均線顯示長期趨勢。基於100小時(約4天)的平均,因此不容易受短期噪音影響,是一個穩定的指標。
判定邏輯:
當前價格 > 100期MA → R2 = 1(長期上升趨勢)
當前價格 < 100期MA → R2 = -1(長期下降趨勢)
這一簡單的判定為何強而有力?因為移動平均可以視為「群眾的平均成本」。當價格高於移動平均時,許多參與者都有利可圖,市場心態偏向於樂觀。反之,当其低於移動平均時,許多參與者處於虧損,市場心態則偏向悲觀。
通過將短期狀態(R)和長期狀態(R2)相乘,可以實現更為可靠的判斷。
組合示例:
最強的買入信號:
R = 1(短期上升)× R2 = 1(長期上升) = 1
短期與長期均為上升趨勢,極為強勁的上行環境。
混合信號:
R = 1(短期上升)× R2 = -1(長期下降) = -1
短期上升但長期趨勢為下降,可能是「反弹賣出的機會」。最終分數為負,系統顯得謹慎。
盤整市場:
R = 0(盤整)× R2 = 1(長期上升) = 0
短期未顯示出方向性,因此無論長期趨勢如何,分數均為零,系統將不進行交易。
波動性是顯示價格變動程度的指標。高波動性意味著巨大的機會,同時也是巨大的風險。
想像一下,穩定的河流與湍急的河流。在穩定的河流中可以安全地駛船,但在湍急的河流中,一瞬間的失誤可能導致災難。市場的波動性也是如此。
此系統採用了「反向波動性加權」的策略。即波動性越高,信號的權重越低。
為什麼使用倒數?因為在高波動性時,價格的變動無法預測。在這樣不確定性高的情況下,系統強烈依賴的行為是風險的,因此合理地在波動性翻倍時將信號強度減半。
布林帶寬度測量短期波動性。
計算公式:
BB寬度 =(上限帶 - 下限帶)/ 中央帶
V = 1 / BB寬度
具體示例:
當價格為10,000美元時:
低波動性案例:
高波動性案例:
當低波動性時,V為25,信號加強;高波動性時,V為5,信號受到壓制。這差異為5倍。也就是說,波動性翻了5倍,系統的置信度減少至五分之一。
ATR(平均真實波動範圍)測量長期波動性。
ATR是各期間價格波動範圍的平均值。布林帶關注的是「當前價格的分布」,而ATR則觀察「平均變動範圍」。
計算示例:
假設過去14天的每日波動範圍(最高價-最低價)平均為500美元,那麼ATR為500。
V2 = 1 / ATR = 1 / 500 = 0.002
當ATR大時(市場動盪),V2變小,抑制目標分數。
使用V(短期)和V2(長期)兩者提供更為堅固的調整。
不同場景下的反應:
穩定市場(兩者皆低波動性):
V = 25, V2 = 0.002
調整倍率 = 25 × 0.002 = 0.05
系統會積極輸出信號。
短期急劇變動(短期高、長期低):
V = 5, V2 = 0.002
調整倍率 = 5 × 0.002 = 0.01
系統會因短期混亂而稍加謹慎。
長期不穩定市場(雙高):
V = 5, V2 = 0.0004
調整倍率 = 5 × 0.0004 = 0.002
市場整體被視為不穩定,系統會特別謹慎。
這種雙重調整使系統能夠區別「短期的尖峰」與「持久的動盪」。
再次查看將所有因素結合成的最終目標分數公式:
T = S × R × V × R2 × V2
這個公式的美在於其簡單性,由乘法組成,直觀易懂。
S(綜合分數):指標在說什麼?
多個技術指標的綜合評估,表達市場的基本強弱。S值越高,市場越強勁。
R(短期狀態):市場目前狀態如何?
-1(下降)、0(盤整)、1(上升)三值。當R為0時,無論S值多高,目標分數都為零。「在盤整市場中不進行交易」的原則得以強制執行。
V(短期波動調整):當前市場的可預測性如何?
高則越穩定,低則越不穩定。如果V為0.1,分數則減至十分之一。