3. 账户准备:多交易所账户注册、KYC、API密钥创建与权限管理
做价差套利,说白了就是要在多个交易所之间来回倒腾。你想想看,没有账户,你连门都进不去。这一章,我就带你走一遍完整的账户准备流程。我个人的习惯是,先把所有账户都注册好,再统一做KYC,最后集中管理API密钥。这样效率最高,也最不容易出错。
3.1 交易所选择与账户注册
选交易所,不是越大越好。你得看它有没有你要套利的币种,交易深度够不够,API稳不稳定。我在项目中遇到过,选了某个小交易所,结果API动不动就超时,价差机会全错过了。
我个人常用的几个交易所:
- 币安(Binance):流动性最好,API最稳定,适合做主流币种套利
- 欧易(OKX):合约深度不错,永续合约价差机会多
- Bybit:永续合约和现货价差套利,它的API响应速度很快
- Gate.io:小币种多,适合做冷门币种价差
- Kucoin:手续费相对低,适合高频小单套利
注册时,邮箱和手机号一定要用稳定的。我建议用Gmail或者Outlook,别用那些容易收不到验证码的邮箱。密码的话,每个交易所用不同的密码,用密码管理器统一管理。嗯,这里要注意,别偷懒用同一个密码,万一一个交易所被拖库,你所有账户都完蛋。
3.2 KYC认证:别嫌麻烦
KYC(Know Your Customer)是交易所的合规要求。说白了,就是证明你是你。我刚开始做的时候也觉得烦,但后来发现,不做KYC,提现额度低得可怜,而且很多交易所的API权限也受限。
KYC一般分三级:
| 级别 | 要求 | 日提现额度 | API权限 |
|---|---|---|---|
| Lv.1 | 邮箱/手机验证 | 2 BTC 等值 | 仅查看 |
| Lv.2 | 身份证+人脸识别 | 100 BTC 等值 | 交易+提现 |
| Lv.3 | 地址证明+视频认证 | 无限制 | 全部权限 |
做套利的话,至少做到Lv.2。我建议直接做到Lv.3,因为有些交易所的API高级功能(比如批量下单、逐仓模式)需要Lv.3才能用。我曾经因为只做了Lv.2,结果在行情剧烈波动时,API被限流,眼睁睁看着价差溜走。
3.3 API密钥创建:权限最小化原则
API密钥是你的交易机器人的「钥匙」。钥匙给错了权限,后果很严重。我见过有人把提现权限也给了API,结果密钥泄露,账户被洗劫一空。
创建API密钥时,权限设置要遵循最小化原则:
- 只开交易权限:不要开提现权限,绝对不要
- 只开现货交易:如果只做现货套利,别开合约权限
- IP白名单:只允许你的服务器IP访问
- 限制交易对:有些交易所支持限制API只能交易特定币种
创建API密钥的步骤(以币安为例):
- 登录币安,进入「API管理」
- 点击「创建API」,输入标签(比如「套利机器人-主网」)
- 安全验证(邮箱+谷歌验证器)
- 设置权限:只勾选「交易」
- 设置IP白名单:填入你的服务器IP
- 保存API Key和Secret Key
3.4 权限管理:多账户统一管控
当你有了5个、10个交易所账户后,管理API密钥就成了头疼的事。我个人的做法是,用一个配置文件统一管理所有密钥。
这是我的配置文件结构:
# config.yaml
exchanges:
binance:
api_key: "your_binance_api_key"
secret_key: "your_binance_secret_key"
passphrase: "" # 币安不需要
base_url: "https://api.binance.com"
okx:
api_key: "your_okx_api_key"
secret_key: "your_okx_secret_key"
passphrase: "your_okx_passphrase"
base_url: "https://www.okx.com"
bybit:
api_key: "your_bybit_api_key"
secret_key: "your_bybit_secret_key"
passphrase: "" # Bybit不需要
base_url: "https://api.bybit.com"
然后写一个统一的API客户端:
import yaml
from binance.client import Client
from okx import AccountAPI
from pybit import HTTP
class ExchangeManager:
def __init__(self, config_path="config.yaml"):
with open(config_path, 'r') as f:
self.config = yaml.safe_load(f)
def get_client(self, exchange_name):
ex = self.config['exchanges'][exchange_name]
if exchange_name == 'binance':
return Client(ex['api_key'], ex['secret_key'])
elif exchange_name == 'okx':
return AccountAPI(ex['api_key'], ex['secret_key'], ex['passphrase'])
elif exchange_name == 'bybit':
return HTTP(endpoint=ex['base_url'], api_key=ex['api_key'],
api_secret=ex['secret_key'])
# 其他交易所类似
# 使用示例
manager = ExchangeManager()
binance_client = manager.get_client('binance')
print(binance_client.get_account())
3.5 避坑指南:我踩过的那些坑
做跨交易所套利,账户准备阶段最容易出问题。我总结几个常见的坑:
- API频率限制:每个交易所对API调用频率都有限制。币安是1200次/分钟,OKX是20次/秒。我刚开始没注意,结果API被限流,订单没成交,价差没了。
- 提现地址白名单:有些交易所开启提现地址白名单后,新地址需要24小时才能生效。我建议提前把所有常用地址都加进去。
- 子账户管理:如果资金量大,我建议用子账户。每个策略用一个子账户,风险隔离。币安和OKX都支持子账户。
- 谷歌验证器备份:交易所的谷歌验证器一定要备份密钥。我有个朋友手机丢了,验证器恢复不了,账户被锁了3天才解开,错过了大行情。
嗯,账户准备这块,看起来琐碎,但做扎实了,后面就顺了。你想想看,如果因为密钥泄露或者权限没设好,导致资金损失,那多冤。所以,花点时间把这一步做好,值得。
好了,账户准备就这些。下一章,我们开始写真正的套利代码。到时候,这些账户和API密钥就要派上用场了。