public PassiveSweepState(POrder o, EDoorCenterData centerData) { _enterOrder = o; _enterOrder.ShortCutTargetOfContractCallBack = this; // 주문을 취소한다. _enterOrder.CancelRemains(); // 채널을 하나 사용한다. // 여기서 등록한 채널은 centerData에서 알아서 완료되면 처리한다. centerData.IncreaseUsedChannelCount(_enterOrder); }
Boolean EnterNewPosition(EDoorCenterData centerData, EDoorEachMonitorEnterData eachData, double reqPrice, long reqCount, RawMarketData rmdElw, RawMarketData rmdOption_0) { try { // 1. LiveOrder가 없는 상태인 것을 다시한번 확인한다. Trace.Assert(eachData.LiveOrder == null); Trace.Assert(eachData.CurEDoorOrderState == EDoorEachMonitorEnterData.EDoorOrderState.Idle); String elwCode = eachData.EI.Code; Account account = centerData.ElwAccount; POrder order = new POrder(TradingDirection.Long, elwCode, reqCount, reqPrice, account, rmdElw); // 2. 주문을 넣는다. OrderLimitReferenceOOR limitReference = new OrderLimitReferenceOOR( OrderLimitReferenceOOR.OrderType.OOR, rmdOption_0); order.LimitOrderReference = limitReference; order.ShortCutTargetOfContractCallBack = _parent; POrderUtil.RequestOrder(order, null); // 3. eachData의 LiveOrder를 설정한다. eachData.RequestOrderComplete(order); // 4. centerData의 사용 수량을 늘린다. centerData.IncreaseUsedChannelCount(order); return true; } catch (System.Exception ex) { logger.Error(ex.ToString()); Util.KillWithNotice(ex.ToString()); } return false; }