Esempio n. 1
0
        static void PlaceUnexecutableChildOrder(bool fok = false, bool mte = false)
        {
            // Selling order too high price by best ask price. Order will be on order book but not execute.
            BfChildOrderRequest order = null;

            if (fok)
            {
                order = _orderFactory.CreateLimitPriceOrder(BfTradeSide.Sell, _market.MinimumOrderSize, _market.BestAskPrice + 50000.0m, timeInForce: BfTimeInForce.FOK);
            }
            else if (mte)
            {
                order = _orderFactory.CreateLimitPriceOrder(BfTradeSide.Sell, _market.MinimumOrderSize, _market.BestAskPrice + 50000.0m, minuteToExpire: TimeSpan.FromMinutes(1));
            }
            else
            {
                order = _orderFactory.CreateLimitPriceOrder(BfTradeSide.Sell, _market.MinimumOrderSize, _market.BestAskPrice + 50000.0m);
            }

            var transaction = _market.PlaceOrder(order).Result;

            if (transaction != null)
            {
                _childOrderTransaction = transaction;
                Console.WriteLine("Order accepted.");
            }
            else
            {
                Console.WriteLine("Order failed.");
            }
        }
Esempio n. 2
0
        public static IBfxOrder Market(BfTradeSide side, decimal size)
        {
            var request = BfChildOrderRequest.Market(BfProductCode.Unknown, side, size, 0, BfTimeInForce.NotSpecified);
            var order   = new BfxChildOrder(request);

            return(order);
        }
Esempio n. 3
0
 public static BfParentOrderRequestParameter ToParameter(this BfChildOrderRequest child)
 {
     return(new BfParentOrderRequestParameter
     {
         ProductCode = child.ProductCode,
         ConditionType = child.OrderType,
         Side = child.Side,
         Size = child.Size,
         Price = child.Price,
     });
 }
Esempio n. 4
0
        public BfChildOrderRequest CreateMarketPriceOrder(BfTradeSide side, decimal size)
        {
            var request = new BfChildOrderRequest
            {
                ProductCode = _market.ProductCode,
                OrderType   = BfOrderType.Market,
                Side        = side,
                Size        = size,
            };

            CheckChildOrderRequestValid(request);
            return(request);
        }
Esempio n. 5
0
        // Market/Limit
        public BfxChildOrder(BfChildOrderRequest request)
        {
            Request = request;

            ProductCode = request.ProductCode;
            OrderType   = request.ChildOrderType;
            Side        = request.Side;
            OrderSize   = request.Size;
            if (OrderType == BfOrderType.Limit)
            {
                OrderPrice = request.Price;
            }
            MinuteToExpire = request.MinuteToExpire;
            TimeInForce    = request.TimeInForce;
        }
Esempio n. 6
0
        public BfChildOrderRequest CreateLimitPriceOrder(BfTradeSide side, decimal size, decimal price, BfTimeInForce timeInForce)
        {
            var request = new BfChildOrderRequest
            {
                ProductCode = _market.ProductCode,
                OrderType   = BfOrderType.Limit,
                Side        = side,
                Size        = size,
                Price       = price,
            };

            request.TimeInForce = timeInForce;

            CheckChildOrderRequestValid(request);
            return(request);
        }
Esempio n. 7
0
        public BfChildOrderRequest CreateLimitPriceOrder(BfTradeSide side, decimal size, decimal price, TimeSpan minuteToExpire)
        {
            var request = new BfChildOrderRequest
            {
                ProductCode = _market.ProductCode,
                OrderType   = BfOrderType.Limit,
                Side        = side,
                Size        = size,
                Price       = price,
            };

            request.MinuteToExpireSpan = minuteToExpire;

            CheckChildOrderRequestValid(request);
            return(request);
        }
Esempio n. 8
0
        public DbChildOrder(BfChildOrderRequest request, string childOrderAcceptanceId)
        {
            AcceptanceId = childOrderAcceptanceId;

            ProductCode = request.ProductCode;
            OrderType   = request.ChildOrderType;
            Side        = request.Side;
            if (OrderType == BfOrderType.Limit)
            {
                OrderPrice = request.Price;
            }
            OrderSize   = request.Size;
            TimeInForce = request.TimeInForce;
            if (TimeInForce == BfTimeInForce.NotSpecified)
            {
                TimeInForce = BfTimeInForce.GTC;
            }
            MinuteToExpire = request.MinuteToExpire;

            ChildOrderIndex = -1;
        }
Esempio n. 9
0
        public Task <BfxChildOrderTransaction> PlaceOrder(BfChildOrderRequest request, object tag = null)
        {
            DebugEx.Trace();
            return(Task.Run(() =>
            {
                DebugEx.Trace();
                var trans = new BfxChildOrderTransaction(this, request);
                trans.StateChanged += OnChildOrderTransactionStateChanged;
                trans.OrderChanged += OnChildOrderChanged;
                trans.Tag = tag;

                for (var retry = 0; retry <= Config.OrderRetryMax; retry++)
                {
                    DebugEx.Trace();
                    if (!trans.IsOrderable())
                    {
                        DebugEx.Trace();
                        trans.Dispose();
                        return null; // order is unacceptable
                    }

                    if (trans.SendOrder())
                    {
                        DebugEx.Trace();
                        return trans;
                    }

                    DebugEx.Trace("Trying retry...");
                    Thread.Sleep(Config.OrderRetryInterval);
                }

                DebugEx.Trace();
                trans.Dispose();
                return null; // Retried out
            }));
        }
