public void EnqueueDeletedStopLimitOrder(IStopLimitOrder stopLimitOrder) { serverToClientMessage.Reset(); serverToClientMessage.ReceiverClientId = stopLimitOrder.ClientId; serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.StopLimitOrderDeleted; serverToClientMessage.StopLimitOrder.Update(stopLimitOrder.ToDto()); Enqueue(); }
public void EnqueueAddedStopLimitOrder(IStopLimitOrder stopLimitOrder) { serverToClientMessage.Reset(); serverToClientMessage.ReceiverClientId = stopLimitOrder.ClientId; serverToClientMessage.MessageType = ServerToClientMessageTypeEnum.StopLimitOrderAccepted; serverToClientMessage.StopLimitOrder.Update(stopLimitOrder.ToDto()); Enqueue(); }
public void RemoveStopLimitOrder(IStopLimitOrder stopLimitOrder) { switch (stopLimitOrder.Way) { case WayEnum.Buy: BuySideStopLimitOrders.Remove(stopLimitOrder); break; case WayEnum.Sell: SellSideStopLimitOrders.Remove(stopLimitOrder); break; } }
public void AddStopLimitOrder(IStopLimitOrder stopLimitOrder) { switch (stopLimitOrder.Way) { case WayEnum.Buy: BuySideStopLimitOrders.Insert(0, stopLimitOrder); break; case WayEnum.Sell: SellSideStopLimitOrders.Insert(0, stopLimitOrder); break; } stopLimitOrder.RegisterOrderBookDeleteHandler(RemoveStopLimitOrder); stopLimitOrder.RegisterOrderBookModifyHandler(StopLimitOrderModified); TryExecuteTriggers(); }
public void HandleAddStopLimitOrder(IStopLimitOrder stopLimitOrder) { string symbol = stopLimitOrder.Symbol; if (!OrderBooks.ContainsKey(symbol)) { return; } stopLimitOrder.RegisterOutgoingQueueDeleteHandler(outgoingQueue.EnqueueDeletedStopLimitOrder); outgoingQueue.EnqueueAddedStopLimitOrder(stopLimitOrder); stopLimitOrder.Trigger.SetTriggerAction(() => { stopLimitOrder.Delete(); var newLimitOrder = orderRepository.NewLimitOrder(stopLimitOrder); newLimitOrder.RegisterDeleteNotificationHandler(outgoingQueue.EnqueueDeletedLimitOrder); newLimitOrder.RegisterModifyNotificationHandler(outgoingQueue.EnqueueUpdatedLimitOrder); newLimitOrder.RegisterFilledNotification(outgoingQueue.EnqueueDeletedLimitOrder); newLimitOrder.RegisterFilledNotification((order) => order.Delete()); HandleAddLimitOrder(newLimitOrder); }); OrderBooks[symbol].AddStopLimitOrder(stopLimitOrder); }
public ILimitOrder NewLimitOrder(IStopLimitOrder stopLimitOrder) { return NewLimitOrder(stopLimitOrder.Symbol, stopLimitOrder.ClientId, stopLimitOrder.LimitPrice, stopLimitOrder.Quantity, stopLimitOrder.Way); }
private void HandleDeletedStopLimitOrder(IStopLimitOrder stopLimitOrder) { stopLimitOrder.UnRegisterOrderRepositoryDeleteHandler(); StopLimitOrders.Remove(stopLimitOrder.ExchangeOrderId); ClientStopLimitOrders[stopLimitOrder.ClientId].Remove(stopLimitOrder); }
public ILimitOrder NewLimitOrder(IStopLimitOrder stopLimitOrder) { return(NewLimitOrder(stopLimitOrder.Symbol, stopLimitOrder.ClientId, stopLimitOrder.LimitPrice, stopLimitOrder.Quantity, stopLimitOrder.Way)); }
public void HandleAddStopLimitOrder(IStopLimitOrder stopLimitOrder) { string symbol = stopLimitOrder.Symbol; if (!OrderBooks.ContainsKey(symbol)) return; stopLimitOrder.RegisterOutgoingQueueDeleteHandler(outgoingQueue.EnqueueDeletedStopLimitOrder); outgoingQueue.EnqueueAddedStopLimitOrder(stopLimitOrder); stopLimitOrder.Trigger.SetTriggerAction(() => { stopLimitOrder.Delete(); var newLimitOrder = orderRepository.NewLimitOrder(stopLimitOrder); newLimitOrder.RegisterDeleteNotificationHandler(outgoingQueue.EnqueueDeletedLimitOrder); newLimitOrder.RegisterModifyNotificationHandler(outgoingQueue.EnqueueUpdatedLimitOrder); newLimitOrder.RegisterFilledNotification(outgoingQueue.EnqueueDeletedLimitOrder); newLimitOrder.RegisterFilledNotification((order) => order.Delete()); HandleAddLimitOrder(newLimitOrder); }); OrderBooks[symbol].AddStopLimitOrder(stopLimitOrder); }
private void StopLimitOrderModified(IStopLimitOrder modifiedStopLimitOrder) { TryExecuteTriggers(); }