Skip to content

Commit 2a668fa

Browse files
committed
android: update margin call order_price. #bsip74
1 parent 2d9702f commit 2a668fa

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

android/app/src/main/java/bitshares/ChainObjectManager.kt

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,8 +1540,22 @@ class ChainObjectManager {
15401540
n_mssr = bigDecimalfromAmount(current_feed.getString("maximum_short_squeeze_ratio"), 3)
15411541
n_mcr = bigDecimalfromAmount(current_feed.getString("maintenance_collateral_ratio"), 3)
15421542

1543-
// 1、计算爆仓成交价 feed / mssr
1544-
call_price = feed_price.divide(n_mssr, kBigDecimalDefaultMaxPrecision, kBigDecimalDefaultRoundingMode)
1543+
// 爆仓费率 core 4.0
1544+
val mcfr = bitasset.getJSONObject("options").optJSONObject("extensions")?.optString("margin_call_fee_ratio", null)
1545+
1546+
// 1、计算爆仓成交价
1547+
// core 4.0之前:feed / mssr
1548+
// core 4.0之后:feed / (mssr - mcfr)
1549+
if (mcfr != null) {
1550+
val n_mcfr = bigDecimalfromAmount(mcfr, 3)
1551+
var n_numerator = n_mssr.subtract(n_mcfr)
1552+
if (n_numerator < BigDecimal.ONE) {
1553+
n_numerator = BigDecimal.ONE
1554+
}
1555+
call_price = feed_price.divide(n_numerator, kBigDecimalDefaultMaxPrecision, kBigDecimalDefaultRoundingMode)
1556+
} else {
1557+
call_price = feed_price.divide(n_mssr, kBigDecimalDefaultMaxPrecision, kBigDecimalDefaultRoundingMode)
1558+
}
15451559
call_price_market = call_price
15461560
if (invert) {
15471561
call_price_market = BigDecimal.ONE.divide(call_price, kBigDecimalDefaultMaxPrecision, kBigDecimalDefaultRoundingMode)

0 commit comments

Comments
 (0)