Example #1
0
        public void putOrderExeEvents(ExecutionMessage message, String stgNo)
        {
            String side = message.Execution.Side;
            int    bqty = 0;
            int    sqty = 0;

            if ("BOT".Equals(side))
            {
                bqty = message.Execution.Shares;
            }
            if ("SLD".Equals(side))
            {
                sqty = message.Execution.Shares;
            }

            AppOrderExecutedEvent exeEvent = new AppOrderExecutedEvent();

            exeEvent.TickerName = message.Contract.LocalSymbol;
            exeEvent.BQty       = bqty.ToString();
            exeEvent.SQty       = sqty.ToString();
            exeEvent.Price      = message.Execution.Price.ToString();
            exeEvent.SNo        = stgNo;
            exeEvent.Status     = "Filled";
            exeEvent.Time       = message.Execution.Time;

            IAppMainteanceManager maintenanceManager = stgManager.getAppMainteanceManager();

            if (maintenanceManager != null)
            {
                maintenanceManager.storeEventQueue.Add(exeEvent);
            }
        }
        public AppStrategyManager(IIBTradeAppBridge appForm)
        {
            appMDManager          = new AppMDManager(appForm);
            appEventManager       = new AppEventManager(this);
            appOrderManager       = new AppOrderManager(this);
            appMaintenanceManager = new AppMainteanceManager(this);
            appMaintenanceManager.startManager();
            ParentUI = appForm;
            //OrderRepositry = new ConcurrentDictionary<string, OrderRecord>();
            activeStgNamesMap = new ConcurrentDictionary <String, String>();
            storeStg          = new Dictionary <string, IStrategy>();
            storeStg.Add(AppConstant.STG1_SHORT_NAME, new StrategyRandom1(AppConstant.STG1_SHORT_NAME, 0));
            storeStg.Add(AppConstant.STG2_SHORT_NAME, new StrategyRBreakerReverse1(AppConstant.STG2_SHORT_NAME, 1));
            storeStg.Add(AppConstant.STG3_SHORT_NAME, new StrategyRBreakerTrend1(AppConstant.STG3_SHORT_NAME, 2));
            storeStg.Add(AppConstant.STG4_SHORT_NAME, new StrategyRandom4(AppConstant.STG4_SHORT_NAME, 3));

            /*
             * storeStg.Add(AppConstant.STG5_SHORT_NAME, new StrategyStastic1(AppConstant.STG5_SHORT_NAME, 4));
             * storeStg.Add(AppConstant.STG6_SHORT_NAME, new StrategyRBreaker1(AppConstant.STG6_SHORT_NAME, 5));
             * storeStg.Add(AppConstant.STG7_SHORT_NAME, new StrategyRBreakerTrend2(AppConstant.STG7_SHORT_NAME, 6));
             */
            StoreCancelToken = new ConcurrentDictionary <string, CancellationTokenSource>();
            TimeDiffServer   = long.MaxValue;
            appEventManager.startGenerateTimeEvents();
        }
Example #3
0
        public void putTimeEvents(DateTime time)
        {
            ConcurrentDictionary <String, String> stgNamesMap = stgManager.getActiveStgNamesMap();
            AppTimeEvent timeEvent = new AppTimeEvent();

            timeEvent.eventTime = time;
            stgNamesMap.Keys.ToArray();
            foreach (String name in stgNamesMap.Keys)
            {
                storeEventQueue[name].Add(timeEvent);
            }

            IAppMainteanceManager maintenanceManager = stgManager.getAppMainteanceManager();

            if (maintenanceManager != null)
            {
                maintenanceManager.storeEventQueue.Add(timeEvent);
            }
        }
Example #4
0
        public void test_handleDailyAllFlagsReset()
        {
            DateTime time1 = new DateTime(2015, 12, 10, 10, 0, 0, DateTimeKind.Local);
            DateTime time2 = new DateTime(2015, 12, 10, 12, 57, 1, DateTimeKind.Local);
            DateTime time3 = new DateTime(2015, 12, 14, 02, 0, 1, DateTimeKind.Local);

            DateTime time4 = new DateTime(2015, 12, 10, 0, 10, 0, DateTimeKind.Local);
            DateTime time5 = new DateTime(2015, 12, 11, 0, 10, 0, DateTimeKind.Local);

            AppTimeEvent timeEvent1 = getItemEvent(time1);
            AppTimeEvent timeEvent2 = getItemEvent(time2);
            AppTimeEvent timeEvent3 = getItemEvent(time3);
            //[Case Initial the reset flags]
            IAppMainteanceManager maintenanceManager = getInitMaintenaceManger(null);

            maintenanceManager.dailyAllFlagsInit = false;
            maintenanceManager.handleDailyAllFlagsReset(timeEvent1);

            Assert.IsTrue(maintenanceManager.dailyAllFlagsInit);
            Assert.IsNotNull(maintenanceManager.CompleteDailyReset[time4]);


            //[Case will not trigger reset all daily flags, when the CompleteDailyReset already contain the record of that day]
            maintenanceManager.lunchTimeRTBReset   = true;
            maintenanceManager.morningTimeRTBReset = true;
            maintenanceManager.handleDailyAllFlagsReset(timeEvent2);
            Assert.IsTrue(maintenanceManager.lunchTimeRTBReset);
            Assert.IsTrue(maintenanceManager.morningTimeRTBReset);

            Console.WriteLine(timeEvent3.eventTime.ToString());
            Console.WriteLine(maintenanceManager.dailyAllFlagsInit);
            //[Case will trigger reset all daily flags, when the CompleteDailyReset does not contain the record of that day]
            //TO:DO to implement
            //maintenanceManager.handleDailyAllFlagsReset(timeEvent3);
            //Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);
            //Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            //Assert.IsNotNull(maintenanceManager.CompleteDailyReset[time5]);


            //xxxmaintenanceManager.CompleteDailyReset[time1];
        }
