OE下载注册API使用指南

2026年最新量化交易接口文档,助力您快速构建专业的量化交易系统

苹果端 H5
适用于iOS、网页端
立即下载
APK 安卓端
适用于Android设备
立即下载

核心功能特性

高性能执行

毫秒级响应速度,支持高并发交易请求,确保您的策略能够及时执行,不错过任何交易机会。

安全可靠

采用银行级加密技术,多重身份验证机制,全方位保护您的交易数据和资金安全。

易于集成

提供完整的SDK和RESTful API,支持Python、JavaScript、Java等多种编程语言。

实时数据

提供实时行情数据、深度行情、K线数据等,支持WebSocket推送,满足各种策略需求。

灵活配置

支持自定义参数配置,可灵活调整交易规则、风控设置,适配不同交易策略。

专业技术支持

7x24小时技术支持团队,提供API使用指导、问题排查、性能优化等服务。

API接口文档

接口名称 请求方法 接口地址 描述
用户注册 POST /api/v1/register 新用户注册接口
用户登录 POST /api/v1/login 用户登录获取token
获取账户信息 GET /api/v1/account 获取账户余额和资产信息
下单交易 POST /api/v1/order 创建交易订单
查询订单 GET /api/v1/order/ 查询订单状态和详情
取消订单 DELETE /api/v1/order/ 取消未成交订单
获取历史数据 GET /api/v1/klines 获取K线历史数据
实时行情 GET /api/v1/ticker 获取实时行情数据

请求参数说明

参数名 类型 必填 说明
apiKey string API密钥
timestamp long 时间戳(毫秒)
signature string 签名
symbol string 交易对(如BTCUSDT)
side string 买卖方向(BUY/SELL)
type string 订单类型(LIMIT/MARKET)
quantity decimal 订单数量
price decimal 订单价格

响应格式说明

{
  "code": 200,
  "message": "success",
  "data": {
    "orderId": "123456789",
    "symbol": "BTCUSDT",
    "price": "45000.00",
    "quantity": "0.001",
    "status": "FILLED",
    "createTime": 1640995200000
  }
}

状态码说明:
200 - 请求成功
400 - 请求参数错误
401 - 未授权访问
403 - 访问被禁止
404 - 接口不存在
500 - 服务器内部错误

代码示例

import requests
import hashlib
import time
import hmac

class OEAPIClient:
    def __init__(self, api_key, secret_key):
        self.api_key = api_key
        self.secret_key = secret_key
        self.base_url = "https://api.example.com"
    
    def _sign(self, params):
        query_string = '&'.join(f"=" for k, v in sorted(params.items()))
        signature = hmac.new(
            self.secret_key.encode(),
            query_string.encode(),
            hashlib.sha256
        ).hexdigest()
        return signature
    
    def place_order(self, symbol, side, type, quantity, price=None):
        params = {
            'apiKey': self.api_key,
            'symbol': symbol,
            'side': side,
            'type': type,
            'quantity': quantity,
            'timestamp': int(time.time() * 1000)
        }
        
        if price:
            params['price'] = price
            
        params['signature'] = self._sign(params)
        
        response = requests.post(
            f"{self.base_url}/api/v1/order",
            params=params
        )
        return response.json()

# 使用示例
client = OEAPIClient("your_api_key", "your_secret_key")
result = client.place_order("BTCUSDT", "BUY", "LIMIT", "0.001", "45000")
print(result)
const crypto = require('crypto');
const axios = require('axios');

class OEAPIClient {
    constructor(apiKey, secretKey) {
        this.apiKey = apiKey;
        this.secretKey = secretKey;
        this.baseURL = 'https://api.example.com';
    }
    
    _sign(params) {
        const queryString = Object.keys(params)
            .sort()
            .map(key => `$=${params[key]}`)
            .join('&');
        
        return crypto
            .createHmac('sha256', this.secretKey)
            .update(queryString)
            .digest('hex');
    }
    
