Exemple #1
0
        internal void ParseFromNonMarketBuyOrderForeignCommission(OrderUpdate.OrderTypes type)
        {
            var order = new OrderUpdate(
                orderId: 0,
                tradeId: 0,
                orderType: type,
                orderStatus: Filled,
                createdTimestamp: 0,
                setPrice: 0.2M,
                side: OrderSide.Buy,
                pair: TradingPair.Parse("EOSETH"),
                setQuantity: 100M)
            {
                FilledQuantity     = 100M,
                AverageFilledPrice = 0.15M,
                LastFillIncrement  = 100M,
                LastFillPrice      = 0.15M,
                Commission         = 96.42M,
                CommissionAsset    = new Currency("BNB"),
            };

            var exec = TradeExecution.FromOrder(order);

            Assert.Equal(0M, exec.From.Free);
            Assert.Equal(100M * 0.2M, exec.From.Locked);
            Assert.Equal(100M, exec.To.Free);
            Assert.Equal(0M, exec.To.Locked);
        }
Exemple #2
0
        internal void ParseFromMarketSellOrderNewHappyFlow()
        {
            var order = new OrderUpdate(
                orderId: 0,
                tradeId: 0,
                orderType: Market,
                orderStatus: New,
                createdTimestamp: 0,
                setPrice: 0.4M,
                side: OrderSide.Sell,
                pair: TradingPair.Parse("EOSETH"),
                setQuantity: 40M)
            {
                FilledQuantity     = 40M,
                AverageFilledPrice = 0.401M,
            };

            var exec = TradeExecution.FromOrder(order);

            Assert.Equal(order.Pair.Left, exec.From.Symbol);
            Assert.Equal(order.Pair.Right, exec.To.Symbol);
            Assert.Equal(40M, exec.From.Free);
            Assert.Equal(0, exec.From.Locked);
            Assert.Equal(40M * 0.401M, exec.To.Free);
            Assert.Equal(0, exec.To.Locked);
        }
Exemple #3
0
        internal void ParseFromMarketOrderPriceZero(OrderSide side)
        {
            var order = new OrderUpdate(
                orderId: 0,
                tradeId: 0,
                orderType: Market,
                orderStatus: New,
                createdTimestamp: 0,
                setPrice: 0.4M,
                side: side,
                pair: TradingPair.Parse("EOSETH"),
                setQuantity: 40M)
            {
                AverageFilledPrice = 0M,
                FilledQuantity     = 10M,
            };

            var exec = TradeExecution.FromOrder(order);

            Assert.Equal(exec.From.Locked, decimal.Zero);

            if (side == OrderSide.Sell)
            {
                Assert.Equal(10M, exec.From.Free);
                Assert.Equal(decimal.Zero, exec.To.Free);
            }
            else
            {
                Assert.Equal(decimal.Zero, exec.From.Free);
                Assert.Equal(10M, exec.To.Free);
            }

            Assert.Equal(exec.To.Locked, decimal.Zero);
        }
Exemple #4
0
        internal void ParseFromNonMarketSellOrderCancelledHappyFlow(OrderUpdate.OrderTypes orderType)
        {
            var order = new OrderUpdate(
                orderId: 0,
                tradeId: 0,
                orderType: orderType,
                orderStatus: Cancelled,
                createdTimestamp: 0,
                setPrice: 0.2M,
                side: OrderSide.Sell,
                pair: TradingPair.Parse("EOSETH"),
                setQuantity: 100M);
            var exec = TradeExecution.FromOrder(order);

            Assert.NotNull(exec);

            var symbol = new Currency("EOS");

            Assert.Equal(symbol, exec.From.Symbol);
            Assert.Equal(symbol, exec.To.Symbol);
            Assert.Equal(0M, exec.From.Free);
            Assert.Equal(100M, exec.From.Locked);
            Assert.Equal(100M, exec.To.Free);
            Assert.Equal(0M, exec.To.Locked);
        }
Exemple #5
0
        public async Task <AttrResultModel> UpdateOrder([FromBody] CreateOrderDto orderDto)
        {
            //这里如果不指定主键的话,默认会按照实体的第一个带有ID的字段为主键,建议手动指定
            var result = await client.UpdateHasValueFieldAsync <CreateOrderDto, R01_Order>(orderDto, "更新出错", "R01_OrderId");

            result = await client.UpdateAsync <CreateOrderDto, R01_Order>(orderDto, "更新出错", "R01_OrderId");

            result = await client.ExecUpdateSql <R01_Order>(null, "Update R01_Order set R01_OrderNo = 'test' where R01_OrderId = 1", "更新出错");

            OrderUpdate orderUpdate = new OrderUpdate()
            {
                C02_CustomerId    = 1,
                P01_ProductId     = 1,
                P02_ProductFlowId = 1,
                R01_OrderNo       = "11"
            };

            //生成的sql

            /*
             *  Update  tableName
             *  set  DbfieldName2 = @C02_CustomerId,
             *      DbfieldName3 = @P01_ProductId,
             *      DbfieldName4 = @P02_ProductFlowId
             *  Where  DbfieldName1 = @R01_OrderNo
             */
            result = await client.UpdateAsync(orderUpdate);

            return(result);
        }
            protected override State <Config> Run(TradingProvider trading, DataProvider data)
            {
                // If the Filter and CrossoverSMA signal the trade, we buy at market.
                OrderUpdate buyOrder = trading.ExecuteFullMarketOrderBuy(FirstPair);

                return(new InTradeState(buyOrder));
            }
