コード例 #1
0
 public STR_Door(
     STR_Door_Input input,
     String strategyName,
     Account elwAccount,
     Account optionAccount,
     MonitorLimit_Time_And_MarketData monitorLimit)
 {
     InitDefaultInfos(input, strategyName, elwAccount, optionAccount, monitorLimit);
     InitController();
 }
コード例 #2
0
        public IStrategy CreateStrategy(String inputJson, String strategyName)
        {
            STR_Door_Input input = Util.GetJsonObject(typeof(STR_Door_Input), inputJson) as STR_Door_Input;

            Account elwAccount = StrategyManager.Ins().GetAccount(input.ElwAccountName);
            Account optionAccount = StrategyManager.Ins().GetAccount(input.OptionAccountName);

            MonitorLimit_Time_And_MarketData monitorLimit = new MonitorLimit_Time_And_MarketData(
                DateUtil.GetTodayDateTime(9 + Const.kHourAdjustment_Start, 0, 0),
                DateUtil.GetTodayDateTime(12 + 3 + Const.kHourAdjustment_End, 0, 0));

            STR_Door strategy = new STR_Door(
                input,
                strategyName,
                elwAccount,
                optionAccount,
                monitorLimit);

            return strategy;
        }
コード例 #3
0
        public void IsOKTest_in_MonitorLimit_Time_And_MarketDataTest()
        {
            // MarketDataDelayed이므로 Not OK인 시나리오
            {
                DateTime dtStart = DateTime.Now.AddSeconds(-2);
                DateTime dtEnd = DateTime.Now.AddSeconds(-1);
                MonitorLimit_Time_And_MarketData target = new MonitorLimit_Time_And_MarketData(dtStart, dtEnd);
                bool actual = target.IsOK();
                Assert.AreEqual(false, actual);
            }

            MarketDelayManager.Ins().SetFutureOptionLastUpdatedTime(DateTime.Now);

            // 모니터링 끝 시간이 지났기 때문에 OK가 아닌 시나리오
            {
                DateTime dtStart = DateTime.Now.AddSeconds(-2);
                DateTime dtEnd = DateTime.Now.AddSeconds(-1);
                MonitorLimit_Time_And_MarketData target = new MonitorLimit_Time_And_MarketData(dtStart, dtEnd);
                bool actual = target.IsOK();
                Assert.AreEqual(false, actual);
            }

            // 모니터링 시작 시간이 아직 안되었기 때문에 OK가 아닌 시나리오
            {
                DateTime dtStart = DateTime.Now.AddSeconds(2);
                DateTime dtEnd = DateTime.Now.AddSeconds(3);
                MonitorLimit_Time_And_MarketData target = new MonitorLimit_Time_And_MarketData(dtStart, dtEnd);
                bool actual = target.IsOK();
                Assert.AreEqual(false, actual);
            }

            // 모니터링 시간이므로 OK인 시나리오
            {
                DateTime dtStart = DateTime.Now.AddSeconds(-1);
                DateTime dtEnd = DateTime.Now.AddSeconds(1);
                MonitorLimit_Time_And_MarketData target = new MonitorLimit_Time_And_MarketData(dtStart, dtEnd);
                bool actual = target.IsOK();
                Assert.AreEqual(true, actual);
            }
        }
コード例 #4
0
        public void InitMonitorLimitWithMarketDataAccount_7()
        {
            // 시작시간과 종료시간을 설정한다.

            // Account의 준비여부를 확인하는 역할도 함께 수행한다.

            DateTime dtStart = DateUtil.GetTodayDateTime(9 + Const.kHourAdjustment_Start, 0, 0);

            DateTime dtEnd = DateUtil.GetTodayDateTime(12 + 3 + Const.kHourAdjustment_End, 4, 30);

            _monitorLimitWithMarketDataAccount = new MonitorLimit_Time_And_MarketData(dtStart, dtEnd);

            _bReadyMonitorLimit = true;
        }
コード例 #5
0
        void InitDefaultInfos(
            STR_Door_Input input,
            String strategyName,
            Account elwAccount,
            Account optionAccount,
            MonitorLimit_Time_And_MarketData monitorLimit)
        {
            // 1. set member variables
            this.Input = input;
            this._accountNames.Add(elwAccount.AccountName);
            this._accountNames.Add(optionAccount.AccountName);

            this._strategyName = strategyName;
            this.ElwAccount = elwAccount;
            this.OptionAccount = optionAccount;
            this.MonitorLimit = monitorLimit;

            List<Account> accounts = new List<Account>();
            accounts.Add(this.ElwAccount);
            accounts.Add(this.OptionAccount);

            // 2. Set Agent
            this._agent = new Agent(this, accounts);

            // 3. Set Order Limit
            IOrderLimit orderLimitFO = CreateOrderLimit_FO();
            IOrderLimit orderLimitELW = CreateOrderLimit_ELW();

            this.OptionAccount.SetOrderLimit(orderLimitFO);
            this.OptionAccount.SetOrderLimitEmptyRMD(orderLimitFO);

            this.ElwAccount.SetOrderLimit(orderLimitELW);
            this.ElwAccount.SetOrderLimitEmptyRMD(orderLimitELW);
        }