Esempio n. 1
0
        public PassiveSweepState(POrder o, EDoorCenterData centerData)
        {
            _enterOrder = o;
            _enterOrder.ShortCutTargetOfContractCallBack = this;

            // 주문을 취소한다.
            _enterOrder.CancelRemains();

            // 채널을 하나 사용한다.
            // 여기서 등록한 채널은 centerData에서 알아서 완료되면 처리한다.
            centerData.IncreaseUsedChannelCount(_enterOrder);
        }
Esempio n. 2
0
        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;
        }