Exemple #7
0
        private OrderUpdate xx()
        {
            HttpWebPage openWeb   = new HttpWebPage();
            string      activeUrl = "http://www.mysdic.com/join/invite.html";
            string      tempHtml  = openWeb.DoGet(activeUrl);
            string      count1    = tempHtml.Abstract("fnt_24", "详细内容");

            if (count1.Contains("招聘"))
            {
                List <string> ss = RegexHelper.GetMatchsList(@"\d{4}年\d{2}月\d{2}日", count1);
                if (ss.Count > 0)
                {
                    DateTime start = this.dateTimePicker1.Value;
                    DateTime end   = new DateTime(
                        int.Parse(ss[0].Abstract("", "年")),
                        int.Parse(ss[0].Abstract("年", "月")),
                        int.Parse(ss[0].Abstract("月", "日")));
                    TimeSpan ts = end - start;
                    if (ts.TotalSeconds > 0)
                    {
                        this.dateTimePicker1.Value = end;
                        OrderUpdate record = new OrderUpdate();
                        record.Price    = ss[0];
                        record.Quantity = count1.Abstract("blank\">​", "</a>");
                        return(record);
                    }
                }
            }
            return(null);
        }
            public void onOrder(Order order)
            {
                OrderUpdate update = new OrderUpdate();

                update.orderId     = StringUtils.trim(order.orderId);
                update.orderSide   = (int)order.orderSide;
                update.orderType   = (int)order.orderType;
                update.ordStatus   = (int)order.ordStatus;
                update.price       = order.price;
                update.quantity    = order.quantity;
                update.symbol      = StringUtils.trim(order.symbol);
                update.timeInForce = (int)order.timeInForce;

                update.exchangeOrderId = StringUtils.trim(order.exchangeOrderId);
                update.avgPx           = order.avgPx;
                update.clOrderId       = StringUtils.trim(order.clOrderId);
                update.created         = StringUtils.trim(order.created);
                update.cumQty          = order.cumQty;
                update.exchangeAccount = order.exchangeAccount;
                update.execType        = (int)order.execType;
                update.account         = order.account;

                _manager.Publish(update);
                logger.Info("Send OrderUpdate: " + order.ToString());
            }
Exemple #9
0
 private void OnOrderUpdate(OrderUpdate update)
 {
     //TODO: 显示update到_dgvOrderbook
     //用invoke和委托来解决线程安全的问题
     if (this._dgvOrderbook.InvokeRequired)
     {
         this.Invoke(new updateDelegate(OnOrderUpdate), new object[] { update });
     }
     else
     {
         DataRow dr = dtTemp.NewRow();
         dr[0] = update.OrderID;
         dr[1] = update.Side;
         dr[2] = update.Price;
         dr[3] = update.Quantity;
         dr[4] = update.Status;
         if (isPalse)
         {
             //处于暂停状态时,当前行存入dtShow,直到按钮点击继续时,处理dtTemp中的行
             dtTemp.Rows.Add(dr);
         }
         else
         {   //处于进行状态时,直接处理当前行
             ProcessRow(dr);
         }
     }
 }
Exemple #10
0
 private static void MarketDataSource_OrderUpdateEvent(OrderUpdate orderDetail)
 {
     if (orderDetail.OrderStatus != "ACCEPTED")
     {
         Console.WriteLine(orderDetail.OrderStatus + " for Client Id " + orderDetail.ClientId + " Product Type " + orderDetail.Product + " Order Type " + orderDetail.OrderType + " Price " + orderDetail.Price + " Avg Price " + orderDetail.AverageTradePrice + " Trigger Price " + orderDetail.TriggerPrice + " Qty " + orderDetail.Quantity + " Disc Qty " + orderDetail.DisclosedQuantity);
     }
 }
        public void GetFilledBuyStoplossOrderUnMutated()
        {
            var order = new OrderUpdate(
                orderId: 9,
                tradeId: 8,
                orderStatus: OrderUpdate.OrderStatus.New,
                orderType: OrderTypes.StopLoss,
                createdTimestamp: 302,
                setPrice: 2.1M,
                side: OrderSide.Buy,
                pair: TradingPair.Parse("TRXETH"),
                setQuantity: 18.6M)
            {
                StopPrice = 1.9M,
            };

            var candle = new BacktestingCandle(0, 1, 1, 2, 1, 0, "EOSETH");

            GetFilledOrder(order, candle, 434424233);
            Assert.Equal(OrderStatus.Filled, order.Status);
            Assert.Equal(OrderTypes.StopLoss, order.OrderType);
            Assert.Equal(1.9M, order.AverageFilledPrice);
            Assert.Equal(1.9M, order.LastFillPrice);
            Assert.Equal(18.6M, order.FilledQuantity);
            Assert.Equal(18.6M, order.LastFillIncrement);
            Assert.Equal(434424233, order.FilledTimestamp);
        }
