深度解析 okex-php:最简洁的 OKX V5 API 与 WebSocket 开发指南

·

核心关键词:okex-php、OKX API、加密货币交易、PHP SDK、WebSocket V5、量化交易接口、比特币行情、订单接口、账户管理、模拟盘

1. okex-php 是什么?

okex-php 是一套完全对齐官方 OKX V5 文档的 PHP SDK,开箱即用、零依赖心智负担。它集成了 REST API、WebSocket(V3/V5)、现货与衍生品交易、订单管理、账户查询等全部高频操作,并且内置本地日志与守护进程,让你的量化脚本在 Linux 服务器上也能长期驻留稳定运行。

👉 想先一步体验实时盘口?点这里直达 OKX 交易所!


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 设计思路

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: 检查要点

Q4: 量化策略 approval 测试额度太低?
A: 新用户默认 10 USDT 模拟盘额度;完成 高级身份认证(KYC) 后可手动扩容至 1000 USDT。

Q5: Mountain 版本和 V5 接口区别?
A: Mountain 为旧 V3,官方 2023 年底已全面迁移至 V5;建议新项目直接采用 V5 接口,支持统一账户体系。


7. 进阶技巧


8. 总结 & 下一步

借助高度封装的 okex-php,从“建仓库”到“跑策略”,你只需 15 分钟。官方一次编写,跨平台运行,既适用于本地回测,也能无缝迁移上云。下一步,可接入其他交易所的统一治理包 exchanges-php,实现跨所套利、对冲,扩展你的量化版图。

祝编码顺利,收益长虹!