目录导读
为什么需要自动化交易脚本?
最近很多朋友在问:“手动盯盘太累了,能不能让程序自动帮我交易?”答案当然是可以的,通过欧易交易所官网提供的API接口,你可以让Python脚本自动执行买入、卖出、查询余额等操作,其实很多专业交易者早就这么干了——当价格达到某个阈值时自动挂单,夜间也不错过行情。

如果你打算长期在加密货币市场操作,建议先完成欧易交易所下载客户端,配合API使用会更方便,毕竟一个稳定的交易环境是基础。
欧易API接口申请全流程
要写交易脚本,第一步就是拿到“钥匙”——API Key,流程其实很简单:
步骤1:登录账户 进入欧易交易所官网,登录你的账户,如果你还没有账户,先注册并通过KYC认证。
步骤2:找到API管理页面 在个人中心找到“API”或“开发者”选项,不同版本的界面位置可能略有不同,但通常都在“账户设置”或“安全设置”里。
步骤3:创建API Key 点击“创建API Key”,系统会要求你设置权限:
- 读取权限:必须勾选,用于获取行情和账户信息
- 交易权限:如果你要自动下单,必须勾选
- 提币权限:强烈建议不要勾选,只用于交易即可
创建成功后,你会得到两个重要信息:
- API Key(类似:
abc123...) - Secret Key(类似:
xyz789...)—— 这个一定要保密,别泄露给任何人!
步骤4:绑定IP地址(可选但推荐) 为了安全,你可以设置白名单IP,只有指定IP才能使用这个API,如果你在云服务器上运行脚本,就填服务器IP。
Python交易脚本环境搭建
有了API之后,咱们来配置Python环境,我用的是Python 3.8以上版本,如果你还没装,去官网下载即可。
安装必要库:
pip install requests pip install hashlib pip install hmac pip install base64 pip install json
这些库是用于发送HTTP请求、生成签名、处理数据的,其实核心就几个,用起来不难。
初始代码框架: 我们先写一个基础类,封装所有API请求,记得把刚才申请到的API Key和Secret Key填进去。
import requests
import hmac
import hashlib
import base64
import json
import time
class OkCoinAPI:
def __init__(self, api_key, secret_key, passphrase):
self.api_key = api_key
self.secret_key = secret_key
self.passphrase = passphrase
self.base_url = "https://www.okx.com"
def _signature(self, timestamp, method, request_path, body):
message = str(timestamp) + method + request_path + (body or "")
mac = hmac.new(bytes(self.secret_key, encoding='utf8'),
bytes(message, encoding='utf-8'),
digestmod='sha256')
d = mac.digest()
return base64.b64encode(d).decode('utf-8')
def _request(self, method, path, params=None):
timestamp = str(time.time())
body = json.dumps(params) if params else ""
signature = self._signature(timestamp, method, path, body)
headers = {
"OK-ACCESS-KEY": self.api_key,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": self.passphrase,
"Content-Type": "application/json"
}
url = self.base_url + path
if method == "GET":
response = requests.get(url, headers=headers, params=params)
elif method == "POST":
response = requests.post(url, headers=headers, data=body)
return response.json()
这段代码看起来有点多,但核心就是生成签名(每个API请求都需要),然后发送HTTP请求,如果你觉得麻烦,也可以直接使用现成的第三方库如python-okx,不过自己写一遍更能理解原理。
实战:编写一个简单的自动买卖脚本
假设我们想要实现:当BTC价格跌破30000美元时,自动买入0.01个BTC;当价格涨到35000美元时,自动卖出0.01个BTC,下面就是一个简单的实现:
# 初始化API
api = OkCoinAPI("你的API_KEY", "你的SECRET_KEY", "你的PASSPHRASE")
def get_btc_price():
"""获取BTC/USDT当前价格"""
path = "/api/v5/market/ticker?instId=BTC-USDT"
result = api._request("GET", path)
return float(result['data'][0]['last'])
def place_order(side, size):
"""下单函数,side='buy'或'sell',size为数量"""
path = "/api/v5/trade/order"
params = {
"instId": "BTC-USDT",
"tdMode": "cash",
"side": side,
"ordType": "market",
"sz": str(size)
}
result = api._request("POST", path, params)
return result
# 主循环
while True:
try:
price = get_btc_price()
print(f"当前BTC价格: {price}")
if price < 30000:
print("价格低于30000,执行买入...")
order = place_order("buy", 0.01)
print("买入结果:", order)
elif price > 35000:
print("价格高于35000,执行卖出...")
order = place_order("sell", 0.01)
print("卖出结果:", order)
else:
print("价格在区间内,等待...")
time.sleep(60) # 每分钟检测一次
except Exception as e:
print("发生错误:", e)
time.sleep(10)
这个脚本很简单:每分钟检查一次价格,达到条件就市价下单,实际使用中,你还可以加入止损、止盈、分批建仓等逻辑。
注意:这只是演示代码,不构成投资建议,实际交易时建议先用模拟盘测试,很多交易所都提供模拟交易API接口,比如欧易交易所官网的模拟盘环境。
常见问题与踩坑指南
问题1:API请求返回“签名错误”
- 检查API Key和Secret Key是否填对
- 检查时间戳是否与服务器时间同步(误差超过30秒会报错)
- 检查请求路径是否正确,比如
/api/v5/开头的版本号
问题2:下单失败,提示“资金不足”
- 查看账户余额,确保有足够USDT或BTC
- 注意交易对的数量精度,比如BTC最小交易量可能是0.0001
问题3:代码运行一段时间后报错
- 可能是网络波动,加入重试机制
- 可能被交易所限流,适当增加间隔时间
问答环节:开发者最关心的5个问题
问1:API Key和Secret Key可以放在代码里吗? 答:绝对不要!硬编码极其危险,建议存成环境变量或配置文件,并且不要上传到GitHub,在欧易交易所官网的API管理页面可以随时禁用/删除Key。
问2:市价单和限价单有什么区别? 答:市价单立即以当前最优价格成交,速度快但有滑点;限价单指定价格,不一定立即成交,初学者建议从市价单开始。
问3:Python脚本需要一直运行吗? 答:是的,你可以放在云服务器或树莓派上24小时运行,推荐使用阿里云、腾讯云的轻量服务器,每月几十块钱。
问4:交易频率有限制吗? 答:有的,欧易API有频率限制,比如每2秒最多请求20次,高频交易需要谨慎,否则会被暂时封禁。
问5:有没有现成的开源交易框架?
答:有的,比如freqtrade、ccxt等,但建议你先理解原理,再使用现成框架,毕竟涉及资金,多一份谨慎总没错。
最后想说的是,自动化交易脚本虽然方便,但一定要做好风险控制,先用小资金测试,设置好止损线,不要全仓梭哈,如果你在编写过程中遇到问题,可以到欧易交易所官网的开发者社区交流,那里有很多经验丰富的同行,记得先完成欧易交易所下载客户端,这样你可以在移动端也及时查看交易状态。
希望这篇教程能帮你顺利开启自动化交易之路!