Esempio n. 10
0
        static void ChildOrderMain()
        {
            while (true)
            {
                Console.WriteLine("======== Child order operations");
                Console.WriteLine("Market price S)ell order");
                Console.WriteLine("Market price B)uy order");
                Console.WriteLine("L)imit price order");
                Console.WriteLine("C)ancel order");
                Console.WriteLine("Cancel A)ll orders");
                Console.WriteLine("T)ime in force");
                Console.WriteLine("M)inutes to expire");
                Console.WriteLine("I)llegal size");
                Console.WriteLine("");
                Console.WriteLine("G)et child orders");
                Console.WriteLine("");
                Console.WriteLine("R) Return to main");

                try
                {
                    switch (GetCh())
                    {
                    case 'S':
                    {
                        var request = BfChildOrderRequest.Market(ProductCode, BfTradeSide.Sell, OrderSize);
                        var content = _client.SendChildOrder(request).GetContent();
                        _childOrderAcceptanceIds.Enqueue(content.ChildOrderAcceptanceId);
                    }
                    break;

                    case 'B':
                    {
                        var request = BfChildOrderRequest.Market(ProductCode, BfTradeSide.Buy, OrderSize);
                        var content = _client.SendChildOrder(request).GetContent();
                        _childOrderAcceptanceIds.Enqueue(content.ChildOrderAcceptanceId);
                    }
                    break;

                    case 'L':
                    {
                        var request = BfChildOrderRequest.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize);
                        var content = _client.SendChildOrder(request).GetContent();
                        _childOrderAcceptanceIds.Enqueue(content.ChildOrderAcceptanceId);
                    }
                    break;

                    case 'C':
                    {
                        var resp = _client.CancelChildOrder(ProductCode, childOrderAcceptanceId: _childOrderAcceptanceIds.Dequeue());
                    }
                    break;

                    case 'A':
                    {
                        if (_client.CancelAllChildOrders(ProductCode).IsOk)
                        {
                            _childOrderAcceptanceIds.Clear();
                        }
                    }
                    break;

                    case 'T':
                    {
                        var request = BfChildOrderRequest.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize, timeInForce: BfTimeInForce.FOK);
                        var content = _client.SendChildOrder(request).GetContent();
                        _childOrderAcceptanceIds.Enqueue(content.ChildOrderAcceptanceId);
                    }
                    break;

                    case 'M':
                    {
                        var request = BfChildOrderRequest.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, OrderSize, minuteToExpire: 1);
                        var content = _client.SendChildOrder(request).GetContent();
                        _childOrderAcceptanceIds.Enqueue(content.ChildOrderAcceptanceId);
                    }
                    break;

                    case 'I':
                    {
                        var request = BfChildOrderRequest.Limit(ProductCode, BfTradeSide.Sell, _ticker.BestAsk + UnexecuteGap, 0.001m);
                        var content = _client.SendChildOrder(request).GetContent();
                        _childOrderAcceptanceIds.Enqueue(content.ChildOrderAcceptanceId);
                    }
                    break;

                    case 'G':
                    {
                        Console.WriteLine("1)Not specified 2)Canceled 3)Parent children 4)Parent canceled children");
                        Console.WriteLine("5)Child acceptance 6)Child acceptance canceled");
                        var orderState             = BfOrderState.Unknown;
                        var parentOrderId          = "";
                        var childOrderAcceptanceId = "";
                        switch (GetCh())
                        {
                        case '1':
                            break;

                        case '2':
                            orderState = BfOrderState.Canceled;
                            break;

                        case '3':
                            Console.Write("Parent order ID : ");
                            parentOrderId = Console.ReadLine();
                            break;

                        case '4':
                            Console.Write("Parent order ID : ");
                            parentOrderId = Console.ReadLine();
                            orderState    = BfOrderState.Canceled;
                            break;

                        case '5':
                            Console.Write("Child order acceptance ID : ");
                            childOrderAcceptanceId = Console.ReadLine();
                            break;

                        case '6':
                            Console.Write("Child order acceptance ID : ");
                            childOrderAcceptanceId = Console.ReadLine();
                            orderState             = BfOrderState.Canceled;
                            break;
                        }

                        BitFlyerResponse <BfaChildOrder[]> resp = null;
                        if (!string.IsNullOrEmpty(parentOrderId))
                        {
                            resp = _client.GetChildOrders(ProductCode, orderState: orderState, parentOrderId: parentOrderId);
                        }
                        else if (!string.IsNullOrEmpty(childOrderAcceptanceId))
                        {
                            resp = _client.GetChildOrders(ProductCode, orderState: orderState, childOrderAcceptanceId: childOrderAcceptanceId);
                        }
                        else
                        {
                            resp = _client.GetChildOrders(ProductCode, orderState: orderState);
                        }

                        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);
                }
            }
        }
Esempio n. 11
0
 public BfxChildOrder(BfChildOrderRequest request)
 {
     Request = request;
 }
Esempio n. 12
0
 public BfxChildOrderTransaction(BfTradingMarket market, BfChildOrderRequest request)
 {
     DebugEx.EnterMethod();
     _market = market;
     State   = new BfxChildOrderTransactionState(_market, request);
 }
Esempio n. 13
0
 void IBfOrderSource.OpenChildOrder(BfChildOrderRequest req, BfChildOrderResponse resp)
 {
 }
Esempio n. 14
0
 // Child orders
 public void Insert(BfChildOrderRequest req, BfChildOrderResponse resp)
 {
     ChildOrders.Add(new DbChildOrder(req, resp.ChildOrderAcceptanceId));
 }
Esempio n. 15
0
 public BfxChildOrderTransactionState(BfTradingMarket market, BfChildOrderRequest request)
     : base(request)
 {
     _market = market;
 }