Esempio n. 1
0
        public BfParentOrderRequest CreateOCO(BfParentOrderRequestParameter first, BfParentOrderRequestParameter second, TimeSpan?minuteToExpire = null, BfTimeInForce timeInForce = BfTimeInForce.NotSpecified)
        {
            var request = new BfParentOrderRequest {
                OrderMethod = BfOrderType.OCO
            };

            if (minuteToExpire.HasValue)
            {
                request.MinuteToExpire = (int)minuteToExpire.Value.TotalMinutes;
            }
            request.TimeInForce = timeInForce;
            request.Paremters.Add(first);
            request.Paremters.Add(second);
            CheckParentOrderRequestValid(request);
            return(request);
        }
Esempio n. 2
0
        // Market/Limit/Stop/StopLimit/Trail of parent order
        public BfxChildOrder(BfParentOrderRequestParameter request)
        {
            ProductCode = request.ProductCode;
            OrderType   = request.ConditionType;
            Side        = request.Side;
            OrderSize   = request.Size;
            if (OrderType == BfOrderType.Limit || OrderType == BfOrderType.StopLimit)
            {
                OrderPrice = request.Price;
            }
            if (OrderType == BfOrderType.Stop || OrderType == BfOrderType.StopLimit)
            {
                TriggerPrice = request.TriggerPrice;
            }
            if (OrderType == BfOrderType.Trail)
            {
                TrailOffset = request.Offset;
            }

            // ChildOrderAcceptanceId will be update when update order event
        }
Esempio n. 3
0
 public BfxChildOrder(BfParentOrderRequestParameter request)
 {
     RequestElement = request;
 }
        static void ParentOrderMain()
        {
            while (true)
            {
                Console.WriteLine("======== Parent order operations");
                Console.WriteLine("S)top        Stop L)imit     T)rail");
                Console.WriteLine("I)FD         O)CO            IFD)OCO");
                Console.WriteLine("");
                Console.WriteLine("Time in F)orce");
                Console.WriteLine("M)inutes to expire");
                Console.WriteLine("");
                Console.WriteLine("C) Cancel parent order");
                Console.WriteLine("G)et parent orders");
                Console.WriteLine("");
                Console.WriteLine("R) Return to main");

                try
                {
                    switch (GetCh())
                    {
                    case 'S':
                    {
                        var request = BfParentOrderRequest.Stop(ProductCode, BfTradeSide.Buy, _ticker.BestAsk + UnexecuteGap, OrderSize);
                        var content = _client.SendParentOrder(request).GetContent();
                        _parentOrderAcceptanceIds.Enqueue(content.ParentOrderAcceptanceId);
                    }
                    break;

                    case 'L':
                    {
                        var request = BfParentOrderRequest.StopLimit(ProductCode, BfTradeSide.Buy, _ticker.BestAsk + UnexecuteGap, _ticker.BestAsk + UnexecuteGap, OrderSize);
                        var content = _client.SendParentOrder(request).GetContent();
                        _parentOrderAcceptanceIds.Enqueue(content.ParentOrderAcceptanceId);
                    }
                    break;

                    case 'T':
                    {
                        var request = BfParentOrderRequest.Trail(ProductCode, BfTradeSide.Buy, UnexecuteGap, OrderSize);
                        var content = _client.SendParentOrder(request).GetContent();
                        _parentOrderAcceptanceIds.Enqueue(content.ParentOrderAcceptanceId);
                    }
                    break;

                    case 'I':
                    {
                        var request = BfParentOrderRequest.IFD(
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize),
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Buy, _ticker.BestBid - UnexecuteGap, OrderSize)
                            );
                        var content = _client.SendParentOrder(request).GetContent();
                        _parentOrderAcceptanceIds.Enqueue(content.ParentOrderAcceptanceId);
                    }
                    break;

                    case 'O':
                    {
                        var request = BfParentOrderRequest.OCO(
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize),
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Buy, _ticker.BestBid - UnexecuteGap, OrderSize)
                            );
                        var content = _client.SendParentOrder(request).GetContent();
                        _parentOrderAcceptanceIds.Enqueue(content.ParentOrderAcceptanceId);
                    }
                    break;

                    case 'D':
                    {
                        var request = BfParentOrderRequest.IFDOCO(
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize),
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize),
                            BfParentOrderRequestParameter.Limit(ProductCode, BfTradeSide.Buy, _ticker.BestBid - UnexecuteGap, OrderSize)
                            );
                        var content = _client.SendParentOrder(request).GetContent();
                        _parentOrderAcceptanceIds.Enqueue(content.ParentOrderAcceptanceId);
                    }
                    break;

                    case 'F':
                        break;

                    case 'M':
                        break;

                    case 'C':
                    {
                        var resp = _client.CancelParentOrder(ProductCode, parentOrderAcceptanceId: _parentOrderAcceptanceIds.Dequeue());
                        if (!resp.IsErrorOrEmpty)
                        {
                            // Cancel order sent
                        }
                    }
                    break;

                    case 'G':
                    {
                        var resp = _client.GetParentOrders(ProductCode);
                        if (resp.IsOk)
                        {
                            var jobj = JsonConvert.DeserializeObject(resp.Json);
                            var json = JsonConvert.SerializeObject(jobj, Formatting.Indented);
                            Console.WriteLine(json);
                        }
                    }
                    break;

                    case 'R':
                        return;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{ex.Message}");
                }
            }
        }