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