Esempio n. 1
0
        public CallResult <BinancePlacedOrder> PlaceOrder(string symbol, OrderSide side, OrderType type,
                                                          decimal quantity, string newClientOrderId = null,
                                                          decimal?price      = null, TimeInForce?timeInForce = null, decimal?stopPrice = null,
                                                          decimal?icebergQty = null,
                                                          OrderResponseType?orderResponseType = null, int?receiveWindow = null)
        {
            var order = _implementation.PlaceTestOrder(symbol, side, type, quantity, newClientOrderId, price, timeInForce,
                                                       stopPrice, icebergQty, orderResponseType, receiveWindow);

            if (order.Success)
            {
                var data = order.Data;
                data.OrderId = _orderIdGenerator.Next();

                // PlaceTestOrder does not propagate this data, set it manually.
                data.Type = type;
                data.Side = side;
                var ev = new OrderUpdate(
                    orderId: data.OrderId,
                    tradeId: 0,
                    orderStatus: data.Type == OrderType.Market ? OrderUpdate.OrderStatus.Filled : OrderUpdate.OrderStatus.New,
                    orderType: BinanceUtilities.ToInternal(data.Type),
                    createdTimestamp: 0,
                    setPrice: data.Price,
                    side: BinanceUtilities.ToInternal(data.Side),
                    pair: TradingPair.Parse(symbol),
                    setQuantity: data.OriginalQuantity);
                _parent.ScheduleObserverEvent(ev);
            }

            return(order);
        }
Esempio n. 2
0
 public void ToExternalOrderSideConversion(OrderSide side)
 {
     Binance.Net.Objects.OrderSide converted = BinanceUtilities.ToExternal(side);
     Binance.Net.Objects.OrderSide check     = side == OrderSide.Buy
         ? Binance.Net.Objects.OrderSide.Buy
         : Binance.Net.Objects.OrderSide.Sell;
     Assert.Equal(converted, check);
 }
Esempio n. 3
0
        public void ToInternalOrderUpdateConversionCreationTime()
        {
            var input = new BinanceStreamOrderUpdate
            {
                Symbol            = "TRXETH",
                OrderCreationTime = DateTime.UtcNow,
                Side = Binance.Net.Objects.OrderSide.Buy,
            };

            var order = BinanceUtilities.ToInternal(input);
            var diff  = DateTimeOffset.Now - DateTimeOffset.FromUnixTimeMilliseconds(order.CreatedTimestamp);

            Assert.True(diff.TotalSeconds < 1.0, "CreatedTimeStamp of order not parsed correctly.");
        }
Esempio n. 4
0
        public void ToInternalOrderUpdateConversionNoCommission()
        {
            var input = new BinanceStreamOrderUpdate
            {
                Symbol                   = "TRXETH",
                OrderCreationTime        = DateTime.UtcNow,
                CummulativeQuoteQuantity = 0,
                ExecutionType            = ExecutionType.Trade,
            };

            var order = BinanceUtilities.ToInternal(input);

            Assert.Equal(0.0M, order.Commission);
            Assert.Null(order.CommissionAsset);
        }
Esempio n. 5
0
        public void ToInternalOrderUpdateStopPricePropagates()
        {
            var input = new BinanceStreamOrderUpdate
            {
                Symbol            = "TRXETH",
                OrderCreationTime = DateTime.UtcNow,
                Side      = Binance.Net.Objects.OrderSide.Buy,
                StopPrice = 15M,
            };

            var order = BinanceUtilities.ToInternal(input);

            Assert.Equal(15M, order.StopPrice);
            Assert.Equal(0M, order.SetPrice);
        }
Esempio n. 6
0
        public void ToInternalOrderUpdateDividingZeroSafe()
        {
            var input = new BinanceStreamOrderUpdate
            {
                Symbol = "TRXETH",
                AccumulatedQuantityOfFilledTrades = 0,
                OrderCreationTime        = DateTime.UtcNow,
                CummulativeQuoteQuantity = 6,
                Side = Binance.Net.Objects.OrderSide.Buy,
            };

            var order = BinanceUtilities.ToInternal(input);

            Assert.Equal(0M, order.AverageFilledPrice);
        }
Esempio n. 7
0
        public void ToInternalOrderUpdateConversionCommision()
        {
            var input = new BinanceStreamOrderUpdate
            {
                Symbol            = "TRXETH",
                OrderCreationTime = DateTime.UtcNow,
                Commission        = 0.08M,
                CommissionAsset   = "EOS",
                Side = Binance.Net.Objects.OrderSide.Buy,
            };

            var order = BinanceUtilities.ToInternal(input);

            Assert.Equal(OrderSide.Buy, OrderSide.Buy);
            Assert.Equal(0.08M, order.Commission);
            Assert.Equal(new Currency("EOS"), order.CommissionAsset);
            Assert.Equal(
                Math.Floor(DateTimeOffset.FromFileTime(DateTime.Now.ToFileTimeUtc()).ToUnixTimeMilliseconds() / 1000.0),
                Math.Floor(order.CreatedTimestamp / 1000.0));
        }
Esempio n. 8
0
        public void ToInternalOrderSideConversion(Binance.Net.Objects.OrderSide side)
        {
            OrderSide converted = BinanceUtilities.ToInternal(side);

            Assert.Equal(converted, side == Binance.Net.Objects.OrderSide.Buy ? OrderSide.Buy : OrderSide.Sell);
        }