algorithm - 资产价格是如何从证券交易所的订单簿中计算出来的?
问题描述
我想使用 C# 编程语言创建一个证券交易所模拟。但我无法决定如何指定资产的价格。
例如,下表是资产的订单簿:
Buy Sell
----------------------------- ----------------------------
ID Time Size Price ID Price Size Time
4 8:00:04 250 100 1 101 750 8:00:01
6 8:00:10 500 100 5 101 500 8:00:05
2 8:00:01 750 97 8 101 750 8:00:30
7 8:00:10 150 96 3 102 250 8:00:02
最简单的订单簿匹配算法是价格时间优先算法。这意味着匹配的优先级首先是价格,然后是时间。参与者因提供最优惠的价格和早到而获得奖励。
每项资产在证券交易所都有一个当前价格。但是我如何计算这个资产的价格呢?有什么算法可以解决这个问题吗?
解决方案
交易所通常会显示“书的顶部”,显示最佳出价(某人愿意购买的最高价格)和要价(某人愿意出售的最低价格)。
如果您看到交易所提供单一价格,则它是通过以下两种方式之一得出的:
- 如果有最近(有效)的交易,那么它是最后的交易价格
- 否则为参考价
什么是参考价?
大多数股票和衍生品交易所对每本书都有一个参考价格。这用于防止接受与参考价格相差太远的订单 - 即“极端交易范围”。
通常参考价格设置为当天的最后交易价格,但在任何交易发生之前,它是如何设置的呢?
参考价格通常在每次交易重置(例如一天开始、一周开始或新书开始)后按优先顺序确定为以下之一:
- 在初始拍卖期间发现的价格(通常仅在股票市场中)
- 如果没有拍卖,则最后交易(或结算,取决于市场)价格
- 使用另一家经营同一本书的市场运营商的价格
- 或者市场运营商可以使用自己的“合理”方法来确定参考价格,例如新证券的初始上市
如何应用这个?
因此,如果您想在 BTC 中设置一个新的“当前价格”,但您的账簿上还没有任何交易,那么由于 BTC 已经广泛交易,您可以:
- 使用您正在运行的货币对在 binance 上交易的最后价格
- 从其他人经营的多本 BTC 账簿中取最后价格的平均值或中位数
- 手动设置一些您认为会吸引买家和卖家的其他价格
推荐阅读
- ios - 在使用 ytplayer SDK 的应用程序中,某些 YouTube 视频无法播放
- c# - 有没有办法为 EF 模型自动创建 CRUD(目前是 DB First)
- python - TypeError:需要一个类似字节的对象,而不是 pd.read_csv 的“str”
- python - `droppdf[df.columnName != 'Value']` 不工作?
- javascript - 更改复选框上的变量值
- python - 如何将条形图的颜色链接到 yticks?
- python - 使用 TensorFlow 概率的贝叶斯逻辑回归
- python - python - 基于多个数据点的评分
- java - 为什么 setMaxBatchSize() 对于 RxAndroidBle 中较大的 MTU 没有用?
- python - 选择日期之间的熊猫数据框行并设置列值