    async placeOrder(symbol, side, type, quantity, price = null) {
        const params = {
            apiKey: this.apiKey,
            symbol,
            side,
            type,
            quantity,
            timestamp: Date.now()
        };
        
        if (price) {
            params.price = price;
        }
        
        params.signature = this._sign(params);
        
        try {
            const response = await axios.post(
                `${this.baseURL}/api/v1/order`,
                null,
                { params }
            );
            return response.data;
        } catch (error) {
            console.error('Error placing order:', error);
            throw error;
        }
    }
}

// 使用示例
const client = new OEAPIClient('your_api_key', 'your_secret_key');
client.placeOrder('BTCUSDT', 'BUY', 'LIMIT', '0.001', '45000')
    .then(result => console.log(result))
    .catch(error => console.error(error));
import okhttp3.*;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class OEAPIClient {
    private final String apiKey;
    private final String secretKey;
    private final OkHttpClient httpClient;
    private final String baseURL = "https://api.example.com";
    
    public OEAPIClient(String apiKey, String secretKey) {
        this.apiKey = apiKey;
        this.secretKey = secretKey;
        this.httpClient = new OkHttpClient();
    }
    
    private String sign(Map params) 
            throws NoSuchAlgorithmException, InvalidKeyException {
        Map sortedParams = new TreeMap<>(params);
        StringBuilder queryString = new StringBuilder();
        
        for (Map.Entry entry : sortedParams.entrySet()) {
            if (queryString.length() > 0) {
                queryString.append("&");
            }
            queryString.append(entry.getKey()).append("=").append(entry.getValue());
        }
        
        Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
        SecretKeySpec secret_key = new SecretKeySpec(
            secretKey.getBytes(StandardCharsets.UTF_8), 
            "HmacSHA256"
        );
        sha256_HMAC.init(secret_key);
        
        return bytesToHex(sha256_HMAC.doFinal(
            queryString.toString().getBytes(StandardCharsets.UTF_8)
        ));
    }
    
    private String bytesToHex(byte[] bytes) {
        StringBuilder result = new StringBuilder();
        for (byte b : bytes) {
            result.append(String.format("%02x", b));
        }
        return result.toString();
    }
    
    public String placeOrder(String symbol, String side, String type, 
                           String quantity, String price) throws Exception {
        Map params = new HashMap<>();
        params.put("apiKey", apiKey);
        params.put("symbol", symbol);
        params.put("side", side);
        params.put("type", type);
        params.put("quantity", quantity);
        params.put("timestamp", String.valueOf(System.currentTimeMillis()));
        
        if (price != null) {
            params.put("price", price);
        }
        
        params.put("signature", sign(params));
        
        HttpUrl.Builder urlBuilder = HttpUrl.parse(baseURL + "/api/v1/order")
            .newBuilder();
        
        for (Map.Entry entry : params.entrySet()) {
            urlBuilder.addQueryParameter(entry.getKey(), entry.getValue());
        }
        
        Request request = new Request.Builder()
            .url(urlBuilder.build())
            .post(RequestBody.create("", null))
            .build();
            
        try (Response response = httpClient.newCall(request).execute()) {
            return response.body().string();
        }
    }
}

快速开始指南

1. 注册账号

访问官网或下载APP,完成账号注册和实名认证

2. 获取API密钥

在控制台创建API Key,妥善保管Secret Key

3. 配置环境

安装所需编程环境和依赖库

4. 编写代码

参考示例代码,编写您的交易策略

5. 测试运行

在模拟环境测试您的策略,验证交易逻辑

6. 正式交易

切换到实盘环境,开始自动化交易

常见问题解答

登录您的账户后,进入控制台 -> API管理 -> 创建新的API Key。系统会生成apiKey和secretKey,请务必妥善保管secretKey,它不会再次显示。

普通用户每秒最多10次请求,VIP用户每秒最多100次请求。超过限制会返回429状态码,请合理控制请求频率。

订单失败可能原因:余额不足、价格超出限制、市场休市等。请检查返回的错误代码,根据错误信息调整参数后重试。

是的,我们提供WebSocket接口,支持实时行情、订单状态、账户变动等数据推送,大幅提升数据获取效率。

建议使用HTTPS协议,定期更换API密钥,设置IP白名单,不要在代码中硬编码密钥,使用环境变量或配置文件管理敏感信息。

联系我们

电话咨询

邮件支持

QQ客服