Example #5
0
        public void test_handleResetRTBRequest()
        {
            IRealTimeBarsManagerBridge rtsBarManager = new RealTimeBarsManagerMock();
            var        uiMock   = new Mock <IIBTradeAppBridge>();
            Contract   contract = getContract();
            TickerInfo ticker   = getTickerInfo();

            uiMock.Setup(foo => foo.getRealTimeBarsManager()).Returns(rtsBarManager);
            uiMock.Setup(foo => foo.GetMDContract()).Returns(contract);
            uiMock.Setup(foo => foo.getTickerInfo()).Returns(ticker);
            IIBTradeAppBridge uiMockObj = uiMock.Object;

            var mock = new Mock <IAppStrategyManager>();

            mock.Setup(foo => foo.ParentUI).Returns(uiMockObj);
            IAppStrategyManager mockObj = mock.Object;

            DateTime time1 = new DateTime(2015, 12, 10, 10, 0, 0, DateTimeKind.Local);
            DateTime time2 = new DateTime(2015, 12, 10, 12, 57, 1, DateTimeKind.Local);
            DateTime time3 = new DateTime(2015, 12, 10, 12, 58, 1, DateTimeKind.Local);

            IAppMainteanceManager maintenanceManager = getInitMaintenaceManger(mockObj);
            AppTimeEvent          timeEvent1         = getItemEvent(time1);
            AppTimeEvent          timeEvent2         = getItemEvent(time2);
            AppTimeEvent          timeEvent3         = getItemEvent(time3);

            //[reset negative, time is before moring time and lunch time]
            maintenanceManager.handleResetRTBRequest(timeEvent1);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[reset lunch positive, time is at lunch time]
            maintenanceManager.handleResetRTBRequest(timeEvent2);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsTrue(maintenanceManager.lunchTimeRTBReset);

            //[reset lunch negative, time is just after lunch time]
            maintenanceManager = getInitMaintenaceManger(mockObj);
            maintenanceManager.handleResetRTBRequest(timeEvent3);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);


            DateTime time4 = new DateTime(2015, 12, 10, 07, 0, 0, DateTimeKind.Local);
            DateTime time5 = new DateTime(2015, 12, 10, 09, 12, 1, DateTimeKind.Local);
            DateTime time6 = new DateTime(2015, 12, 10, 09, 13, 1, DateTimeKind.Local);

            AppTimeEvent timeEvent4 = getItemEvent(time4);
            AppTimeEvent timeEvent5 = getItemEvent(time5);
            AppTimeEvent timeEvent6 = getItemEvent(time6);

            //[reset morning negative, time is before morning time]
            maintenanceManager = getInitMaintenaceManger(mockObj);
            maintenanceManager.handleResetRTBRequest(timeEvent4);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[reset morning positive, time is at morning time]
            maintenanceManager = getInitMaintenaceManger(mockObj);
            maintenanceManager.handleResetRTBRequest(timeEvent5);
            Assert.IsTrue(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[reset morning negative, time is after morning time]
            maintenanceManager = getInitMaintenaceManger(mockObj);
            maintenanceManager.handleResetRTBRequest(timeEvent6);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[reset morning & lunch, one cycle]
            DateTime time7 = new DateTime(2015, 12, 11, 0, 0, 1, DateTimeKind.Local);
            DateTime time8 = new DateTime(2015, 12, 11, 09, 12, 1, DateTimeKind.Local);
            DateTime time9 = new DateTime(2015, 12, 11, 12, 57, 1, DateTimeKind.Local);

            AppTimeEvent timeEvent7 = getItemEvent(time7);
            AppTimeEvent timeEvent8 = getItemEvent(time8);
            AppTimeEvent timeEvent9 = getItemEvent(time9);

            maintenanceManager = getInitMaintenaceManger(mockObj);

            //[time is 07:00]
            maintenanceManager.handleResetRTBRequest(timeEvent4);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[time is 09:12]
            maintenanceManager.handleResetRTBRequest(timeEvent5);
            Assert.IsTrue(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[time is 12:57]
            maintenanceManager.handleResetRTBRequest(timeEvent2);
            Assert.IsTrue(maintenanceManager.morningTimeRTBReset);
            Assert.IsTrue(maintenanceManager.lunchTimeRTBReset);

            //[time is 0:0 T+1]
            maintenanceManager.resetDailyAllFlag(time7);
            Assert.IsFalse(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[time is  09:12 T+1]
            maintenanceManager.handleResetRTBRequest(timeEvent8);
            Assert.IsTrue(maintenanceManager.morningTimeRTBReset);
            Assert.IsFalse(maintenanceManager.lunchTimeRTBReset);

            //[time is  12:57 T+1]
            maintenanceManager.handleResetRTBRequest(timeEvent9);
            Assert.IsTrue(maintenanceManager.morningTimeRTBReset);
            Assert.IsTrue(maintenanceManager.lunchTimeRTBReset);
        }
 public void injectAppMainteanceManager(IAppMainteanceManager appMainteanceManager)
 {
     this.appMaintenanceManager = appMainteanceManager;
 }