🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

freqAI-LSTM 交易模型完全指南

從初學者到進階者的徹底解說


第1章: 開始 - 這個系統是做什麼的

1.1 專案全貌

freqAI-LSTM是一個用於自動交易加密貨幣的人工智慧系統。該系統如同經驗豐富的交易者一樣監控市場,利用機器學習的力量自動化交易決策,根據過去的模式預測未來的價格走向。

想像一下,當你在股票市場進行交易時,你會查看圖表,確認多個指標(如移動平均線、相對強弱指數(RSI)、MACD等),然後判斷「現在是買進的時機還是賣出的時機」。這個系統能夠學習這整個判斷過程的AI,持續不斷地監控市場,全天候運作。

1.2 為什麼這個系統重要

傳統的自動交易系統基於簡單的規則(例如,「RSI低於30則買入」)。然而,市場是複雜且隨時變化的。這個freqAI-LSTM系統的創新之處在於它擁有以下三種能力。

學習能力:自動從過去的數據中學習市場的模式。AI在短時間內可以獲得人類交易者幾年來積累的經驗。

適應能力:根據市場的情況(波動性高低、趨勢的有無)自動調整策略。就像經驗豐富的交易者根據市場環境改變其交易風格一樣。

多維分析:人類同時處理的資訊量是有限的,但該系統能夠同時分析數十種指標,考慮這些複雜的相互作用來做出判斷。


第2章: 基礎知識 - 理解系統的基礎

2.1 LSTM是什麼 - 理解時間的AI

LSTM是「長短期記憶」(Long Short-Term Memory)的縮寫,是一種用於處理時序數據的特殊神經網路。為什麼「時序」重要呢?

股票或加密貨幣的價格單看當前值無法做出充分的判斷。理解「從哪裡來、向哪裡去」的流動至關重要。例如,當前價格是100美元,但如果一小時前是90美元和110美元,其意義完全不同。

普通的神經網路沒有「記憶力」。每個數據點是獨立處理的,而LSTM則可以像人類記憶一樣,在處理新資訊的同時保持過去的信息。

LSTM的記憶機制示例
LSTM擁有三個「門」,這與人類大腦選擇信息的過程相似。

  • 遺忘門:判斷「這個舊信息不再重要」而選擇遺忘。
  • 輸入門:判斷「這個新信息是重要的」而將其記憶。
  • 輸出門:判斷「現在應該使用這個記憶的信息」而將其輸出。

在股票預測的上下文中,LSTM會自動學習「三天前的急劇上漲是短期新聞造成的,不再需要關注」(遺忘)、「昨日持續的上升趨勢是重要的」(輸入)、「在此時點,應將這個上升趨勢的信息用於預測」(輸出)的判斷。

2.2 技術指標的基礎 - 理解市場的語言

該系統使用多個技術指標。每個指標就像測量市場不同面向的「感應器」。

