Esempio n. 1
0
        void TakeOverBondArbYesterdayPosition(String path)
        {
            // 포지션 승계는 한번만 해야 되고 포지션 저장을 한 뒤에는 못한다.
            // 포지션 저장을 먼저 한 뒤에 승계를 해버리면 중복해서 매도 주문이 나갈 가능성이 생기는 데, 이건 큰 문제이다.
            if (_bTakeOverBondArbYesterdayPosition)
            {
                logger.Warn("You already TakeOverBondArbYesterdayPosition");
                return;
            }
            _bTakeOverBondArbYesterdayPosition = true;

            if (_bSaveBondArbPosition)
            {
                logger.Warn("You already SaveBondArbPosition. If you continue this process, remain position data will be broken, so I jump out this process for safety...");
                return;
            }

            // file에서 값을 읽어온다.
            RemainBondArbPositionDataManager.Ins().ReloadData(path);
            List<RemainPositionDatum> data = RemainBondArbPositionDataManager.Ins().GetData();

            foreach (RemainPositionDatum datum in data)
            {
                RmdManager.Ins().BondSpot.Register(datum.EnterCodeWithMarketType);
                RmdManager.Ins().BondSpot.Register(datum.PairCodeWithMarketType);

                RawMarketData rmdEnter = RmdManager.Ins().BondSpot.GetDataClone(datum.EnterCodeWithMarketType);

                POrder o = new POrder(
                    TradingDirection.Long,
                    datum.EnterCodeWithMarketType,
                    datum.CurTargetCount,
                    datum.EnterPrice,
                    this.BondAccount,
                    rmdEnter,
                    BondUtil.GetMarketType(datum.EnterCodeWithMarketType),
                    false);

                this.BondAccount.RegisterAsAllContract(o);

                Sweeper_BondArb sweeper = new Sweeper_BondArb();
                sweeper.SetAsSweeperMode(this.BondAccount, datum);
                this._bondArbNode.GetSweeperCollection().Add(sweeper);
            }
        }