Skip to content

Proposal: 构建 standx Python SDK #170

@wjllance

Description

@wjllance

构建 standx Python SDK

调研结果

官方现状

StandX 仅提供 REST API + WebSocket API没有官方 SDK

  • REST: https://perps.standx.com
  • WebSocket: wss://perps.standx.com/ws-stream/v1

开发者需要自行处理:

  • HTTP 请求封装
  • WebSocket 连接管理
  • JWT 签名认证
  • 数据解析和分页

市场需求

没有社区开发的 Python/JS SDK,开发者必须:

  1. 直接调用 REST API (需要自己写 HTTP 客户端)
  2. 自己处理签名和认证
  3. 自己实现 WebSocket 重连和心跳

方案: 构建 standx Python SDK

目标

为 Python 开发者提供简洁易用的 SDK,封装:

  • ✅ REST API 调用
  • ✅ WebSocket 实时数据
  • ✅ JWT 认证签名
  • ✅ 常用策略模板

架构设计

┌─────────────────────────────────────────┐
│           standx-python-sdk            │
├─────────────────────────────────────────┤
│  StandXClient                          │
│  ├── REST API                          │
│  │   ├── market.ticker()               │
│  │   ├── market.depth()                │
│  │   ├── account.positions()           │
│  │   └── order.create()                │
│  │                                     │
│  └── WebSocket                         │
│      ├── subscribe_price()             │
│      ├── subscribe_depth()             │
│      └── on_order_update()             │
├─────────────────────────────────────────┤
│  Auth                                  │
│  ├── generate_jwt()                    │
│  └── verify_token()                    │
├─────────────────────────────────────────┤
│  Strategies (可选)                     │
│  ├── GridTrading                       │
│  ├── TrendFollowing                    │
│  └── MarketMaking                      │
└─────────────────────────────────────────┘

使用示例

from standx import StandXClient

# 初始化客户端
client = StandXClient(wallet_private_key=\"0x...\")

# 市场数据
ticker = client.market.ticker(\"BTC-USD\")
depth = client.market.depth(\"BTC-USD\", limit=20)

# 账户操作
positions = client.account.positions()
balance = client.account.balance()

# 下单
order = client.order.create(
    symbol=\"BTC-USD\",
    side=\"buy\",
    order_type=\"limit\",
    qty=\"0.1\",
    price=\"67000\"
)

# WebSocket 实时数据
client.websocket.subscribe_price(\"BTC-USD\")
client.websocket.on_price(lambda price: print(price))

MVP 功能

功能 优先级
REST API 封装 P0
WebSocket 实时行情 P0
认证签名 P0
基础订单操作 P0
策略模板 (网格) P1
策略模板 (趋势) P2

项目结构

standx-python-sdk/
├── standx/
│   ├── __init__.py
│   ├── client.py          # 主客户端
│   ├── market.py          # 市场数据
│   ├── account.py         # 账户操作
│   ├── order.py           # 订单操作
│   ├── websocket.py       # WebSocket
│   ├── auth.py            # 认证
│   └── strategies/        # 策略模板
│       ├── __init__.py
│       ├── grid.py
│       └── trend.py
├── tests/
├── pyproject.toml
└── README.md

技术选型

  • Python: 3.10+
  • HTTP: httpx (async support)
  • WebSocket: websockets
  • 签名: eth_keys / eth_account

行动项

  • 创建 standx-python-sdk 仓库
  • 实现基础 REST API 封装
  • 实现 WebSocket 客户端
  • 添加认证模块
  • 发布到 PyPI

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions