• 交易所系统设计 exchange trading system design


    exchange trading system design 交易所系统设计

    model关系

    用户 1 --》n 账户 account
    账户 1 --》n 订单 order
    订单 1 --》n 账单流水ledger

    model设计关键

    订单order:
    type 类型 :

    • market order
    • limit order
      方向 side:
    • buy
    • sell
      ID:
    • 订单id order_id
    • 用户设置的订单ID(系统foreign key to join)client_id
      状态 status:
    • submitted(始态)
    • open
    • filled(终态)
    • partial-filled
    • canceled(终态)
    • partial-canceled(终态)

    账单流水ledger:

    • balance 余额
    • order_id 关联foreign key
    • amount 变动的量
    • currency 币种(数字货币&外汇比较重要)
    • type 流水来源/类型
      • trade 交易
      • transfer 转账
      • fee 手续费
      • rebate 返佣

    账户

    • ID 账户ID
    • balance 余额
    • hold 冻结
    • available 可用余额
    • currency 币种
    • type/name 用于区分用途

    钱包账户-- 可用理解成总账户,与对外的流水入口。譬如充值、提现关联.
    参考 okex 账户体系

    每次的流水都记录当前的balance

    holding:持仓,指数量(股数),跟market price不挂钩

    portfolio

    product & instrument

    rest api 设计

    • version control v1 v2 v3 in url
      2018-09-12T07:46:19.435ZGET/api/spot/v3/accounts/btc/ledger?limit=1&from=2&to=4 check

    注意所有的数字在传输的时候都是 string,防止数据在加密过程中容易出错,并保留固定位数。(防止 2.00 与 2.000 有差别)

    performance metric

    • return
    • exposure
    • unrealized return

    错误码

    安全

    交易撮合

    关于时间 UTC String(Thu, 14 Mar 2019 08:06:39 GMT) vs timestamp (1552550799091) vs ISODate (2019-03-14T08:06:39.091Z)
    建议 ISODate

    • 优点:比较直观的是ISODate , 通用,便于时区识别
    • 缺点:排序稍差于 timestamp

    币币交易

    期货/合约交易

    数据

    数据存储:

    • 区分热数据、冷数据
      • 热数据:最近的、要实时快的
      • 冷数据:稍久的,允许稍长一点的时延

    kline 的数据存储

    • 按频率区分开表格存
    • 不用筛选,快速

    数据真的太多了怎么办

    • 某日清算正确后,可以将balance 等关键信息汇总至某日,作为snapshot。以后基于这个数据去计算
    • 某日清算正确前的数据,把数据存到冷存储,如磁带机(多份)

    架构

    Kong 分发不同的交易币种种,不同的交易产品(期货合约/币币交易/法币/其他API)

    `
    $ curl -I https://www.okex.com
    HTTP/1.1 200 Tunnel established

    HTTP/1.1 200
    Content-Type: text/html;charset=UTF-8
    Content-Length: 45825
    Connection: keep-alive
    Vary: Accept-Encoding
    X-RateLimit-Limit-second: 50
    X-RateLimit-Remaining-second: 49
    X-RateLimit-Limit-minute: 100
    X-RateLimit-Remaining-minute: 99
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Pragma: no-cache
    Expires: 0
    X-Frame-Options: SAMEORIGIN
    Set-Cookie: locale=en_US; Max-Age=604800; Expires=Thu, 28-Mar-2019 03:39:44 GMT; Path=/
    Content-Language: en-US
    Date: Thu, 21 Mar 2019 03:39:44 GMT
    X-Kong-Upstream-Latency: 13
    X-Kong-Proxy-Latency: 0
    Via: kong/0.12.3

    `

    容量估计:

    • 带宽
    • 数据
    • 系统压力

    关键子系统概述:

    • 行情系统
    • 交易系统
    • 风控系统
    • 营销系统

    量化策略系统

    • 行情系统
    • 交易系统
    • 风控系统
    • 策略系统

    ref :

    okex api

    huobi api

  • 相关阅读:
    PHP mysqli_sqlstate() 函数
    修改用户家目录
    mysql 我的学习
    mysql 表空间
    mysql cluster 运行的必备条件
    浅谈mysql集群
    RBAC权限管理
    mysql 恢复备份
    oracle10G/11G官方下载地址集合 直接迅雷下载
    MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持
  • 原文地址:https://www.cnblogs.com/no7dw/p/13628880.html
Copyright © 2020-2023  润新知