Circuit breaker Design Doc
Source: Notion | Last edited: 2023-09-21 | ID: c3e4a5ed-9d2...
每分钟触发执行lambda:
lambda 会查看所有账户的balance,这里的”所有”账户,是指要scan DynamoDB table ZL-Monitoring-Accounts,找出所有records,并用disableMonitor=False, **exchange=**binance,autoLiquidateThreshold field > 0来filter出所有要monitor的账户
当账户的unrealized PNL / margin Balance的百分比,超过autoLiquidateThreshold,则开始强制清仓,并且发送信息通知:
具体来说,对于每个symbol,把当前的仓位用楼梯形式反向挂单到盘口;查询过去5分钟的交易量,以此计算出每秒的交易量。用这个交易量的20%作为理论最大市价单,后文中命名为maxVolumePerMarketTrade;之后每5秒一次,循环执行如下操作,直到仓位为0。这里5是一个变量:
- 取消限价单剩余的仓位,并把剩余仓位分为两部分:
- 市价单部分:Math.min(maxVolumePerMarketTrade, 剩余仓位 / 剩余交易次数或1)
- 限价单部分:总剩余仓位 - 市价单,用楼梯形式反向挂单到盘口
- 转出Math.max(市价单部分的价值, margin账户中能转的部分 / 2) 最后,如果还有余额,就转出