第五階段:動手 Lab
Lab 02:接入 Binance 沙箱動手實作:連接真實交易所的測試環境,體驗「實盤」的感覺
目標
- 申請 Binance Testnet (Futures) API Key
- 配置
TradingNode連接沙箱環境 - 運行簡單的策略進行模擬交易
- 觀察控制台日誌和訂單狀態
⚠️ 前置條件
你需要一個能訪問 Binance 測試網的網路環境(部分地區可能需 VPN)。
你需要安裝 Redis(Docker 或本地安裝)。
步驟 1:申請 API Key
- 訪問 Binance Futures Testnet。
- 註冊/登入帳號。
- 在頁面下方找到 API Key 和 Secret Key。
- 保存好這兩組金鑰!
步驟 2:配置 .env 文件
為了安全,我們不要把 Key 寫在代碼裡。創建一個 .env 文件:
BINANCE_API_KEY=你的API_KEY
BINANCE_API_SECRET=你的SECRET_KEY安裝 python-dotenv:
pip install python-dotenv步驟 3:編寫啟動腳本 (run_sandbox.py)
import os
from dotenv import load_dotenv
from decimal import Decimal
from nautilus_trader.live.node import TradingNode
from nautilus_trader.live.config import (
TradingNodeConfig,
LiveDataEngineConfig,
LiveExecEngineConfig,
)
from nautilus_trader.adapters.binance.config import (
BinanceLiveDataClientConfig,
BinanceLiveExecClientConfig,
)
from nautilus_trader.model.enums import AccountType, OmsType
from nautilus_trader.model.identifiers import TraderId
# 1. 載入環境變量
load_dotenv()
API_KEY = os.getenv("BINANCE_API_KEY")
API_SECRET = os.getenv("BINANCE_API_SECRET")
# 2. 構建配置
node_config = TradingNodeConfig(
trader_id=TraderId("SANDBOX-001"),
# 資料客戶端 (接收行情)
data_clients={
"BINANCE": BinanceLiveDataClientConfig(
api_key=API_KEY,
api_secret=API_SECRET,
usdt_futures=True, # 使用 U 本位合約
testnet=True, # !重要! 連接測試網
),
},
# 執行客戶端 (下單)
exec_clients={
"BINANCE": BinanceLiveExecClientConfig(
api_key=API_KEY,
api_secret=API_SECRET,
usdt_futures=True,
testnet=True,
),
},
# 引擎配置
data_engine=LiveDataEngineConfig(time_bars_feed_only=True), # 僅訂閱 1m K線以節省流量
exec_engine=LiveExecEngineConfig(reconciliation=True), # 啟用對帳
)
# 3. 創建節點
node = TradingNode(config=node_config)
# 4. 定義一個簡單的打印策略 (用於測試連接)
from nautilus_trader.trading.strategy import Strategy
from nautilus_trader.config import StrategyConfig
class PrintBarStrategy(Strategy):
def on_bar(self, bar):
self.log.info(f"收到 Bar: {bar}")
# 5. 添加策略
config = StrategyConfig(instrument_id="BTCUSDT-PERP.BINANCE")
node.trader.add_strategy(PrintBarStrategy(config))
# 6. 運行!
if __name__ == "__main__":
node.run()步驟 4:運行結果
運行腳本後,你應該會在控制台看到類似輸出:
[INFO] Node: Starting...
[INFO] TradingNode: Connecting to data clients...
[INFO] BinanceLiveDataClient: Connected to wss://stream.binancefuture.com...
[INFO] TradingNode: Connecting to execution clients...
[INFO] BinanceLiveExecClient: Connected...
[INFO] TradingNode: Starting strategies...
[INFO] PrintBarStrategy: 收到 Bar: Bar(BTCUSDT-PERP.BINANCE, ...)
...🎉 成功連接!
這意味著你的 NautilusTrader 已經成功連上了 Binance 的服務器,並且開始接收實時數據了。這就是實盤交易的基礎!
作業
📝 挑戰任務
1. 將 Lab 01 中的 EMA Cross 策略移過來,配置到 run_sandbox.py 中。
2. 嘗試修改 trade_size 為 0.001 BTC,並觀察是否能成交(注意 Binance 的最小下單數量)。
3. 在 Binance 測試網的網頁端查看你的帳戶,確認訂單是否真的出現了。