機器學習用於加密貨幣信號生成
機器學習已經從根本上改變了加密貨幣交易。過去完全依賴技術分析和手動解讀的方式,現在受益於能夠從數百萬個價格波動、訂單簿快照和鏈上事件中提取模式的神經網絡。本指南探討如何為加密貨幣信號構建基於機器學習的確認系統 — 這也是我們在 Smart Money API 中用於生成信心分數的相同技術。
關鍵洞察: 當機器學習信號與傳統指標結合時效果最佳。一個預測價格方向準確率為 52% 的神經網絡毫無價值。但如果它能確認當資金費率為正且鯨魚共識看漲時的動能呢?那就是一個勝率超過 60% 的系統。
數學基礎
在深入代碼之前,先理解數學原理。每個神經網絡本質上都是一個函數逼近器。給定輸入特徵(價格、成交量、資金費率、鯨魚共識),它會學習權重以最小化歷史數據的預測誤差。
監督學習框架
從標記數據開始:歷史價格/信號對。
import numpy as np
import pandas as pd
df = pd.read_csv('btc_5m.csv')
features = df[['open', 'high', 'low', 'close', 'volume', 'fr', 'whale_long']].values
targets = (df['close'].shift(-5) > df['close']).astype(int).values
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X = scaler.fit_transform(features)
加密貨幣的特徵工程
原始的 OHLCV 數據並不足夠。你需要:
- 動能指標: RSI, MACD, ADX(捕捉趨勢強度)
- 波動性指標: ATR, 布林帶寬度(識別擴張/壓縮)
- 成交量分佈: 買/賣壓力比率(發現失衡)
- 鏈上信號: MVRV, SOPR, 交易所流量(檢測週期位置)
- 衍生品數據: 資金費率、多空比(顯示槓桿極值)
- 巨鯨活動: 共識方向、持倉變化、盈虧(預測下一步行動)
關鍵在於捕捉 資訊不對稱 ——多數交易者未能察覺的信號。我們的Smart Money API將三層數據(衍生品、鏈上、巨鯨)整合為複合特徵,表現超越任何單一指標。
神經網路架構
多層感知器(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%的機率會是看漲的。」
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):
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線)並預測下一個方向。細胞狀態會學習在序列的不同階段哪些特徵最重要。
序列準備
將你的扁平數據轉換為滑動窗口:
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)
訓練與評估
訓練-測試分割策略
對於時間序列數據, 切勿打亂順序。未來數據洩漏會誇大準確性。
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優化器:
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如何結合它們:
def compute_confirmation_score(symbol, direction):
deriv_score = get_derivatives_score(symbol, direction)
onchain_score = get_onchain_score(symbol)
whale_score = get_whale_score(symbol, direction)
features = [deriv_score, onchain_score, whale_score, volatility, volume_trend]
ml_signal = lstm_model.predict(features)
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. 避免過度擬合
- 使用 dropout層 (0.2-0.4比例) 在訓練期間隨機將神經元歸零
- 實施 早期停止 — 當驗證損失停止改善時,停止訓練
- 監控訓練與驗證準確率之間的差距;若差距擴大,表示過度擬合
2. 處理類別不平衡
若「上漲」天數多於「下跌」天數,模型會更常預測上漲。使用加權損失:
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金鑰 →