static void InitNodeInputs(STR_Test_PB_Fut_HTS strategy, STR_Test_PB_HTSInput input)
        {
            SweeperCollectionDefault sweeperLeaf = new SweeperCollectionDefault();

            StrategyNode node = new StrategyNode();

            node.InitRoot_1(strategy);

            node.InitEnterLimit_2(new EnterConditionLimit(
                Util.ConvertFormatStringToInt64(input.Root_MaxLiveSweepCount),
                Util.ConvertFormatStringToInt64(input.Root_MaxNewSweepCount)));

            DateTime dtStart = DateUtil.GetTodayDateTime(9 + Const.kHourAdjustment_Start, 0, 0);
            DateTime dtEnd = DateUtil.GetTodayDateTime(12 + 3 + Const.kHourAdjustment_End, 4, 30);
            if (KospiFutureUtil.Ins().GetFutureMaturityRemainDays(DateTime.Now) == 0)
            {
                // 만기일에는 오후 2시 45분 30초까지만 하도록 한다.
                dtEnd = DateUtil.GetTodayDateTime(12 + 2 + Const.kHourAdjustment_End, 45, 30);
            }
            node.InitMonitorTimeLimit_3(new MonitorLimit_Time(dtStart, dtEnd));

            node.InitSweeperCollection_4(new SweeperCollectionDefault());

            node.InitMonitorEnter_5(new Test_PB_HTS_MonitorEnter(node));

            strategy.AddNode(node);
        }
        public Test_PB_HTSSweeper(
            POrder o,
            Account accountFO,
            STR_Test_PB_Fut_HTS parent)
        {
            _parent = parent;

            InitSweepUnit_FO(o, accountFO);
        }
        public static STR_Test_PB_Fut_HTS Build(String inputJson, String strategyName)
        {
            STR_Test_PB_HTSInput input = GetInput(inputJson);

            STR_Test_PB_Fut_HTS strategy = new STR_Test_PB_Fut_HTS(strategyName);

            InitRootInputs(strategy, input);

            InitNodeInputs(strategy, input);

            //TODO

            return strategy;
        }
        public Test_PB_HTS_MonitorEnter(StrategyNode node)
        {
            this.IsPermissionOK = false;

            this._node = node;
            this._monitorLimit = new MonitorLimit_LastUpdatedRmd();

            String fut1 = KospiFutureUtil.Ins().KFSI.FutureCode1;

            _referenceRmdFut1 = RmdManager.Ins().GetData(fut1);

            _referenceRmdFut1List = new List<RawMarketData>();
            _referenceRmdFut1List.Add(_referenceRmdFut1);

            _root = node.Root as STR_Test_PB_Fut_HTS;
            _futureAccount = _root.FutureAccount;
        }
        static void InitRootInputs(STR_Test_PB_Fut_HTS strategy, STR_Test_PB_HTSInput input)
        {
            // 1.2. Account
            strategy.InitAccount_1(input.Root_FutureAccountName);

            // 1.3. Agent
            strategy.InitAgent_2();

            // 1.4. OrderLimit
            strategy.InitFutureOrderLimit_3(input.Root_MaxFutureNotionalPerOnce);

            // 1.5. EnterLimit
            strategy.InitEnterLimit_6(input.Root_MaxLiveSweepCount, input.Root_MaxNewSweepCount);

            // 1.6. MonitorLimit
            strategy.InitMonitorLimitWithMarketDataAccount_7();

            // 1.7. Validate init
            strategy.ValidateInits_8();
        }