Exemplo n.º 1
0
        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
        }
Exemplo n.º 2
0
        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;
        }