public OverridedQuotation(Instrument instrument, QuotePolicyDetail quotePolicy, DataRow overridedQuotation)
        {
            this.modifyState = ModifyState.Unchanged;

            this.quotePolicy = quotePolicy;
            this.instrument = instrument;
            this.timestamp = (DateTime)overridedQuotation["Timestamp"];
            if (overridedQuotation["Origin"] != DBNull.Value)
            {
                this.origin = Price.CreateInstance((string)overridedQuotation["Origin"], instrument.NumeratorUnit, instrument.Denominator);
            }
            if (overridedQuotation["Ask"] != DBNull.Value)
            {
                this.ask = Price.CreateInstance((string)overridedQuotation["Ask"], instrument.NumeratorUnit, instrument.Denominator);
            }
            if (overridedQuotation["Bid"] != DBNull.Value)
            {
                this.bid = Price.CreateInstance((string)overridedQuotation["Bid"], instrument.NumeratorUnit, instrument.Denominator);
            }
            if (overridedQuotation["High"] != DBNull.Value)
            {
                this.high = Price.CreateInstance((string)overridedQuotation["High"], instrument.NumeratorUnit, instrument.Denominator);
            }
            if (overridedQuotation["Low"] != DBNull.Value)
            {
                this.low = Price.CreateInstance((string)overridedQuotation["Low"], instrument.NumeratorUnit, instrument.Denominator);
            }

            this.dealerID = (Guid)overridedQuotation["DealerID"];

            if (overridedQuotation.Table.Columns.Contains("Volume") && overridedQuotation["Volume"] != DBNull.Value)
            {
                this.volume = (string)overridedQuotation["Volume"];
            }
            if (overridedQuotation.Table.Columns.Contains("TotalVolume") && overridedQuotation["TotalVolume"] != DBNull.Value)
            {
                this.totalVolume = (string)overridedQuotation["TotalVolume"];
            }
        }
示例#2
0
        public void Dispose()
        {
            QuotePolicyDetail[] quotePolicys = new QuotePolicyDetail[this.quotePolicyDetails.Count];
            this.quotePolicyDetails.CopyTo(quotePolicys);

            //Remove all cross references
            foreach (QuotePolicyDetail quotePolicy in quotePolicys)
            {
                quotePolicy.Dispose();
            }
        }
        //Changed for emperor 2004-12-22
        public OverridedQuotation(Instrument instrument, QuotePolicyDetail quotePolicy, OriginQuotation originQuotation)
        {
            this.modifyState = ModifyState.Added;

            this.quotePolicy = quotePolicy;
            this.instrument = instrument;
            if (instrument.ExchangeSystem == ExchangeSystem.Bursa && originQuotation != null)
            {
                this.timestamp = originQuotation.Timestamp;
            }
            else
            {
                this.timestamp = DateTime.Now;
            }
            this.origin = instrument.LastOrigin;
            this.volume = instrument.LastVolume;
            this.totalVolume = instrument.LastTotalVolume;

            //this.dealerID=instrument.DealerID;
            this.dealerID = (originQuotation == null ? instrument.LastOfferDealerID : Guid.Empty);

            //Changed for emperor 2004-12-22
            if (quotePolicy.PriceType == PriceType.OriginEnable)
            {
                if (originQuotation != null) //Dealer not changed
                {
                    Price bidBase = originQuotation.Bid;
                    Price askBase = originQuotation.Ask;

                    if (instrument.OriginQProcessed != null)
                    {
                        if (bidBase == null) bidBase = instrument.OriginQProcessed.Bid;
                        if (askBase == null) askBase = instrument.OriginQProcessed.Ask;
                    }

                    if (bidBase == null)
                    {
                        bidBase = askBase;
                    }
                    else if (askBase == null)
                    {
                        askBase = bidBase;
                    }
                    else if (askBase < bidBase)
                    {
                        askBase = bidBase;
                    }

                    this.bid = bidBase + quotePolicy.AutoAdjustPoints;
                    this.ask = askBase + quotePolicy.AutoAdjustPoints;

                    this.volume = originQuotation.Volume;
                    this.totalVolume = originQuotation.TotalVolume;
                }
                else //Dealer changed
                {
                    this.bid = this.origin + quotePolicy.AutoAdjustPoints;
                    try
                    {
                        this.ask = this.bid + Math.Abs(instrument.OriginQProcessed.Ask - instrument.OriginQProcessed.Bid);
                    }
                    catch (Exception ex)
                    {
                        Manager.Common.Logger.TraceEvent(System.Diagnostics.TraceEventType.Error, "OverridedQuotation.OverridedQuotation Error\r\n{0}", ex.ToString());
                        this.ask = this.bid;
                    }
                }
                this.bid = this.bid - quotePolicy.SpreadPoints;
                this.ask = this.ask + quotePolicy.SpreadPoints;
            }
            else
            {
                this.bid = this.origin + quotePolicy.AutoAdjustPoints;
                this.ask = this.bid + quotePolicy.SpreadPoints;
            }
        }
 public OverridedQuotation(Instrument instrument, QuotePolicyDetail quotePolicy)
     : this(instrument, quotePolicy, (OriginQuotation)null)
 {
 }
        public static OverridedQuotation CreateHistoryQuotation(Guid dealerID, Instrument instrument, QuotePolicyDetail quotePolicy, string timestamp, string origin, bool needApplyAutoAdjustPoints, bool highBid, bool lowBid)
        {
            OverridedQuotation overridedQuotation = new OverridedQuotation();
            overridedQuotation.modifyState = ModifyState.Added;

            overridedQuotation.quotePolicy = quotePolicy;
            overridedQuotation.instrument = instrument;
            overridedQuotation.timestamp = DateTime.Parse(timestamp);
            overridedQuotation.origin = Price.CreateInstance(origin, instrument.NumeratorUnit, instrument.Denominator);

            overridedQuotation.dealerID = dealerID;

            overridedQuotation.bid = needApplyAutoAdjustPoints ? overridedQuotation.origin + quotePolicy.AutoAdjustPoints : overridedQuotation.origin;
            overridedQuotation.ask = overridedQuotation.bid + quotePolicy.SpreadPoints;

            overridedQuotation.CalculateHiLo(highBid, lowBid);

            //overridedQuotation.high = highBid ? overridedQuotation.bid : overridedQuotation.ask;
            //overridedQuotation.low = lowBid ? overridedQuotation.bid : overridedQuotation.ask;

            return overridedQuotation;
        }