機器學習用於加密貨幣信號生成

機器學習已經從根本上改變了加密貨幣交易。過去完全依賴技術分析和手動解讀的方式,現在受益於能夠從數百萬個價格波動、訂單簿快照和鏈上事件中提取模式的神經網絡。本指南探討如何為加密貨幣信號構建基於機器學習的確認系統 — 這也是我們在 Smart Money API 中用於生成信心分數的相同技術。

關鍵洞察: 當機器學習信號與傳統指標結合時效果最佳。一個預測價格方向準確率為 52% 的神經網絡毫無價值。但如果它能確認當資金費率為正且鯨魚共識看漲時的動能呢?那就是一個勝率超過 60% 的系統。

數學基礎

在深入代碼之前,先理解數學原理。每個神經網絡本質上都是一個函數逼近器。給定輸入特徵(價格、成交量、資金費率、鯨魚共識),它會學習權重以最小化歷史數據的預測誤差。

監督學習框架

從標記數據開始:歷史價格/信號對。

Python — 數據準備
# 準備監督數據
import numpy as np
import pandas as pd
# 加載 BTC 的 OHLCV 數據
df = pd.read_csv('btc_5m.csv')
# 特徵:[開盤價, 最高價, 最低價, 收盤價, 成交量, 資金費率, 鯨魚多頭百分比]
features = df[['open', 'high', 'low', 'close', 'volume', 'fr', 'whale_long']].values
# 目標:價格在接下來的 5 根 K 線上漲 (1) 或下跌 (0)
targets = (df['close'].shift(-5) > df['close']).astype(int).values
# 將特徵標準化到 [0,1]
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(features)

加密貨幣的特徵工程

原始的 OHLCV 數據並不足夠。你需要:

關鍵在於捕捉 資訊不對稱 ——多數交易者未能察覺的信號。我們的Smart Money API將三層數據(衍生品、鏈上、巨鯨)整合為複合特徵,表現超越任何單一指標。

神經網路架構

多層感知器(MLP)分類模型

簡單的前饋網路在二元分類(買入/賣出)中效果驚人:

Python — PyTorch MLP
import torch
import torch.nn as nn
class CryptoMLP(nn.Module):
def __init__(self, input_size=7):
super().__init__()
self.fc1 = nn.Linear(input_size, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 32)
self.fc4 = nn.Linear(32, 1)
self.dropout = nn.Dropout(0.3)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.dropout(x)
x = torch.relu(self.fc2(x))
x = self.dropout(x)
x = torch.relu(self.fc3(x))
x = torch.sigmoid(self.fc4(x))
return x

此架構包含7項輸入特徵,通過逐層縮減的網絡(128→64→32→1),使用ReLU激活函數和Dropout正則化。Sigmoid輸出將最終層壓縮至[0,1]區間,代表買入概率。

LSTM 序列預測

為什麼選擇循環神經網路?

價格變動並非獨立——它們具有記憶性。LSTM(長短期記憶)網路能夠學習時間依賴性:「如果動能上升且資金費率在連續3小時負值後轉正,那麼下一根5分鐘K線有58%的機率會是看漲的。」

Python — 加密貨幣LSTM
class CryptoLSTM(nn.Module):
def __init__(self, input_size=7, hidden_size=64, num_layers=2):
super().__init__()
self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, dropout=0.3)
self.fc1 = nn.Linear(hidden_size, 32)
self.fc2 = nn.Linear(32, 1)
def forward(self, x):
# x shape: (batch, seq_len, features)
lstm_out, _ = self.lstm(x)
# 取最後一個時間步
last_hidden = lstm_out[:, -1, :]
x = torch.relu(self.fc1(last_hidden))
x = torch.sigmoid(self.fc2(x))
return x

這個LSTM接收60個時間步的序列(5小時的5分鐘K線)並預測下一個方向。細胞狀態會學習在序列的不同階段哪些特徵最重要。

序列準備

將你的扁平數據轉換為滑動窗口:

Python — 建立LSTM序列
def create_sequences(data, seq_len=60):
X, y = [], []
for i in range(len(data) - seq_len):
X.append(data[i:i+seq_len])
y.append(data[i+seq_len, -1]) # 下一個目標
return np.array(X), np.array(y)
X, y = create_sequences(X)
# X.shape: (n_samples, 60, 7)

