using System;
using StopLimits=MarketData.Generator.Model.StopLimits;

namespace MarketData.Generator.MGSHMomentum
{
  public class MGSHSessionParams
  {
    public DateTime LastUpdated { get; set; }
    public DateTime TradeDate { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime AnalysisDate { get; set; }
    public MGSHConfiguration Configuration { get; set; }
    public MGSHActivePositions ActivePositions { get; set; }
    public MGSHPositions AllPositions { get; set; }
    public double CashBalance { get; set; }
    public double HedgeCashBalance { get; set; }
    public double NonTradeableCash { get; set; }
    public StopLimits StopLimits { get; set;}
    public MGSHPositions HedgePositions { get; set; } 
    public MGSHPricingExceptions PricingExceptions{ get; set; }
    public int Cycle { get; set; }

// This gets AllPositions+Positions+HedgePositions
    public MGSHPositions GetCombinedPositions()
    {
      MGSHPositions positions=new MGSHPositions();
      positions.AddRange(AllPositions);
      positions.AddRange(ActivePositions.GetPositions());
      positions.AddRange(HedgePositions);
      return positions;
    }
  }
}
