中文 | English
期现套利: 期现套利是指当同币种的期货和现货存在较大价差时,通过买入低价方、卖出高价方,当两者的价差缩小时进行平仓,即可收获价差缩小部分利润
市场采用 OKX 现货杠杆和币本位合约
- 现货杠杆下单
- 币本位交割合约对冲
年化收益率 = (future_price - spot_price) / spot_price / future_expire_days * 365 * 100%
收益率参考 https://www.okx.com/zh-hans/markets/arbitrage/spread-usd
- DYOR (DO Your Own Research)
- 在正式使用策略前,建议先在模拟盘中进行测试,确认策略的稳定性和收益率
- 账户改为跨币种保证金 (升级至跨币种保证金模式,要求交易账户中权益不低于 10,000.00 USD)
- 策略模块中通过ws实时获取当前仓位和资金余额
- 获取数据处理模块获取实时收益率排名
- 开仓逻辑:
- 按序处理收益率排名中的交易对
- 判断数据是否超时(大于制定时间,比如10s)
- 超时则跳过
- 检查当前是否允许开仓
- 策略是否开启
- 现货USDT是否充足(balance > per_order_usd)
- 仓位是否达到上限
- 收益率是否达标
- 两腿下单
- 简单逻辑均为超价限价单,比如spot,以asks[5]为买价,future 以 bids[5] 为卖价
- 复杂逻辑:
- 现货maker,等ws成交消息过来后再下单合约taker,价格同上。风险点在于价格滑动过快 3. 精度处理
- 现货和合约的价格精度,根据市场数据来处理
- 现货size精度需要根据市场数据来处理
- 平仓逻辑
- 遍历当前持仓,获取对应的收益率,收益率低于平仓阈值的进行平仓处理
- 平仓操作亦是两腿下单,同时操作。
- redis = 6.x (e.g. 6.2.6)
- mysql = 8.0.x (e.g. 8.0.31)
DROP DATABASE basis_alpha_db;
create database basis_alpha_db charset=utf8mb4;
pip install -r requirements.txt
pip install -r requirements-dev.txt
- 创建管理后台用户
python manage.py createsuperuser --role=admin
- 初始化数据库表格
python manage.py migrate
访问 http://localhost:8000/admin/strategy/account/add/ 添加账户
注意Api Secret字段需要使用加密后的密文,使用tools/aes_encrypt.py进行加密
添加策略配置
- 配置环境变量 测试环境(模拟盘)
export PROFILE=dev
正式环境
export PROFILE=production
- 管理后台(账户管理、策略配置、订单管理)
python manage.py runserver
- 市场数据模块
python manage.py start_okx_future_spot_spider
- 策略模块
python manage.py start_strategy --strategy_name test --account_name okx_test_account
Exception: Can not find valid pkg-config name.
Install MySQL client and pkg-config using Homebrew: brew install mysql-client pkg-config
Set the PKG_CONFIG_PATH environment variable: export PKG_CONFIG_PATH="$(brew --prefix)/opt/mysql-client/lib/pkgconfig"
Install the mysqlclient package using pip: pip install mysqlclient==2.2.4