Exemple #12
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);
        }
Exemple #13
0
        public async Task<IActionResult> PutOrderItem([FromBody]OrderUpdate orderUpdate)
        {
            try
            {
                if (orderUpdate.OrderID <= 0)
                    throw new Exception("One or more validation errors occurred");

                var orderExists = await DbAccessClass.OrderIDExists(orderUpdate.OrderID, _context);

                if (!orderExists)
                    throw new Exception("Order not found");

                var order = await DbAccessClass.GetOrder(orderUpdate.OrderID, _context);

                await DbAccessClass.UpdateOrder(orderUpdate, order, _context);

                return Ok("Order updated successfully");
            }
            catch (Exception ex)
            {
                return ex.Message switch
                {
                    "Order not found" => NotFound(new JsonResult(ex.Message)),
                    "One or more validation errors occurred" => UnprocessableEntity(new JsonResult(ex.Message)),
                    _ => BadRequest(new JsonResult(ex.Message)),
                };
            }
        }
        /// <inheritdoc />
        public override ResponseObject <OrderUpdate> PlaceStoplossOrder(TradingPair pair, OrderSide side, decimal quantity, decimal price, long tradeId)
        {
            // Add the order to the watchlist
            OrderUpdate order = new OrderUpdate(
                orderId: _mockOrderCounter++,
                tradeId: tradeId,
                orderStatus: OrderUpdate.OrderStatus.New,
                orderType: OrderUpdate.OrderTypes.StopLoss,
                createdTimestamp: Timer.CurrentTime.ToUnixTimeMilliseconds(),
                setPrice: 0,
                side: side,
                pair: pair,
                setQuantity: quantity)
            {
                StopPrice = price,
            };

            // Add to order cache to confirm placement.
            _orderCache.Enqueue(order);

            // Add to watchlist to check if filled
            WatchList.Add(order.OrderId, order);

            return(new ResponseObject <OrderUpdate>(ResponseCode.Success, order));
        }
        /// <inheritdoc />
        public override ResponseObject <OrderUpdate> ExecuteMarketOrder(TradingPair pair, OrderSide side, decimal quantity, long tradeId)
        {
            decimal priceEstimate = _dataProvider.GetCurrentPriceTopBid(pair).Data;

            var order = new OrderUpdate(
                _mockOrderCounter++,
                tradeId,
                OrderUpdate.OrderStatus.Filled,
                OrderUpdate.OrderTypes.Market,
                Timer.CurrentTime.ToUnixTimeMilliseconds(),
                priceEstimate,
                side,
                pair,
                quantity)
            {
                AverageFilledPrice = priceEstimate,
                FilledQuantity     = quantity,
                FilledTimestamp    = Timer.CurrentTime.ToUnixTimeMilliseconds(),
            };

            // Add to order cache to confirm filled
            _orderCache.Enqueue(order);

            // Write the trade to the logger
            LogOrder(order);

            return(new ResponseObject <OrderUpdate>(
                       ResponseCode.Success,
                       order));
        }
Exemple #16
0
            protected override State <Config> Run(TradingProvider trading, DataProvider data)
            {
                decimal stopPrice = data.GetLowestLow(FirstPair, AlgorithmConfiguration.Loss);

                stopLoss = trading.PlaceFullStoplossSell(FirstPair, stopPrice);

                return(new InTradeState(_buyOrder, stopLoss));
            }
Exemple #17
0
        private DataRow OrderObjToDataRow(OrderUpdate order)
        {
            DataRow row = sourceData.NewRow();

            row["Price"]    = order.Price;
            row["Quantity"] = order.Quantity;

            return(row);
        }
Exemple #18
0
            public override State <Config> OnOrderUpdate(OrderUpdate order)
            {
                if (_stoploss != null && order.OrderId == _stoploss.OrderId && order.Status == OrderUpdate.OrderStatus.Filled)
                {
                    return(new EntryState());
                }

                return(new NothingState <Config>());
            }
