毫秒级响应速度,支持高并发交易请求,确保您的策略能够及时执行,不错过任何交易机会。
采用银行级加密技术,多重身份验证机制,全方位保护您的交易数据和资金安全。
提供完整的SDK和RESTful API,支持Python、JavaScript、Java等多种编程语言。
提供实时行情数据、深度行情、K线数据等,支持WebSocket推送,满足各种策略需求。
支持自定义参数配置,可灵活调整交易规则、风控设置,适配不同交易策略。
7x24小时技术支持团队,提供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();
}
}
}
访问官网或下载APP,完成账号注册和实名认证
在控制台创建API Key,妥善保管Secret Key
安装所需编程环境和依赖库
参考示例代码,编写您的交易策略
在模拟环境测试您的策略,验证交易逻辑
切换到实盘环境,开始自动化交易