目录导读
- 欧易API接口申请的前期准备
- 如何获取API密钥与安全配置
- Python环境搭建与依赖库安装
- 编写第一个行情查询脚本
- 实现简单的买卖交易功能
- 常见问题与安全警示(含问答)
欧易API接口申请的前期准备
想要通过Python自动交易,首先得拥有一套属于自己的API密钥,很多新手卡在这一步——其实欧易官网的申请流程非常直观,你只需要登录自己的欧易交易所下载账户,在导航栏找到【账户】→【API管理】即可进入申请页面,申请前务必完成身份认证并启用谷歌两步验证,这是保障资产安全的基础。

申请时的三个关键选择:
- 权限勾选:交易脚本需要至少勾选“读取”和“交易”权限,不建议开启“提币”权限(即使你只是个人使用)。
- IP白名单:强烈建议绑定你运行脚本的公网IP,如果使用动态IP的电脑,可以先留空,但每次运行前最好手动锁定。
- 备注标签:像“我的Python机器人”这样的名字,方便后期管理多个密钥。
一旦生成,系统会弹出API Key和Secret Key两个字符串,请立即保存——Secret Key只会显示这一次,丢失后只能重新生成。
如何获取API密钥与安全配置
拿到密钥后,很多人会犯一个错误:把密钥直接硬编码在Python脚本里,这是极其危险的,我推荐的做法是:创建一个config.ini文件,用configparser库读取配置,这样即使脚本被传到GitHub,密钥也不会泄露。
示例配置文件内容:
[API]
api_key = 你的API_KEY
secret_key = 你的SECRET_KEY
passphrase = 你的交易密码(如果设置了)
在欧易官网的API管理页面,建议将“费率模式”设为“固定费率”,避免因手续费调整导致收益计算错误,如果你只是做简单的市价单交易,不勾选“杠杆交易”相关权限会更安全。
Python环境搭建与依赖库安装
开始编码前,请确保你的Python版本≥3.7,推荐用虚拟环境(比如venv)隔离项目依赖:
python3 -m venv okex_env source okex_env/bin/activate # Windows用 okex_env\Scripts\activate
安装核心库——ccxt是目前最成熟的数字货币交易库,它封装了包括欧易交易所下载在内的上百家交易所的API接口,代码简洁且支持多种模式:
pip install ccxt pip install pandas # 用于数据分析 pip install python-dotenv # 管理环境变量
库装好后,用一行代码就能连接交易所:
import ccxt
exchange = ccxt.okx({
'apiKey': '你的API_KEY',
'secret': '你的SECRET_KEY',
'password': '你的passphrase',
'enableRateLimit': True, # 防止触发频率限制
})
编写第一个行情查询脚本
我们先用一个最简单的例子验证连接是否成功——获取BTC当前价格:
import ccxt
exchange = ccxt.okx({
'apiKey': '你的API_KEY',
'secret': '你的SECRET_KEY',
'password': '你的passphrase',
})
# 获取Ticker数据
ticker = exchange.fetch_ticker('BTC/USDT')
print(f"当前价格:{ticker['last']} USDT")
print(f"24h成交量:{ticker['baseVolume']} BTC")
如果终端输出了价格和成交量,说明你成功通过API把Python和欧易交易所下载链接起来了,这里有个小技巧:fetch_ticker返回的字典包含bid(买一价)和ask(卖一价),做市策略通常盯这两个值。
进阶需求——获取K线数据:
# 获取最近10根1小时K线
ohlcv = exchange.fetch_ohlcv('ETH/USDT', timeframe='1h', limit=10)
for candle in ohlcv:
print(f"时间戳:{candle[0]}, 开:{candle[1]}, 高:{candle[2]}, 低:{candle[3]}, 收:{candle[4]}, 量:{candle[5]}")
实现简单的买卖交易功能
终于到了最关键的环节:下订单,我们写一个市价买入0.001 BTC的脚本:
def place_market_order(symbol, side, amount):
try:
order = exchange.create_market_order(symbol, side, amount)
print(f"订单号:{order['id']}")
print(f"成交均价:{order['price']}")
print(f"实际成交数量:{order['filled']}")
return order
except Exception as e:
print(f"交易失败:{e}")
# 示例:市价买入0.001 BTC
place_market_order('BTC/USDT', 'buy', 0.001)
注意:create_market_order的amount参数对“币本位”交易是数量,对“U本位”则是金额,如果你要买固定金额的ETH,可以这样写:
# 用USDT金额买入,第二个参数传数值即可
order = exchange.create_market_order('ETH/USDT', 'buy', 20) # 花20 USDT买ETH
限价单示例:
exchange.create_limit_order('ETH/USDT', 'buy', 0.1, 1800) # 以1800 USDT挂单买0.1个ETH
常见问题与安全警示(含问答)
Q1:为什么我运行脚本报错“invalid API-key”?
A:检查两点:1) 你的Secret Key是否复制完整(注意看不见空格);2) 是否在API管理页面绑定了IP白名单,而你的电脑IP变了,建议先删除所有白名单测试,确认环境无误再添加。
Q2:脚本一直报“Rate limit exceeded”怎么办?
A:这是触发交易所频率限制。enableRateLimit: True只能缓解,如果需要高频交易,推荐使用WebSocket接口,初学者建议订单间隔至少0.5秒。
Q3:怎么确保脚本不一直开着也能定时运行?
A:用操作系统的定时任务,Windows用“任务计划程序”设置每小时执行一次python bot.py;Linux用crontab,比“循环+sleep”更稳定。
安全问题特别提醒:
- 千万不要把密钥提交到GitHub,哪怕仓库private。
- 脚本测试时先用“模拟盘”或极小金额(比如1 USDT)测试。
- 设置风险熔断:当账户亏损超过10%时,自动停止所有订单。
通过这六个步骤,你已经掌握了如何通过欧易API接口申请密钥,并用Python编写一个能查行情、能下单的简单交易脚本,从查询价格到挂单交易,本质上就是调用封装好的ccxt方法,如果你想挑战更复杂的策略,可以研究下create_order中的各种参数,比如止盈止损、时间有效期(timeInForce)等,自动化交易的核心是“控制风险”,技术只是工具。
标签: 欧易API Python交易脚本