Author Topic: 讨论下bts成交撮合算法  (Read 6211 times)

0 Members and 1 Guest are viewing this topic.

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
谁英文好的,发帖到bts板讨论一下吧
成交算法对一个交易市场的影响是很大的,希望3I能对此充分展开讨论,确定算法后再开发代码。
如果确实是代码bug,我们也好动手帮忙修改。

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
撮合时成交排序也有问题,限价但应该是优先撮合最低卖价和最高买价,其次才按下单时间优先
现在的撮合算法没考虑价格优先
比如现
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

Offline Musewhale

  • Hero Member
  • *****
  • Posts: 2881
  • 丑,实在是太丑了 !
    • View Profile
对我来说有点复杂,慢慢看  慢慢领会一下
MUSE witness:mygoodfriend     vote for me

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
还有几点想讨论下:
1. 如果采用 Maker-Taker 机制,对价格稳定,刺激交易积极性有帮助吗?
2. 挂单时最好能支持两种,比如我要买 bitusd,挂单价格为 100bitusd/bts,我可以设定买 100 bitusd,或者也可以设置为拿 1bts买。注意这两种实际上是不同的。
« Last Edit: January 24, 2014, 12:59:14 pm by alt »

Offline crazybit


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


Sent from my iPhone using Tapatalk
自己的问题刚刚想明白了,刚开始没有市场深度的时候这情况有可能发生的,市场深度跟量出来了就不太可能发生以上情况了。


Sent from my iPhone using Tapatalk

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
一种可能是他手误,输错了,这是很有可能的。

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

B为什么不以100usd/bts买usd?

Offline crazybit

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


Sent from my iPhone using Tapatalk

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
或者以最新成交价为最优结果,买卖双方都有利。
在最新成交价不满足本单成交的情况下,以先下单的价为准。
你说的有一定道理,挂单应该有时间先后顺序,应该以时间早的价格为准。

Offline ebit

  • Committee member
  • Hero Member
  • *
  • Posts: 1905
    • View Profile
  • BitShares: ebit
B为什么不以100usd/bts买usd?
telegram:ebit521
https://weibo.com/ebiter

Offline HackFisher

  • Hero Member
  • *****
  • Posts: 883
    • View Profile
你说的有一定道理,挂单应该有时间先后顺序,应该以时间早的价格为准。
Anything said on these forums does not constitute an intent to create a legal obligation or contract between myself and anyone else.   These are merely my opinions and I reserve the right to change them at any time.

Offline alt

  • Hero Member
  • *****
  • Posts: 2821
    • View Profile
  • BitShares: baozi
假定现在的市场是这样的:
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