Exemple #19
0
            protected override State <Config> Run(TradingProvider trading, DataProvider data)
            {
                // Get the lowest low from the last y hours.
                decimal shortTermTimePrice = data.GetLowestLow(FirstPair, AlgorithmConfiguration.ShortTermTime);

                // Set first stop loss order at DCMin.
                _stoploss = trading.PlaceFullStoplossSell(FirstPair, shortTermTimePrice);
                return(new CheckState(_stoploss));
            }
Exemple #20
0
            protected override State <Config> Run(TradingProvider trading, DataProvider data)
            {
                var pair  = AlgorithmConfiguration.TradingPairs.First();
                var price = data.GetCurrentPriceTopBid(pair);

                _stoploss = trading.PlaceFullStoplossSell(pair, price * AlgorithmConfiguration.StopTrail);
                SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.WaitTime));
                return(new NothingState <KeiraNightlyConfiguration>());
            }
Exemple #21
0
            public override State <Config> OnOrderUpdate(OrderUpdate order)
            {
                if (order.Status == OrderUpdate.OrderStatus.Filled && order.OrderId == _limitSell.OrderId)
                {
                    return(new WaitState());
                }

                return(new NothingState <Config>());
            }
Exemple #22
0
            public override State <KeiraNightlyConfiguration> OnOrderUpdate(OrderUpdate order)
            {
                if (_sell != null && order.OrderId == _sell.OrderId && order.Status == OrderUpdate.OrderStatus.Filled)
                {
                    return(new CoolDownState());
                }

                return(new NothingState <KeiraNightlyConfiguration>());
            }
Exemple #23
0
            protected override State <Config> Run(TradingProvider trading, DataProvider data)
            {
                var pair  = AlgorithmConfiguration.TradingPairs.First();
                var price = data.GetCurrentPriceTopBid(pair);

                _sell = trading.PlaceFullLimitOrderSell(pair, price * AlgorithmConfiguration.TakeProfit);
                SetTimer(TimeSpan.FromHours(AlgorithmConfiguration.WaitTime));
                return(new NothingState <Config>());
            }
Exemple #24
0
        public Mail Translate(OrderUpdate orderUpdate)
        {
            var mail = Mail.GetInstance();

            mail.AddTo(orderUpdate.ReminderTo);
            mail.AddCc(orderUpdate.CopyReminderTo);
            mail.Subject = string.Format("Task Reminder! Task {0} is due on {1}", orderUpdate.OrderReference, orderUpdate.DueDate);
            return(mail);
        }
Exemple #25
0
        private void OnNext(OrderUpdate order)
        {
            var item = new OrderEvent(Session, DateTimeOffset.Now.ToUnixTimeMilliseconds(), order);

            lock (Lock)
            {
                _database.OrderEvents.Add(item);
                _database.SaveChanges();
            }
        }
Exemple #26
0
 public IActionResult UpdateOrderPut(OrderUpdate orderUpdate) //полное обновление заказа
 {
     if (_repository.Orders.IsOrderExists(orderUpdate.Number))
     {
         OrderStore orderFromStore = _repository.Orders.GetOrder(orderUpdate.Number);
         _mapper.Map(orderUpdate, orderFromStore);
         _repository.Orders.UpdateOrder(orderFromStore);
         return(NoContent());
     }
     return(NotFound());
 }
Exemple #27
0
        public void OrderNew_Creates_A_Copy_Of_Provided_Source()
        {
            var copy = OrderUpdate.From(Source);

            Assert.True(copy != Source);
            Assert.Equal(copy.RowVersion, Source.RowVersion);
            Assert.Equal(copy.HouseNumber, Source.HouseNumber);
            Assert.Equal(copy.PostCode, Source.PostCode);
            Assert.Equal(copy.Price, Source.Price);
            Assert.Equal(copy.CustomerName, Source.CustomerName);
        }
Exemple #28
0
 public OrderUpdateTests()
 {
     Source = new OrderUpdate()
     {
         CustomerName = "Test Name",
         HouseNumber  = 1,
         RowVersion   = new byte[] { 1, 1, 1, 1 },
         PostCode     = "1541UT",
         Price        = 20m
     };
 }
Exemple #29
0
        private void m_Sim_OnFillUpdate(OrderUpdate f)
        {
            Debug.WriteLine(f.FFT);
            String BS = "B";

            if (f.FillType == Request.RequestType.SELL)
            {
                BS = "S";
            }
            OnFill(this, Convert.ToDouble(f.Qty), BS, Convert.ToString(f.Price), Convert.ToString(f.FFT));
        }
Exemple #30
0
 public IActionResult Update([FromBody] OrderUpdate order)
 {
     try
     {
         var result = _orderService.Update(order);
         return(Ok(result));
     }
     catch (Exception e)
     {
         return(BadRequest(e));
     }
 }