private static void RunRegression() { currentProcessIndex++; while (isRun) { //get the batch of jobs to be processed var jobs = _dataManager.GetPendingRegressionJobs(); foreach (var job in jobs) { Console.WriteLine("Staring to process regression job with id: {0}", job.RegressionJobId); //process the new job currentJob = job; m_RegressionEndFlagEvent.Reset(); runners = new List <TradingModelRunner>(); pnl = 0; m_JobStat = new RegressionJobStat(); m_JobStat.InstrumentCode = currentJob.InstrumentCode; m_JobStat.JobId = currentJob.RegressionJobId; //set up consumers tickDataSubscriber = new TickDataSubscriber(); tickDataHandler = new TickDataHandler(tickDataSubscriber); moneyManager = new MoneyManager.MoneyManager(100000, .01); barDataHandler = new BarDataHandler(tickDataHandler, job.RegressionBarInterval.Value); dailyPriceBarDataHandler = new DailyPriceBarDataHandler(job.InstrumentCode, job.RegressionStartDate.Value, job.RegressionEndDate.Value, tickDataHandler); dailyPriceBarDataHandler.Fill(); //creates new instance of runner StartTradeModelRunner(currentJobIndex, job.InstrumentCode, job.RegressionEndDate.Value); //start feeder historicalDataFeeder.Start(mktTickDataPublisher, new FeederProperties { InstrumentCode = job.InstrumentCode, StartDate = job.RegressionStartDate, EndDate = job.RegressionEndDate }, () => { }); currentProcessIndex++; //setting 30 minutes timeout m_RegressionEndFlagEvent.WaitOne(TimeSpan.FromMinutes(30)); } } //get regression from db and run them synchronously }
public TradingModelRunner( int reference, ITradeModel tradeModel, int jobId, string instrumentCode, DateTime regressionEndDate, BarDataHandler barDataHandler, TickDataHandler tickDataHandler, DailyPriceBarDataHandler dailyPriceBarDataHandler, BarCompleted callBackBarCompleted, EntrySignalReceived callBackEntrySignalReceived, TradePositionCloseReceived callBackTradePositionCloseReceived, RegressionJobFinished callbackRegressionJobFinished, TickDataUpdateReceived callbackTickDataUpdateReceived, IMoneyManager moneyManager) { m_ref = reference; m_TradingModel = tradeModel; m_BarDataHandler = barDataHandler; m_TickDataHandler = tickDataHandler; m_DailyBarDataHandler = dailyPriceBarDataHandler; m_jobId = jobId; m_instrumentCode = instrumentCode; m_RegressionEndDate = regressionEndDate; m_moneyMgr = moneyManager; CallbackOnEntrySignalReceived = callBackEntrySignalReceived; CallbackTradePositionCloseReceived = callBackTradePositionCloseReceived; CallbackRegressionJobFinished = callbackRegressionJobFinished; CallbackBarCompleted = callBackBarCompleted; CallbackTickDataUpdateReceived = callbackTickDataUpdateReceived; m_SignalState = TradingModelSignalState.TradeSignal; m_TradingModel.SetHandlers(barDataHandler, tickDataHandler, dailyPriceBarDataHandler, moneyManager); m_BarDataHandler.BarDataCreatedCompleted += OnBarDataCreatedCompleted; m_TickDataHandler.OnRealTimeTickDataUpdate += OnRealTimeTickDataUpdate; m_TickDataHandler.OnRealTimeTickDataDateChange += OnRealTimeTickDataDateChange; }