/// <summary>
        /// OnBuyEvent
        /// </summary>
        /// <param name="eventArgs">eventArgs</param>
        public void OnBuyEvent(object sender, BuyEventArgs eventArgs)
        {
            var totalValue = eventArgs.Shares * eventArgs.MarketData.Close;

            if (totalValue >= Cash)
            {
                eventArgs.Cancel = true;

                return;
            }
            else if (eventArgs.Cancel)
            {
                return;
            }

            if (PositionData.Add(eventArgs))
            {
                NumberOfTrades++;
                Cash -= totalValue;
            }
            else
            {
                eventArgs.Cancel = true;
            }
        }
예제 #2
0
 /// <summary>
 /// PositionData Copy Constructor
 /// </summary>
 /// <param name="positionData">Position Data</param>
 public PositionData(PositionData positionData)
     : this()
 {
     foreach (var position in positionData)
     {
         this.AddPosition(new Position(position));
     }
 }
        /// <summary>
        /// OnSellEvent
        /// </summary>
        /// <param name="eventArgs">eventArgs</param>
        public void OnSellEvent(object sender, SellEventArgs eventArgs)
        {
            if (eventArgs.Shares <= 0)
            {
                eventArgs.Cancel = true;

                return;
            }

            // adding to cash is predicated on safe removal; this really means you
            // can't sell more than you have.
            if (PositionData.Remove(eventArgs))
            {
                Cash += eventArgs.Price * eventArgs.Shares;

                NumberOfTrades++;
            }
            else
            {
                eventArgs.Cancel = true;
            }
        }