public void ReceiveTick(string equityCode, decimal price) { var lockObject = LockObjects.GetOrAdd(equityCode, new object()); lock (lockObject) { if (_ignoreFurtherTicks || price >= _orderParameters.PriceThreshold) { return; } _ignoreFurtherTicks = true; try { _orderService.Buy(equityCode, _orderParameters.Quantity, price); OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); } catch (Exception ex) { OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, ex)); _ignoreFurtherTicks = true; } finally { LockObjects.TryRemove(equityCode, out _); } } }
/// <inheritdoc/> public void ReceiveTick(string equityCode, decimal price) { if (IsInhibited()) { return; } try { if (price < _thresholdLevel) { lock (_syncLock) { if (IsInhibited()) { return; } _orderService.Buy(equityCode, 1, price); _loggerService.Info($"Bought equityCode '{equityCode}' at price '{price}'"); InhibitFurtherTicks(); } OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); } } catch (Exception ex) { _loggerService.Error($"Error seen in ReceiveTick: {ex.Message}", ex); InhibitFurtherTicks(); OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, ex)); } }
public void ReceiveTick(string equityCode, decimal price) { if (Completed || price >= this.Price) { return; } lock (this._lock) { if (Completed) { return; } try { this._orderService.Buy(this.EquityCode, this.Quantity, price); OrderPlaced?.Invoke(new OrderPlacedEventArgs(this.EquityCode, price)); } catch (Exception ex) { OrderErrored?.Invoke(new OrderErroredEventArgs(this.EquityCode, price, ex)); } finally { this.Completed = true; } } }
public void ReceiveTick(string equityCode, decimal price) { using (this) { try { if (_validator.IsValid(equityCode, price)) { if (price < _config.EquityOrderThreshold) { _orderService.Buy(equityCode, _config.EquityOrderQuantity, price); OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); } } else { OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, new ArgumentException($"Equity code or price invalid; EquityCode: {equityCode}, Price: {price}"))); } } catch (Exception exception) { OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, exception)); } } }
public void ReceiveTick(string equityCode, decimal price) { logger.Log(LogLevel.Debug, $"{DateTime.Now} ReceiveTick for {equityCode} at {price}"); if (!orderPlaced && (orderEquity == equityCode) && CanExecute(price)) { logger.Log(LogLevel.Information, $"{DateTime.Now} Order placed for {equityCode} at {price}"); orderPlaced = true; try { Execute(price); OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); logger.Log(LogLevel.Information, $"{DateTime.Now} Order placed success."); } catch (Exception ex) { OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, ex)); logger.Log(LogLevel.Error, $"{DateTime.Now} Order placed errored: {ex.Message}"); } } }
public void ReceiveTick(string equityCode, decimal price) { if (CanReceiveTick(price)) { lock (LockObject) { try { OrderService.Buy(equityCode, Parameters.Quantity, price); OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); } catch (Exception ex) { OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, ex)); } finally { ShutDown = true; } } } }
public void PlaceOrder(Order order) { //Check the security is already there in list otherwise add it. Security security; if (!Securities.TryGetValue(order.Symbol, out security)) { security = AddSecurity(order.Symbol, 256.75, 2216278800000); security.TradeCompleted += Security_TradeCompleted; //foreach (var orderbook in security.OrderBook) //{ // var ordBook = orderbook.Value; // ordBook.TradeCompleted += OrderBook_TradeCompleted; //} } if (security != null) { //Send the Order to Security security.SubmitOrder(order); OrderPlaced?.Invoke(this, new OrderPlacedEventArgs(order)); } }
public void ReceiveTick(string equityCode, decimal price) { lock (_shutdownLock) { if (_shutdown || price >= ThresholdLevel) { return; } _shutdown = true; } try { OrderService.Buy(equityCode, 1, price); OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); } catch (Exception ex) { OrderErrored?.Invoke(new OrderErroredEventArgs(equityCode, price, ex)); } }
private void NotifyOrderPlaced(string equityCode, decimal price) { OrderPlaced?.Invoke(new OrderPlacedEventArgs(equityCode, price)); }