移動平均線(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(變化率):以百分比表示當前價格與若干期間前的價格變化程度。這是一項測量動量(勢頭)強度的指標。

2.3 機器學習中的正規化重要性

不同指標的量級各異。RSI的範圍是0到100,價格數可能高達數千美元,交易量則可能有數百萬。直接將這些數據輸入機器學習模型會導致大數值特徵被過度重視。

正規化是將所有指標轉換為同一範圍(例如-1到1或0到1)的過程。本系統使用Z-score正規化。

Z-score正規化的計算
正規化值 = (原始值 - 平均值) / 標準差

這樣就可以用「這個值距離平均值多少個標準差」的統一尺度表達所有指標。例如,Z-score為2.0表示「高於平均2標準差」,這在統計上被判定為非常高。


第3章: 系統架構 - 理解整體結構

3.1 系統的三個主要組件

該系統大致由三部分組成。

數據處理管道:獲取原始市場數據,計算技術指標,並進行正規化,將其轉換為機器學習模型可以理解的格式。

LSTM模型:根據處理後的數據預測未來的目標分數。該分數是「市場是否處於有利狀態」的數值化結果。

決策引擎:將LSTM的預測結果與設定的閾值進行比較,生成實際的交易信號。

3.2 數據流的全貌

讓我們逐步查看系統內數據的流動。

步驟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: 交易判斷
將預測分數與閾值比較,生成交易信號。

  • 分數為0.59453以上:多頭(買入)進入
  • 分數為0.80573以下:空頭(賣出)進入

這些閾值是根據過去數據進行優化決定的。買入閾值相對較低,而賣出閾值高,這意味著系統擁有「較易於進行多頭頭寸,而對空頭頭寸則較為謹慎」的特性。

3.3 PyTorch LSTM模型的詳細結構

讓我們分層查看模型的架構。

輸入層:接收5小時的特徵量數據。每個時間步驟都包含多個特徵(正規化的指標組)。

LSTM層(三層結構)
第1層:接收輸入數據,生成隱藏狀態(128維)。這一層是「從原始數據中提取基本模式」。

第2層:接收第1層的輸出,學習更抽象的模式,理解「多種基本模式的組合」。

第3層:提取最上層的特徵,能夠理解「整個市場的上下文」。

每個LSTM層後都會應用批標準化和丟棄(Dropout)。

批標準化:通過正規化每個小批次的數據來穩定學習。這加速學習過程並提升性能。

丟棄(40%):隨機暫時禁用40%的神經元。這是防止「過擬合」的重要技術。

那麼,什麼是過擬合呢?例如,學生完全背誦考試題目的答案,卻無法應對新問題。丟棄技術使網絡不依賴於特定的神經元,而是學習更通用的模式。這就像一支運動隊即使某位成員缺席也能正常運作的韌性系統。

全連接層
將LSTM層的輸出(128維)壓縮到36維。這是「將高維度的複雜信息凝縮為預測所需的本質信息」的過程。

Alpha丟棄(50%):為進一步正則化,對全連接層也以50%的概率禁用神經元。Alpha丟棠相比傳統的丟棄技術與SELU激活函數的兼容性更佳。

輸出层
將36維的向量轉換為最終的預測值(1維)。這個值是下一小時目標分數的預測。


第4章: 動態加權系統 - 適應性市場分析的核心

4.1 為什麼需要動態加權

僅使用固定權重的傳統系統存在根本性問題。市場環境不斷變化,但系統的標準不變。

這就像無論天氣如何都穿著同樣的衣服一樣。晴天和雨天、夏天和冬天都穿同樣的衣服無法舒適生活。同樣,在趨勢市場和盤整市場中,有效指標是不同的。

4.2 基本權重的最優化

系統根據過去數據學習各指標的基本重要程度。

指標 重量 解釋
移動平均偏差 0.54347 中等重要性
MACD 0.82226 高重要性
ROC 0.56675 中等重要性
RSI 0.77918 高重要性
布林帶寬度 0.98488 最高重要性

結果顯示,對於布林帶寬度權重最高是有趣的,這反映出市場波動情報在交易判斷中至關重要。當波動性高時需謹慎,波動性低時則可積極進行判斷。

4.3 根據趨勢強度進行動態調整

系統持續監控趨勢強度,一旦檢測到強趨勢,自動增加動量指標的權重。

趨勢強度的計算方法
趨勢強度 = |移動平均線 - 現在價格|

此值越大,表示價格與移動平均線的距離越大,判斷出強趨勢。

強趨勢的閾值
強趨勢閾值 = 14期間的平均趨勢強度 + 1.5 × 標準差

此公式基於統計學的方法。「大於平均1.5標準差的值」在統計上極為顯著。這樣就能夠真正檢測到強趨勢。

啟用權重調整
當趨勢強度超過閾值時,將動量(ROC)的權重增加1.5倍。

為什麼增大動量權重?因為在強趨勢時,市場「勢頭帶來勢頭」。在上升趨勢中,會引起更多的買盤,而在下降趨勢中則會引起更多的賣盤。動量指標正好用來測量這種「勢頭」,因此在趨勢情況下應加大重視。

4.4 集成分數的計算過程

現在讓我們通過具體示例來查看正規化、加權和總和的計算過程。

假設某時刻的正規化指標值如下:

  • 正規化MA偏差: 0.5
  • 正規化MACD: 0.8
  • 正規化ROC: 0.3
  • 正規化RSI: -0.2(顯示過度賣出)
  • 正規化BB寬度: 0.6

當前檢測到強趨勢。

集成分數的計算:
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寬度)的意見會得到更強的體現。


第5章: 市場狀態判別 - 理解市場的「狀態」

5.1 狀態判別的重要性

「狀態」指的是市場的基本狀況和特性。主要有三種狀態:

上升趨勢:價格持續上升。此時,「低位買入」策略有效。

下降趨勢:價格持續下跌。此時,「反彈賣出」策略有效。

盤整市場:價格在一個固定範圍內上下波動。這種情況下,「反向操作」策略有效。

即使是相同指標的相同值,在不同的狀態下解釋也可大相徑庭。例如,RSI為70(過度買入),在強上升趨勢中表示「可能會繼續上升」,但在盤整市況中則表示「可能會反轉下跌」。

5.2 第一狀態過濾器 - 布林帶的短期判斷

布林帶統計性地定義價格的「正常範圍」。中線代表移動平均,上下限為±2標準差的位置。

狀態判別邏輯

  • 盤整市場(R = 0)
    當價格在布林帶的中央付近時,表示「市場處於平均狀態」。統計上約68%的數據將落在平均±1標準差範圍內,因此這一狀態可視為「正常」。

在盤整市場中,系統會抑制信號。因為在沒有明確方向的情況下,更容易出現錯誤信號。

  • 上升狀態(R = 1)
    當價格高於中線和上限時。這在統計上表示非常強烈的上行。

