Python 交换引擎
项目描述
Python 原生 Exchange 引擎
浅褐色的
为什么是米色?
因为它不是特别有吸引力,所以可能有更好的颜色,但它有点工作。我很惊讶还没有同名的包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
查看哈希)
内置分布
beige-0.1.2-py2.py3-none-any.whl
(3.7 kB
查看哈希)