Пример #1
0
        /// <summary>
        /// CTP InvestorPositionField To USePositionDetail,
        /// (注 :此方法只是针对有昨日持仓的持仓信息来构造USePositionDetail。
        /// </summary>
        /// <param name="field"></param>
        /// <returns></returns>
        private USePositionDetail CtpInvestorPositonFieldToUSePositionDetail(InvestorPositionField field)
        {
            if (field.YdPosition <= 0)
            {
                return(null);                       // 只能生成历史持仓
            }
            USePositionDetail positionDetail = new USePositionDetail();

            positionDetail.Instrument = m_dataBuffer.GetInstrumnetByCode(field.InstrumentID.Trim());
            switch (field.PosiDirection)
            {
            case PosiDirectionType.Long: positionDetail.Direction = USeDirection.Long; break;

            case PosiDirectionType.Short: positionDetail.Direction = USeDirection.Short; break;

            default:
                Debug.Assert(false, "Invalid PosiDirection");
                break;
            }
            positionDetail.PositionType = USePositionType.Yestorday;
            positionDetail.OpenQty      = field.YdPosition;
            positionDetail.OpenPrice    = Convert.ToDecimal(field.PreSettlementPrice); // 昨仓取昨日结算价为建仓价
            positionDetail.OpenTime     = DateTime.Today.AddDays(-1);                  // 建仓时间设为昨日日期
            positionDetail.CloseQty     = 0;
            positionDetail.ClosePrice   = 0m;
            positionDetail.CloseAmount  = 0m;
            return(positionDetail);
        }
 public void Update(USePositionDetail entity)
 {
     this.ID           = entity.ID;
     this.Instrument   = entity.Instrument;
     this.Direction    = entity.Direction;
     this.PositionType = entity.PositionType;
     this.OpenQty      = entity.OpenQty;
     this.OpenPrice    = entity.OpenPrice;
     this.OpenTime     = entity.OpenTime;
     this.CloseQty     = entity.CloseQty;
     this.RemainQty    = entity.RemainQty;
     this.CloseAmount  = entity.CloseAmount;
     this.ClosePrice   = entity.ClosePrice;
 }
Пример #3
0
        private void UpdatePositionDetailBook(USePositionDetail positionDetail)
        {
            PositionDetailDataViewModel PositionDetail_Model = m_positionDetail_data_source.FirstOrDefault(p => (p.InstrumentCode == positionDetail.Instrument.InstrumentCode) && (p.Direction == positionDetail.Direction));

            if (PositionDetail_Model != null)
            {
                m_positionDetail_data_source.Remove(PositionDetail_Model);
            }
            else
            {
                PositionDetailDataViewModel positionDetail_model = PositionDetailDataViewModel.Creat(positionDetail);
                m_positionDetail_data_source.Add(positionDetail_model);
            }
        }
        public static PositionDetailDataViewModel Creat(USePositionDetail entity)
        {
            PositionDetailDataViewModel data_model = new PositionDetailDataViewModel();

            data_model.ID           = entity.ID;
            data_model.Instrument   = entity.Instrument;
            data_model.Direction    = entity.Direction;
            data_model.PositionType = entity.PositionType;
            data_model.OpenQty      = entity.OpenQty;
            data_model.OpenPrice    = entity.OpenPrice;
            data_model.OpenTime     = entity.OpenTime;
            data_model.CloseQty     = entity.CloseQty;
            data_model.RemainQty    = entity.RemainQty;
            data_model.CloseAmount  = entity.CloseAmount;
            data_model.ClosePrice   = entity.ClosePrice;
            data_model.CloseQty     = entity.CloseQty;

            return(data_model);
        }