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); }
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."); }
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); }
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); }
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); }
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)); }
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); }