Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }