BitShares Forum

Main => 中文 (Chinese) => Topic started by: alt on January 24, 2014, 06:47:59 am

Title: 讨论下bts成交撮合算法
Post by: alt on January 24, 2014, 06:47:59 am
假定现在的市场是这样的:
1. A拿出 10bts,以 100 usd/bts 价格发行 1000个usd
2. B拿出 10bts,以 10 usd/bts 价格下单买 100 个usd

按现有算法成交结果:B 交出 10 bts,获得 100 usd;
A卖出 100个usd,对应抵押11(1+10)个BTS,剩下的 9bts 继续挂 100usd/bts发行价。

我认为合理的算法应该是:
B 应该按A的发行价100usd/bts,拿出 1 bts获得 100 usd,剩下9个 bts应保留。
A卖出的 100个usd,对应抵押应为 2(1+1)个BTS

Title: Re: 讨论下bts成交撮合算法
Post by: HackFisher on January 24, 2014, 07:14:46 am
你说的有一定道理,挂单应该有时间先后顺序,应该以时间早的价格为准。
Title: Re: 讨论下bts成交撮合算法
Post by: ebit on January 24, 2014, 07:37:51 am
B为什么不以100usd/bts买usd?
Title: Re: 讨论下bts成交撮合算法
Post by: alt on January 24, 2014, 08:11:35 am
或者以最新成交价为最优结果,买卖双方都有利。
在最新成交价不满足本单成交的情况下,以先下单的价为准。
你说的有一定道理,挂单应该有时间先后顺序,应该以时间早的价格为准。
Title: Re: 讨论下bts成交撮合算法
Post by: crazybit on January 24, 2014, 08:12:28 am
这个例子里A以0.01bts的价格发行了usd,而b以0.1bts的价格买入,此时usd以0.1bts的价格成交,倘若此时b在以1bts的价格微量买入use会不会导致a瞬间暴仓呢?


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: 讨论下bts成交撮合算法
Post by: alt on January 24, 2014, 08:18:19 am
一种可能是他手误,输错了,这是很有可能的。

还有就是他的下单量大,一单单买显然不可能,比如当前卖单: 100usd/bts * 20, 99 usd/bts * 10, 98 usd/bts *10 .....
B的心里价位是90,他可以直接按 90 价位下单买 1000 usd

B为什么不以100usd/bts买usd?
Title: Re: 讨论下bts成交撮合算法
Post by: crazybit on January 24, 2014, 08:52:10 am

这个例子里A以0.01bts的价格发行了usd,而b以0.1bts的价格买入,此时usd以0.1bts的价格成交,倘若此时b在以1bts的价格微量买入use会不会导致a瞬间暴仓呢?


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
自己的问题刚刚想明白了,刚开始没有市场深度的时候这情况有可能发生的,市场深度跟量出来了就不太可能发生以上情况了。


Sent from my iPhone using Tapatalk (http://tapatalk.com/m?id=1)
Title: Re: 讨论下bts成交撮合算法
Post by: alt on January 24, 2014, 12:55:48 pm
还有几点想讨论下:
1. 如果采用 Maker-Taker 机制,对价格稳定,刺激交易积极性有帮助吗?
2. 挂单时最好能支持两种,比如我要买 bitusd,挂单价格为 100bitusd/bts,我可以设定买 100 bitusd,或者也可以设置为拿 1bts买。注意这两种实际上是不同的。
Title: Re: 讨论下bts成交撮合算法
Post by: Musewhale on January 24, 2014, 03:16:28 pm
对我来说有点复杂,慢慢看  慢慢领会一下
Title: Re: 讨论下bts成交撮合算法
Post by: alt on January 25, 2014, 01:26:37 am
撮合时成交排序也有问题,限价但应该是优先撮合最低卖价和最高买价,其次才按下单时间优先
现在的撮合算法没考虑价格优先
比如现
1. A以 10usd/bts发行 usd
2. B以100usd/bts发行 usd
3. C以 1usd/bts 买 usd
我认为应该是撮合 B、C的单子,价格为 100usd/bts。现在的结果是撮合了 A、C的单子,价格为 1usd/bts


假定现在的市场是这样的:
1. A拿出 10bts,以 100 usd/bts 价格发行 1000个usd
2. B拿出 10bts,以 10 usd/bts 价格下单买 100 个usd

按现有算法成交结果:B 交出 10 bts,获得 100 usd;
A卖出 100个usd,对应抵押11(1+10)个BTS,剩下的 9bts 继续挂 100usd/bts发行价。

我认为合理的算法应该是:
B 应该按A的发行价100usd/bts,拿出 1 bts获得 100 usd,剩下9个 bts应保留。
A卖出的 100个usd,对应抵押应为 2(1+1)个BTS
Title: Re: 讨论下bts成交撮合算法
Post by: alt on January 25, 2014, 01:30:53 am
谁英文好的,发帖到bts板讨论一下吧
成交算法对一个交易市场的影响是很大的,希望3I能对此充分展开讨论,确定算法后再开发代码。
如果确实是代码bug,我们也好动手帮忙修改。