「同時高於兩者」的條件是關鍵。因為僅僅是暫時超出上限(隨即回落)和持續高於上限的情況必須區分開來。

  • 下降狀態(R = -1)
    價格同時低於中線和下限時。這在統計上表示非常強烈的下行。

實際例子
假設比特幣價格為10,000美元,布林帶為如下狀態:

  • 上限:10,500美元
  • 中線:10,000美元
  • 下限:9,500美元

案例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(盤整市場)

5.3 第二狀態過濾器 - 長期趨勢判斷

100期移動平均線顯示長期趨勢。基於100小時(約4天)的平均,因此不容易受短期噪音影響,是一個穩定的指標。

判定邏輯
當前價格 > 100期MA → R2 = 1(長期上升趨勢)
當前價格 < 100期MA → R2 = -1(長期下降趨勢)

這一簡單的判定為何強而有力?因為移動平均可以視為「群眾的平均成本」。當價格高於移動平均時,許多參與者都有利可圖,市場心態偏向於樂觀。反之,当其低於移動平均時,許多參與者處於虧損,市場心態則偏向悲觀。

5.4 兩級濾波器的相互作用

通過將短期狀態(R)和長期狀態(R2)相乘,可以實現更為可靠的判斷。

組合示例

  • 最強的買入信號
    R = 1(短期上升)× R2 = 1(長期上升) = 1
    短期與長期均為上升趨勢,極為強勁的上行環境。

  • 混合信號
    R = 1(短期上升)× R2 = -1(長期下降) = -1
    短期上升但長期趨勢為下降,可能是「反弹賣出的機會」。最終分數為負,系統顯得謹慎。

  • 盤整市場
    R = 0(盤整)× R2 = 1(長期上升) = 0
    短期未顯示出方向性,因此無論長期趨勢如何,分數均為零,系統將不進行交易。


第6章: 波動性調整 - 動態管理風險

6.1 甚麼是波動性

波動性是顯示價格變動程度的指標。高波動性意味著巨大的機會,同時也是巨大的風險。

想像一下,穩定的河流與湍急的河流。在穩定的河流中可以安全地駛船,但在湍急的河流中,一瞬間的失誤可能導致災難。市場的波動性也是如此。

6.2 反向波動調整理論

此系統採用了「反向波動性加權」的策略。即波動性越高,信號的權重越低。

為什麼使用倒數?因為在高波動性時,價格的變動無法預測。在這樣不確定性高的情況下,系統強烈依賴的行為是風險的,因此合理地在波動性翻倍時將信號強度減半。

6.3 利用布林帶寬度進行調整(V)

布林帶寬度測量短期波動性。

計算公式
BB寬度 =(上限帶 - 下限帶)/ 中央帶
V = 1 / BB寬度

具體示例
當價格為10,000美元時:

低波動性案例:

  • 上限:10,200美元
  • 下限:9,800美元
  • BB寬度 = (10,200 - 9,800) / 10,000 = 0.04
  • V = 1 / 0.04 = 25

高波動性案例:

  • 上限:11,000美元
  • 下限:9,000美元
  • BB寬度 = (11,000 - 9,000) / 10,000 = 0.20
  • V = 1 / 0.20 = 5

當低波動性時,V為25,信號加強;高波動性時,V為5,信號受到壓制。這差異為5倍。也就是說,波動性翻了5倍,系統的置信度減少至五分之一。

6.4 使用ATR進行調整(V2)

ATR(平均真實波動範圍)測量長期波動性。

ATR是各期間價格波動範圍的平均值。布林帶關注的是「當前價格的分布」,而ATR則觀察「平均變動範圍」。

計算示例
假設過去14天的每日波動範圍(最高價-最低價)平均為500美元,那麼ATR為500。
V2 = 1 / ATR = 1 / 500 = 0.002

當ATR大時(市場動盪),V2變小,抑制目標分數。

6.5 雙重波動調整的效果

使用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
    市場整體被視為不穩定,系統會特別謹慎。

這種雙重調整使系統能夠區別「短期的尖峰」與「持久的動盪」。


第7章: 整合目標分數 - 一切合一

7.1 整合公式的全貌

再次查看將所有因素結合成的最終目標分數公式:
T = S × R × V × R2 × V2

這個公式的美在於其簡單性,由乘法組成,直觀易懂。

7.2 各要素的角色再確認

S(綜合分數):指標在說什麼?
多個技術指標的綜合評估,表達市場的基本強弱。S值越高,市場越強勁。

R(短期狀態):市場目前狀態如何?
-1(下降)、0(盤整)、1(上升)三值。當R為0時,無論S值多高,目標分數都為零。「在盤整市場中不進行交易」的原則得以強制執行。

V(短期波動調整):當前市場的可預測性如何?
高則越穩定,低則越不穩定。如果V為0.1,分數則減至十分之一。


原文出處:https://qiita.com/tikeda123/items/eeeaf29932b2d8817fd7


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝18   💬9   ❤️5
680
🥈
我愛JS
📝4   💬14   ❤️7
252
🥉
御魂
💬1  
3
#5
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付