static void Main(string[] args) { Console.WriteLine("Market App"); using (ServiceHost host = new ServiceHost(typeof(MarketService))) { // Init Market Service host.Open(); Console.WriteLine("The service is ready at: {0}", host.BaseAddresses.FirstOrDefault().ToString()); // Init MarketData Publisher InstanceContext site = new InstanceContext(new MarketPublisher()); MarketContractClient publisher = new MarketContractClient(site); // Evolve for MarketTickInterval var config = new MarketConfiguration(); var logNormal = new LogNormalMarket(config); TimeSpan evolveTime = TimeSpan.FromHours(0); var myTimer = new System.Timers.Timer(); myTimer.Elapsed += (sender, e) => EvolveAndPublish(sender, logNormal, evolveTime, publisher); myTimer.Interval = config.MarketTickInterval.TotalMilliseconds; myTimer.Enabled = true; //Publish MarketData Console.ReadKey(); host.Close(); } }
/// <summary> /// Initializes a new instance of the <see cref="LogNormalMarket"/> class. /// </summary> /// <param name="marketConfiguration">The market configuration.</param> public LogNormalMarket(MarketConfiguration marketConfiguration) { _drift = marketConfiguration.Drift; _volatility = marketConfiguration.Volatility; _random = new Random(); Time = marketConfiguration.StartTime; StockPrice = marketConfiguration.InitialStockPrice; VolSurface = new FlatVolSurface(marketConfiguration.Volatility); }