Use sqrt function for fee calculation by distance to market price

This commit is contained in:
Manfred Karrer 2017-06-22 02:22:44 +02:00
parent 8679c7a9e6
commit 705bcb2f38

View file

@ -29,6 +29,7 @@ import io.bisq.common.monetary.Price;
import io.bisq.common.monetary.Volume;
import io.bisq.common.util.MathUtils;
import io.bisq.common.util.Utilities;
import io.bisq.core.app.BisqEnvironment;
import io.bisq.core.btc.AddressEntry;
import io.bisq.core.btc.Restrictions;
import io.bisq.core.btc.listeners.BalanceListener;
@ -202,6 +203,7 @@ class CreateOfferDataModel extends ActivatableDataModel {
private void addListeners() {
btcWalletService.addBalanceListener(btcBalanceListener);
if (BisqEnvironment.isBaseCurrencySupportingBsq())
bsqWalletService.addBsqBalanceListener(bsqBalanceListener);
user.getPaymentAccountsAsObservable().addListener(paymentAccountsChangeListener);
}
@ -209,6 +211,7 @@ class CreateOfferDataModel extends ActivatableDataModel {
private void removeListeners() {
btcWalletService.removeBalanceListener(btcBalanceListener);
if (BisqEnvironment.isBaseCurrencySupportingBsq())
bsqWalletService.removeBsqBalanceListener(bsqBalanceListener);
user.getPaymentAccountsAsObservable().removeListener(paymentAccountsChangeListener);
}
@ -530,7 +533,11 @@ class CreateOfferDataModel extends ActivatableDataModel {
}
boolean isBsqForFeeAvailable() {
return getMakerFee(false) != null && bsqWalletService.getAvailableBalance() != null && !bsqWalletService.getAvailableBalance().subtract(getMakerFee(false)).isNegative();
return BisqEnvironment.isBaseCurrencySupportingBsq() &&
getMakerFee(false) != null &&
bsqWalletService.getAvailableBalance() != null &&
getMakerFee(false) != null &&
!bsqWalletService.getAvailableBalance().subtract(getMakerFee(false)).isNegative();
}
@ -692,7 +699,7 @@ class CreateOfferDataModel extends ActivatableDataModel {
final Coin feePerBtc = CoinUtil.getFeePerBtc(FeeService.getMakerFeePerBtc(isCurrencyForMakerFeeBtc), amount);
double makerFeeAsDouble = (double) feePerBtc.value;
if (marketPriceAvailable) {
makerFeeAsDouble = makerFeeAsDouble * marketPriceMargin * 100;
makerFeeAsDouble = makerFeeAsDouble * Math.sqrt(marketPriceMargin * 100);
// For BTC we round so min value change is 100 satoshi
if (isCurrencyForMakerFeeBtc)
makerFeeAsDouble = MathUtils.roundDouble(makerFeeAsDouble / 100, 0) * 100;