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(); }
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; }
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); } }
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; }
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); }