corr liq price calc
This commit is contained in:
@@ -424,6 +424,9 @@ static bool ValidateFinalTx(struct CCcontract_info *cp, Eval *eval, const CTrans
|
||||
if( finaltx.vout.size() == 3 && MakeCC1vout(cp->evalcode, finaltx.vout[1].nValue, pricespk) != finaltx.vout[1] )
|
||||
return eval->Invalid("cannot validate vout1 in final tx with global pk");
|
||||
|
||||
// TODO: validate exitfee for 'R'
|
||||
// TODO: validate amount for 'F'
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1262,13 +1265,13 @@ int32_t prices_syntheticprofits(int64_t &costbasis, int32_t firstheight, int32_t
|
||||
//}
|
||||
}
|
||||
else {
|
||||
if (height == firstheight + COSTBASIS_PERIOD) {
|
||||
//if (height == firstheight + COSTBASIS_PERIOD) {
|
||||
// if costbasis not set, just set it
|
||||
//costbasis = price;
|
||||
|
||||
// use calculated minmax costbasis
|
||||
//std::cerr << "prices_syntheticprofits() use permanent costbasis=" << costbasis << " at height=" << height << std::endl;
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
// normalize to 10,000,000 to prevent underflow
|
||||
@@ -1619,7 +1622,7 @@ int32_t prices_scanchain(std::vector<OneBetData> &bets, int16_t leverage, std::v
|
||||
|
||||
endheight = height;
|
||||
int64_t equity = totalposition + totalprofits;
|
||||
if (equity < (double)totalposition * prices_minmarginpercent(leverage))
|
||||
if (equity <= (int64_t)((double)totalposition * prices_minmarginpercent(leverage)))
|
||||
{ // we are in loss
|
||||
break;
|
||||
}
|
||||
@@ -1843,15 +1846,15 @@ int32_t prices_getbetinfo(uint256 bettxid, BetInfo &betinfo)
|
||||
|
||||
betinfo.liquidationprice = 0;
|
||||
if (betinfo.leverage != 0) {// prevent zero div
|
||||
betinfo.liquidationprice = betinfo.averageCostbasis - betinfo.averageCostbasis / betinfo.leverage;
|
||||
betinfo.liquidationprice = betinfo.averageCostbasis - (betinfo.averageCostbasis * (1 - prices_minmarginpercent(betinfo.leverage)))/ betinfo.leverage;
|
||||
}
|
||||
|
||||
if (betinfo.equity >= (double)totalposition * prices_minmarginpercent(betinfo.leverage))
|
||||
if (betinfo.equity > (int64_t)((double)totalposition * prices_minmarginpercent(betinfo.leverage)))
|
||||
betinfo.isRekt = false;
|
||||
else
|
||||
{
|
||||
betinfo.isRekt = true;
|
||||
betinfo.exitfee = totalposition / 500;
|
||||
betinfo.exitfee = (totalposition - betinfo.equity) / 10; // was: totalposition / 500
|
||||
}
|
||||
|
||||
mpz_clear(mpzTotalPosition);
|
||||
|
||||
Reference in New Issue
Block a user