public void AllowsOneActiveOrderPerSymbol(OrderTestParameters parameters) { // tradier's api gets special with zero holdings crossing in that they need to fill the order // before the next can be submitted, so we just limit this impl to only having on active order // by symbol at a time, new orders will issue cancel commands for the existing order bool orderFilledOrCanceled = false; var order = parameters.CreateLongOrder(1); EventHandler<OrderEvent> brokerageOnOrderStatusChanged = (sender, args) => { // we expect all orders to be cancelled except for market orders, they may fill before the next order is submitted if (args.OrderId == order.Id && args.Status == OrderStatus.Canceled || (order is MarketOrder && args.Status == OrderStatus.Filled)) { orderFilledOrCanceled = true; } }; Brokerage.OrderStatusChanged += brokerageOnOrderStatusChanged; // starting from zero initiate two long orders and see that the first is canceled PlaceOrderWaitForStatus(order, OrderStatus.Submitted); PlaceOrderWaitForStatus(parameters.CreateLongMarketOrder(1)); Brokerage.OrderStatusChanged -= brokerageOnOrderStatusChanged; Assert.IsTrue(orderFilledOrCanceled); }
protected override void ModifyOrderUntilFilled(Order order, OrderTestParameters parameters, double secondsTimeout = 90) { Assert.Pass("Order update not supported. Please cancel and re-create."); }
public override void ShortFromLong(OrderTestParameters parameters) { base.ShortFromLong(parameters); }
public override void LongFromShort(OrderTestParameters parameters) { base.LongFromShort(parameters); }
public override void CloseFromShort(OrderTestParameters parameters) { base.CloseFromShort(parameters); }
public override void CloseFromLong(OrderTestParameters parameters) { base.CloseFromLong(parameters); }
public override void LongFromZero(OrderTestParameters parameters) { base.LongFromZero(parameters); }
public override void CancelOrders(OrderTestParameters parameters) { base.CancelOrders(parameters); }
public override void LongFromShort(OrderTestParameters parameters) { // https://github.com/alpacahq/Alpaca-API/issues/90 Assert.Ignore("Alpaca brokerage does not currently support reversing a position with a single order."); }