예제 #1
0
        public void BaseAmountAndPrice()
        {
            // arrange
            var tradeSettings = new TradeSettings {
                CounterAmount = 10, BuyUnderPriceMargin = 1, BaseAmountSavingsRate = 5, SellPriceRate = 10
            };
            var ticker = new Ticker {
                Last = 9500
            };
            var pairInfo = new TradingPairInfo {
                BaseDecimals = 8, CounterDecimals = 2
            };

            // act
            var baseAmount     = tradeSettings.GetBuyBaseAmount(ticker, pairInfo);
            var basePrice      = tradeSettings.GetBuyBasePrice(ticker, pairInfo);
            var sellBaseAmount = tradeSettings.GetSellBaseAmount(ticker, pairInfo);
            var sellBasePrice  = tradeSettings.GetSellBasePrice(ticker, pairInfo);

            // assert
            Assert.AreEqual(baseAmount, 0.00106326M);
            Assert.AreEqual(basePrice, 9405M);
            Assert.AreEqual(sellBaseAmount, 0.001010097M);
            Assert.AreEqual(sellBasePrice, 10345.5M);
        }
        internal override async Task ExecuteAsync()
        {
            // get ticker
            var ticker = await BitstampTrader.GetTickerAsync(TradeSession.PairCode);

            if (await SpreadIsOpen(ticker))
            {
                // get pair info
                var pairInfo = CacheHelper.GetFromCache <List <TradingPairInfo> >("TradingPairInfo").First(i => i.PairCode == TradeSession.PairCode.ToLower());

                // buy currency on Bitstamp exchange
                var orderResult = await BitstampTrader.BuyLimitOrderAsync(TradeSession, TradeSettings.GetBuyBaseAmount(ticker, pairInfo), TradeSettings.GetBuyBasePrice(ticker, pairInfo));

                // update database
                BitstampTrader.AddNewOrderToDb(orderResult, ticker, TradeSettings, pairInfo);
            }
        }