/// <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) { 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 _); } } }
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 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)); } }