📚 目录导读
- 为什么交易员都在学Python脚本?
- 欧易API接口申请全流程(附避坑指南)
- Python环境配置与依赖安装
- 编写第一个自动交易脚本(代码可跑通)
- 常见问题与避坑问答
- 进阶玩法:让脚本自动盯盘止损
为什么交易员都在学Python脚本?
最近总有人问我:“币圈交易能不能像炒股软件一样自动挂单?” 答案是肯定的——只要你会用API,欧易交易所(全球顶级合规平台)提供了完善的REST API和WebSocket接口,而Python因为语法简单、生态成熟,成了写交易脚本的首选语言。

一个真实的场景:小王每次看到BTC跌到支撑位想手动买入,结果因为网络延迟或手速慢,总错过最佳价格,后来他花2小时写了个Python脚本,设定“当价格跌破30000时自动买入0.01BTC”,结果一周内成功捕捉3次深V反弹,这就是API脚本的价值——让机器执行你的策略,不再依赖手速和情绪。
欧易API接口申请全流程(附避坑指南)
第一步:登录欧易交易所官网
打开 https://okht.com.cn/ (记得先完成实名认证,否则无法申请API)。
第二步:进入API管理页面
点击右上角“头像”→“API管理”→“创建API”,注意:建议新建专门的交易API,不要共用一个,方便权限控制。
第三步:设置权限和IP白名单
- 权限:勾选“交易”和“读取”(提现权限别勾,防资产被盗)。
- IP白名单:强烈建议绑定你服务器的公网IP,如果在家测试,填你的路由器IP(百度搜“我的IP”即可)。不设白名单?你的脚本可能被黑客远程调用,币直接被转走。
第四步:保存API Key和Secret Key
创建后你会得到一串 api_key(约32位字符)和 secret_key(约64位字符)。务必复制保存到本地txt,关掉页面后永不可见,只能重置,另外推荐勾选“绑定交易密码”,每次交易额外验证一次,多一层保险。
Python环境配置与依赖安装
你需要准备:
- Python 3.8+(推荐3.10)
- 一个代码编辑器(我用VS Code)
- 少量命令行基础
安装核心库:
打开终端(Mac用Terminal,Windows用cmd),依次输入:
pip install requests pandas ccxt
requests:发HTTP请求pandas:处理行情数据ccxt:统一加密交易所API封装(支持100+交易所,欧易也在其中,这库能帮你省掉80%的签名加密工作)
为什么选ccxt? 因为手动构造REST请求需要做HMAC-SHA256签名、时间戳校验、请求体序列化,新手容易卡3天,而ccxt一行 exchange.create_order() 就完成交易,省心。
编写第一个自动交易脚本(代码可跑通)
下面这个脚本实现 “定时检查BTC价格,当最新价低于设定阈值时,市价买入指定金额”,我会逐行注释,确保你复制就能跑。
import ccxt
import time
# ====== 配置区(将你的API密钥填入) ======
EXCHANGE = "okx" # 欧易在ccxt里叫okx
API_KEY = "你的api_key"
SECRET_KEY = "你的secret_key"
PASSWORD = "你的交易密码" # 如果申请时没设交易密码,留空
# 交易参数
SYMBOL = "BTC/USDT" # 交易对
THRESHOLD_PRICE = 30000 # 当价格低于这个数时买入
BUY_AMOUNT = 20 # 每次买入20 USDT等值的BTC
# ====== 初始化交易所 ======
def init_exchange():
exchange = ccxt.okx({
'apiKey': API_KEY,
'secret': SECRET_KEY,
'password': PASSWORD,
'enableRateLimit': True, # 自动限制请求频率,防封IP
})
# 设置沙盒模式(可先去欧易官网的沙盒环境测试,不真实交易)
# exchange.set_sandbox_mode(True)
return exchange
# ====== 获取最新价格 ======
def get_last_price(exchange):
ticker = exchange.fetch_ticker(SYMBOL)
return ticker['last']
# ====== 执行买入 ======
def buy_btc(exchange, amount_usdt):
order = exchange.create_market_buy_order(
SYMBOL,
amount_usdt / get_last_price(exchange), # 根据当前价格换算数量
{'type': 'market', 'tgtCcy': 'quote_ccy'} # 按USDT金额购买
)
return order['id']
# ====== 主循环 ======
def main():
exchange = init_exchange()
print("🚀 交易机器人启动,价格阈值:", THRESHOLD_PRICE)
while True:
try:
price = get_last_price(exchange)
print(f"⏰ 当前价格:{price:.2f} USDT")
if price < THRESHOLD_PRICE:
# 检查账户余额(可选,确保有足够USDT)
balance = exchange.fetch_balance()
usdt_balance = balance['USDT']['free']
if usdt_balance < BUY_AMOUNT:
print("⚠️ USDT余额不足,仅剩", usdt_balance)
else:
order_id = buy_btc(exchange, BUY_AMOUNT)
print(f"✅ 买入成功!订单ID:{order_id}")
# 买入后暂停10分钟,避免连续买入
time.sleep(600)
else:
print("价格未达阈值,等待检查...")
except Exception as e:
print(f"❌ 错误处理:{e}")
# 错误后暂停30秒再重试
time.sleep(30)
# 每30秒检查一次价格
time.sleep(30)
if __name__ == "__main__":
main()
运行前必做检查:
- 把
API_KEY、SECRET_KEY、PASSWORD换成你自己的。 - 如果你的欧易账号是中文版域名,确保
ccxt版本≥4.0(老版本可能不支持交易密码参数)。 - 先用沙盒模式测试:取消
exchange.set_sandbox_mode(True)的注释,去欧易官网 https://okht.com.cn/ 申请沙盒API Key(免费),验证脚本能否成功下单。
常见问题与避坑问答
❓ 问:我的脚本报错“Invalid signature”怎么办?
答:99%情况是 Secret Key 复制错了(多了空格或少字符),去欧易API管理页面,重置Secret Key,重新复制粘贴,还有可能是系统时间不准(与服务器差>30秒),同步电脑时间到time.nist.gov即可。
❓ 问:运行脚本后,它没有按我设定的价格买入?
答:检查 THRESHOLD_PRICE 是整数还是浮点数,比如你设30000,但BTC报价29999.5,条件 price < 30000 满足吗?Python浮点数比较没问题,如果还不触发,可能是火币、币安之类的平台价差——确保你的欧易账户有USDT余额,且交易对是活跃的。
❓ 问:脚本会消耗太多请求次数吗?
答:欧易API限制每分钟20次请求(免费版),我这个脚本每30秒查一次价格,一天2880次请求,绰绰有余,如果你要高频交易,考虑用 WebSocket 实时流(多花点精力),或者付费升级API限制。
❓ 问:可以通过手机远程监控脚本吗?
答:把脚本部署到云服务器(腾讯云最低配一年200元),然后安装 python-telegram-bot,让脚本发现异常时给你的Telegram发消息。目前最简单的方案是结合IFTTT,把脚本的 print 改成 requests.post(IFTTT_Webhook_URL),手机会收到推送。
进阶玩法:让脚本自动盯盘止损
你还可以扩展脚本增加止损功能:
# 在main函数中添加止损逻辑
stop_loss_price = 28000 # 当BTC跌破28000时卖出
if price < stop_loss_price:
# 市价卖出全部BTC
exchange.create_market_sell_order(SYMBOL, btc_balance)
print("⚠️ 触发止损,已自动卖出")
break # 退出脚本,等待人工干预
不过注意,真正的交易策略需要回测,不要直接拿真钱跑,你可以先在欧易的模拟盘(Demo Trading)里测试几天,确认逻辑能赚钱再上实盘。
行动建议
- 注册并认证:通过 https://okht.com.cn/ 注册欧易账号,完成KYC。
- 创建测试API:沙盒模式零成本入门。
- 运行脚本:下载Python,按本文代码试跑,改几个参数。
- 优化策略:比如加上移动平均线判断,或接入Telegram警报。
写脚本最怕半途而废,但只要你按本文步骤走,30分钟内就能跑通第一个自动交易。代码不值钱,策略才值钱;API不值钱,执行力才值钱,如果你在申请或调试中遇到问题,欢迎在评论区留言,我会逐一回复。
标签: 欧易API Python交易脚本