Skip to main content

Python 交换引擎

项目描述

Python 原生 Exchange 引擎

网站派皮PyPI - 许可证GitHub 问题

浅褐色的

为什么是米色?

因为它不是特别有吸引力,所以可能有更好的颜色,但它有点工作。我很惊讶还没有同名的包beige

一个简单、缓慢的交换库

Beige 是一个非常简单的库,提供匹配引擎的全部功能,具有跟踪账户余额和持续报价的功能。

例子

导入正确的位,并启动引擎

from beige import Engine, Order, Market, Limit, Side

# Create the engine
eng = Engine()

账户余额可以在市场时段开始时初始化

# Start a person off with some given account balance
eng.accounts.init('person-a', {'$':100.01, 'TSLA':1})

# Person is missing 1 dollar, and owns 10 'what?'
eng.accounts.init('person-b', {'$':-1, 'what?':10})

然后可以以相当直观的方式提交订单:

# Limit buy order for 'what?' security, 1
# Store the ID, and we can query its status later
oid = eng.submit(
  Order(
    instrument = 'what?',
    type_ = Limit(10),
    side = Side.Sell,
    quantity = 5,
    entity = 'person-b',
  )
)

# Submit a market order that
eng.submit(
  Order(
    'WHAT?',
    Market(),
    Side.Buy,
    1,
    'person-a',
  )
)

检索到订单 ID 后,我们可以随时查看订单的完整信息:

o = eng.status(oid)
# type(o) == dict
# o.keys() == ['sym','price','side','qty','acct','id','submitted','filled','averagepx','filledtime','status']

提供完整的按时间顺序排列的交易数据集

df = eng.txs
# df.columns = ['qty','px','time','sym']

在任何时候,都可以要求报价。请注意,None将返回任何不可用的值,例如,last如果尚未发生任何事务,则该值将为空。

bid, ask, last, bidsize, asksize, lastsize = eng.quote('TSLA')

限制

  • 速度。该软件尚未完全优化,许多数据结构可以真正受益于一点爱和关怀。
  • 仅整数数量
  • 所有账户实体和证券不区分大小写,并将全部大写
  • “$”证券编码现金,是所有证券交易的基本单位。对不起前美国用户!

测试

  • 正确性 =>python3 tests.py
  • 速度 =>python3 tests.py speed
  • 探查器 =>python3 tests.py profile

我平均每个订单执行大约 0.15 毫秒。这适用于我正在研究的顺序市场,但这可能比您的用例所需的速度慢几个数量级。随意提高速度,但请将请求拉回给我。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

beige-0.1.2.tar.gz (4.5 kB 查看哈希)

已上传 source

内置分布

beige-0.1.2-py2.py3-none-any.whl (3.7 kB 查看哈希

已上传 py2 py3