你可能遇到的问题:
- 请求被Ban,国内服务器无法直接访问OKX API接口;
- 使用HTTP Proxy代理存在网络不稳定性与秘钥安全问题;
- 运行实盘算法需要高配置服务器,同配置的境外服务器价格比境内服务器价格贵数倍以上;
- 本地测试每次都需要将代码同步给境外服务器,测试不方便;
- 实盘服务的请求权重过多,经常被官方限制,如何通过多IP减缓权重压力;
你需要的可能是OKX_resender——来自PyTED量化交易全家桶的一员。
OKX_resender是用于转发OKX请求的Web服务,帮助用户搭建私有转发服务器,保证请求的稳定、低延时与秘钥安全,OKX(库)实盘交易框架全面支持OKX_resender功能。
- 系统:Centos7.6
- 地区:香港
- 转发服务器性能最低要求:(2C2G10Mbps)建议:(2C4G30Mbps)
- 以下文档采用腾讯云的轻量应用服务器(2C4G30Mbps)
GITHUB:https://github.com/pyted/okx_resender
cd /root
mkdir download
cd download
wget https://www.python.org/ftp/python/3.8.4/Python-3.8.4.tgz
yum -y install openssl-devel
yum -y install bzip2-devel
yum -y install expat-devel
yum -y install gdbm-devel
yum -y install readline-devel
yum -y install sqlite-devel
yum -y install zlib-devel
yum -y install libffi-devel
yum -y install gcc
yum -y install zlib*
tar -xvf Python-3.8.4.tgz
cd Python-3.8.4
mkdir /usr/local/python3.8.4
./configure --prefix=/usr/local/python3.8.4
make && make install
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /usr/local/python3.8.4/bin/python3 /usr/bin/python3
ln -s /usr/local/python3.8.4/bin/pip3 /usr/bin/pip3
python3
pip3 --version
cd /root
yum -y install git
git clone https://github.com/pyted/okx_resender
cd okx_resender
pip3 install -r requirements.txt --upgrade
注意:urllib3的版本,过高可能报错,建议版本为:
pip3 install urllib3===1.26.12
vi /usr/local/python3.8.4/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py
注释点sqlite3,换成pysqlite3
# from sqlite3 import dbapi2 as Database
from pysqlite3 import dbapi2 as Database
yum -y install screen
screen -S okx_resender_server
cd /root/okx_resender
python3 -m uvicorn okx_resender.asgi:application --port 80 --host 0.0.0.0
浏览器中访问:http://公网IP地址
注意:防火墙注意需要开放HTTP|HTTPS端口
初始账号:root,密码:123456
点击“用户”。
点击“root”。
点击表单。
输入新密码,点击“修改”。
点击“白名单”。
添加IP地址。
测试转发
from okx.api import API # pip3 install okx --upgrade
from okx.app.utils import eprint
if __name__ == '__main__':
proxy_host = 'http://43.156.53.213/' # OKX_resender地址
api = API(proxy_host=proxy_host)
ticker_result = api.market.get_ticker(instId='BTC-USDT')
eprint(ticker_result, length=20)
输出:
>>> {'code': '0',
>>> 'msg': '',
>>> 'data': [{'instType': 'SPOT',
>>> 'instId': 'BTC-USDT',
>>> 'last': '58094.9',
>>> 'lastSz': '0.0003115',
>>> 'askPx': '58095',
>>> 'askSz': '0.17203296',
>>> 'bidPx': '58094.9',
>>> 'bidSz': '0.09242288',
>>> 'open24h': '56071.8',
>>> 'high24h': '58128',
>>> 'low24h': '55997.4',
>>> 'volCcy24h': '836788458.103560697',
>>> 'vol24h': '14698.79688154',
>>> 'ts': '1709106665172',
>>> 'sodUtc0': '57042.9',
>>> 'sodUtc8': '56748'}]}
修改是否启动记录日志。
- 注意服务器的带宽,最佳应>=30Mpbs,因为有些单次请求的数据量较大,转发速度的瓶颈在于带宽(例如:获取全部产品信息);
- 不建议打开日志记录功能,极简配置更利于转发速率;
- 推荐使用服务器的内网调用,减少通信延迟;
- 对于时间粒度为1s的高频交易,实时价格信息同步不建议使用OKX_resender;
- 以香港服务器为例。内地通过OKX_resender转发并获得响应的平均等待时间为:220ms(公网通信)
- 香港服务器与OKX通信的平均等待时间为:80ms
- OKX仅建议使用香港服务器