public void TestConvertBTCToUSD() { var tradeCalc = new TradeCalcService(); var amountBTC = 0.00171131m; var price = 10491.94100000m; var result = decimal.Round(tradeCalc.GetSellAmount(amountBTC, price), 8); Assert.Equal(result, 17.91007614m); }
public void TestConvertUSDToBTC() { var tradeCalc = new TradeCalcService(); var amountUSD = 18m; var price = 10491.94100000m; var result = decimal.Round(tradeCalc.GetBuyAmount(amountUSD, price), 8); Assert.Equal(result, 0.00171131m); }
public async Task Consume(ConsumeContext <SellCurrency> context) { var amountInCurrency = await _exchange.RiskManager.GetActualSellAmount(); var rate = await _exchange.GetActualSellPrice(); var converter = new TradeCalcService(); var amount = decimal.Round(converter.GetSellAmount(amountInCurrency, rate), 8); var balanceMinLimit = _exchange.RiskManager.GetBalanceMinLimit(); Log.Information($"GET[SELL] => USD amount [{amount} / {amountInCurrency}] rate [{rate}]"); if (amount <= balanceMinLimit) { Log.Warning($"Balance equal {amountInCurrency}. Risk manager stopping FarmMachine.ExchangeBroker"); return; } try { await _protocolService.WriteAsync(new Dictionary <string, object> { { "_id", context.Message.Id }, { "amount", context.Message.Amount }, { "ask", context.Message.Ask }, { "rate", rate }, { "timestamp", context.Message.Created }, { "type", "sell" } }, "SellCurrency"); } catch (Exception ex) { Log.Warning($"Invalid write to db: {ex}"); } // await _exchange.PlaceOrderOnSell(amountInCurrency, rate); }