核心关键词:okex-php、OKX API、加密货币交易、PHP SDK、WebSocket V5、量化交易接口、比特币行情、订单接口、账户管理、模拟盘
1. okex-php 是什么?
okex-php 是一套完全对齐官方 OKX V5 文档的 PHP SDK,开箱即用、零依赖心智负担。它集成了 REST API、WebSocket(V3/V5)、现货与衍生品交易、订单管理、账户查询等全部高频操作,并且内置本地日志与守护进程,让你的量化脚本在 Linux 服务器上也能长期驻留稳定运行。
2. 快速上手
2.1 安装
环境要求:PHP ≥7.2,已安装 Composer。
composer require linwj/okex安装后即自动注册命名空间 Lin\Okex\*,零配置直接写业务逻辑。
2.2 配置项速览
$okex = new OkexSpot(); // 现货示例
$okex = new OkexV5($key, $secret, $passphrase); // V5 全功能
$okex->setOptions([
'timeout' => 10, // HTTP 超时
'proxy' => [], // 代理
'curl' => [], // cURL 参数
'headers' => ['x-simulated-trading' => 1] // 开启模拟盘
]);3. V5 REST API 深度走查
3.1 市场接口:一句话获取全币种行情
use Lin\Okex\OkexV5;
$okex = new OkexV5();
$tickers = $okex->market()->getTickers(['instType' => 'SPOT']);
$btcIndex = $okex->market()->getIndexTickers(['instId' => 'BTC-USD']);
$btcKline = $okex->market()->getCandles(['instId' => 'BTC-USDT']);3.2 订单接口:生成、撤单、改单,三行代码实现
try {
$order = $okex->trade()->postOrder([
'instId' => 'BTC-USDT',
'tdMode' => 'cross', // 全仓
'side' => 'buy',
'ordType'=> 'limit',
'px' => '25000',
'sz' => '0.01',
]);
} catch (\Exception $e) {
print_r(json_decode($e->getMessage(), true));
}改单示范:实时调仓无压力。
$okex->trade()->postAmendOrder([
'instId' => 'BTC-USDT',
'ordId' => $order['data'][0]['ordId'],
'newPx' => '26000',
]);3.3 账户接口:资金掌控到“每一分”
$balance = $okex->account()->getBalance(); // 账户余额
$positions = $okex->account()->getPositions(); // 持仓
$bills = $okex->account()->getBills(); // 资金流水4. WebSocket V5:长连接实时数据流
4.1 Server 启动(守护进程)
use Lin\Okex\OkexWebSocketV5;
require 'vendor/autoload.php';
$okex = new OkexWebSocketV5();
$okex->config(['log' => true]);
$okex->start(); // CLI: php server.php start -d启动后,本地 0.0.0.0:2207 端口即成为 WebSocket 网关,负责与 OKX 的长连接、断线重连及心跳。
4.2 Client 订阅:公域行情 + 私域账户
$okex = new OkexWebSocketV5();
$okex->config(['log' => ['filename' => 'okex']]);
// 公域:盘口、K 线、深度
$okex->subscribe([
['channel' => 'tickers', 'instId' => 'BTC-USDT'],
['channel' => 'books5', 'instId' => 'BTC-USDT'],
['channel' => 'candle5m', 'instId' => 'BTC-USDT'],
]);
// 私域:仓位、订单、资产
$okex->keysecret([
'key' => '你的 apiKey',
'secret' => '你的 secret',
'passphrase'=> 'passphrase',
]);
$okex->subscribe([
['channel' => 'account'],
['channel' => 'positions', 'instType' => 'FUTURES'],
['channel' => 'orders'],
]);👉 一分钟极速接入 OKX WebSocket,获取毫秒级行情!
5. 场景化示例:打造迷你网格机器人
5.1 设计思路
- 每 30 秒获取现货盘口 top-of-book
- 当买一价低于阈值 25000 立刻下限价买单
- 成交后挂高 1% 的限价卖单,俗称“网格吃单”
5.2 伪代码
while (true) {
$book = $okex->market()->getBooks(['instId' => 'BTC-USDT', 'sz' => 1]);
$bid = $book['data'][0]['bids'][0][0];
if ($bid < 25000) {
$okex->trade()->postOrder([
'instId' => 'BTC-USDT',
'side' => 'buy',
'tdMode' => 'cash',
'ordType'=> 'limit',
'px' => $bid,
'sz' => '0.001',
]);
}
sleep(30);
}6. 实战 FAQ
Q1: 报 60005 错误是什么?
A: 60005 常见于请求时间戳与服务器相差过大,请确保服务器 NTP 对时 误差 ≤30s。
Q2: IP 白名单怎么设置?
A: 登录 OKX — 右上角头像 — API 管理 — 对应密钥旁的“设置”按钮,填入部署服务器公网 IP,保存即可。
Q3: WebSocket 总是断线?
A: 检查要点
- 本地端口 2207 是否被其他进程占用
- Linux CLI 模式下是否使用
-d常驻 - 日志显示
ping timeout,可以增加心跳参数'ping_time' => 30
Q4: 量化策略 approval 测试额度太低?
A: 新用户默认 10 USDT 模拟盘额度;完成 高级身份认证(KYC) 后可手动扩容至 1000 USDT。
Q5: Mountain 版本和 V5 接口区别?
A: Mountain 为旧 V3,官方 2023 年底已全面迁移至 V5;建议新项目直接采用 V5 接口,支持统一账户体系。
7. 进阶技巧
- 代理加速:若部署在大陆,使用 SOCKS5 代理避免连接超时。
- 分片日志:大型策略可把不同交易对的行情写入独立 log 文件方便审计。
- 熔断保护:在 config 里加
'queue_count' => 2000避免高并发时内存溢出。 - 热重载:使用
inotifywait监控 server.php,改代码后自动重启进程,零停机。
8. 总结 & 下一步
借助高度封装的 okex-php,从“建仓库”到“跑策略”,你只需 15 分钟。官方一次编写,跨平台运行,既适用于本地回测,也能无缝迁移上云。下一步,可接入其他交易所的统一治理包 exchanges-php,实现跨所套利、对冲,扩展你的量化版图。
祝编码顺利,收益长虹!