public void UpdateSignal(SignalEvent signal)
 {
     var orderEvent = this.GenerateNaiveOrder(signal);
     if (orderEvent != null)
     {
         this.eventBus.Put(orderEvent);
     }
 }
        private OrderEvent GenerateNaiveOrder(SignalEvent signal)
        {
            var symbol = signal.Symbol;
            var direction = signal.SignalType;
            var strength = signal.Strength;
            var time = signal.TimeStamp;

            var marketQuantity = (int)Math.Floor(100*strength);
            var currentQuantity = (int)this.currentPositions[symbol];

            if (direction == SignalType.Long && currentQuantity == 0)
            {
                return new OrderEvent(symbol, OrderType.Market, marketQuantity, TransactionDirection.Buy, time);
            }
            if (direction == SignalType.Short && currentQuantity == 0)
            {
                return new OrderEvent(symbol, OrderType.Market, marketQuantity, TransactionDirection.Sell, time);
            }
            if (direction == SignalType.Exit && currentQuantity > 0)
            {
                return new OrderEvent(symbol, OrderType.Market, Math.Abs(currentQuantity), TransactionDirection.Sell, time);
            }
            if (direction == SignalType.Exit && currentQuantity < 0)
            {
                return new OrderEvent(symbol, OrderType.Market, Math.Abs(currentQuantity), TransactionDirection.Buy, time);
            }

            return null;
        }