訓練與評估

訓練-測試分割策略

對於時間序列數據, 切勿打亂順序。未來數據洩漏會誇大準確性。

Python — 正確的時間序列分割
# 分割:70%訓練,20%驗證,10%測試
n = len(X)
train_idx = int(n * 0.7)
val_idx = int(n * 0.9)
X_train, y_train = X[:train_idx], y[:train_idx]
X_val, y_val = X[train_idx:val_idx], y[train_idx:val_idx]
X_test, y_test = X[val_idx:], y[val_idx:]

訓練循環

使用二元交叉熵損失和Adam優化器:

Python — 訓練
model = CryptoLSTM()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
loss_fn = nn.BCELoss()
for epoch in range(100):
model.train()
optimizer.zero_grad()
preds = model(X_train_tensor)
loss = loss_fn(preds, y_train_tensor)
loss.backward()
optimizer.step()
model.eval()
with torch.no_grad():
val_preds = model(X_val_tensor)
val_loss = loss_fn(val_preds, y_val_tensor)
print(f"Epoch {epoch}: train={loss:.4f}, val={val_loss:.4f}")

與Smart Money API整合

我們的ML模型不會取代傳統指標——而是強化它們。以下是Smart Money API如何結合它們:

Python — 集成評分
def compute_confirmation_score(symbol, direction):
# 1. 取得衍生品評分(資金費率、LSR)
deriv_score = get_derivatives_score(symbol, direction)
# 2. 取得鏈上評分(MVRV、SOPR、交易所流量)
onchain_score = get_onchain_score(symbol)
# 3. 取得鯨魚評分(共識方向、pnl)
whale_score = get_whale_score(symbol, direction)
# 4. 在特徵上運行ML模型
features = [deriv_score, onchain_score, whale_score, volatility, volume_trend]
ml_signal = lstm_model.predict(features)
# 5. 加權集成
composite = (deriv_score * 0.35 + onchain_score * 0.25 + whale_score * 0.25 + ml_signal * 0.15)
return {
"composite": composite,
"confidence": classify_confidence(composite),
"components": {"deriv": deriv_score, "onchain": onchain_score, "whale": whale_score, "ml": ml_signal}
}

最佳實踐

1. 避免過度擬合

2. 處理類別不平衡

若「上漲」天數多於「下跌」天數,模型會更常預測上漲。使用加權損失:

Python — 加權BCE
# 若60%案例為上漲,下跌案例應賦予更高權重
pos_weight = (len(y_train) - y_train.sum()) / y_train.sum()
loss_fn = nn.BCEWithLogitsLoss(pos_weight=torch.tensor(pos_weight))

3. 特徵標準化

神經網絡對特徵尺度敏感。始終將輸入特徵標準化至[0,1]或[-1,1]。僅在訓練數據上重新擬合標準化器,再應用於驗證/測試集。

4. 滾動式驗證

不使用單一測試集,改用滑動窗口:用1年數據訓練,測試下個月數據,然後用13個月數據重新訓練,測試第14個月,依此類推。這模擬實際交易條件。

5. 監控實際表現

回測準確率絕不等同實戰準確率。部署模型後,追蹤實際交易結果,並每月用新數據重新訓練。使用 夏普比率勝率 作為真實指標,而非F1分數。

進階技巧

注意力機制

基於Transformer的模型(如《Attention Is All You Need》)讓網絡能「聚焦」序列中最重要的時間點。對加密貨幣而言,這能賦予近期波動高峰比舊數據更高的權重。

集成方法

訓練多種架構(MLP、LSTM、XGBoost)並平均預測結果。集成模型通常比單一模型準確率高2-5%。

強化學習

與其預測價格方向,不如訓練智能體最大化累積損益。智能體學會根據信心與市場狀況調整部位規模。這是加密貨幣交易AI的前沿領域。

用Smart Money API實踐機器學習

我們的綜合評分系統結合衍生品情報、鏈上分析與巨鯨追蹤—所有功能皆可作為附加特徵整合至您的ML模型。將其加入LSTM輸入特徵,準確率可提升3-5%。

獲取免費API金鑰 →