config.json 示例:
{
"mode": "test", // "live" / "test"
"api_key": "YOUR_API_KEY",
"api_secret": "YOUR_API_SECRET",
"base_currency": "USDT",
"symbol": "BTC/USDT",
"order_size": 0.01
}
Python 读取:
import json
with open("config.json") as f:
cfg = json.load(f)
API_KEY = cfg["api_key"]
API_SECRET = cfg["api_secret"]
MODE = cfg["mode"]
SYMBOL = cfg["symbol"]
ORDER_SIZE = cfg["order_size"]
print(f"Mode: {MODE}, Symbol: {SYMBOL}, Order Size: {ORDER_SIZE}")
⚠️ 注意:API Key 不要上传到 GitHub,存放 .env 或 VPS 环境变量中。
import ccxt
import os
exchange = ccxt.binance({
"apiKey": API_KEY,
"secret": API_SECRET,
"enableRateLimit": True,
"options": {"defaultType": "future"}
})
if MODE == "test":
exchange.set_sandbox_mode(True)
# 市价下单测试
order = exchange.create_order(
symbol=SYMBOL,
type='market',
side='buy',
amount=ORDER_SIZE
)
print(order)
✅ 对比 paper trading 下单结果:检查 filled, avgPrice, fee 等字段。
import time
while True:
# 这里可调用策略 signal
signal = 1 # 1 = buy, -1 = sell, 0 = no action
if signal == 1:
try:
order = exchange.create_order(SYMBOL, 'market', 'buy', ORDER_SIZE)
print(order)
except Exception as e:
print("Order failed:", e)
time.sleep(60) # 每分钟一次
监控失败情况:记录到日志
import logging
logging.basicConfig(filename="live_test.log", level=logging.INFO)
logging.info(order)
import pandas as pd
df_live = pd.read_json("live_test.log", lines=True) # 如果每行是 JSON
# 选择关键字段
df_live[['timestamp','side','amount','price','fee','status']].head()
# 对比回测结果
df_backtest = pd.read_csv("backtest_results.csv")
# 可以对比收益、手续费、滑点等
⚠️ 发现异常立即停止实盘:
# 简单停止脚本
import sys
sys.exit()