public void SetPrimitiveQuotation(PrimitiveQuotation quotation) { VmInstrument vmInstrument = this._Instruments.SingleOrDefault(i => i.Id == quotation.InstrumentId); if (vmInstrument != null) { VmInstrumentSourceRelation relation = vmInstrument.SourceRelations.SingleOrDefault(r => r.SourceId == quotation.SourceId); if (relation != null) { if (relation.SetSourceQuotation(new VmSourceQuotation(quotation))) { for (int i = 0; i < vmInstrument.SourceRelations.Count; i++) { VmInstrumentSourceRelation relation2 = vmInstrument.SourceRelations[i]; if (!object.ReferenceEquals(relation2, relation)) { relation2.SetSourceQuotation(new VmSourceQuotation(new PrimitiveQuotation() { Timestamp = quotation.Timestamp })); } } } } } }
public static bool EnsureIsKnownQuotation(this ConfigMetadata metaData, PrimitiveQuotation quotation, out bool inverted) { inverted = false; QuotationSource quotationSource; if (metaData.QuotationSources.TryGetValue(quotation.SourceName, out quotationSource)) { quotation.SourceId = quotationSource.Id; Dictionary<string, InstrumentSourceRelation> relations; if (metaData.InstrumentSourceRelations.TryGetValue(quotationSource.Id, out relations)) { InstrumentSourceRelation relation; if (relations.TryGetValue(quotation.Symbol, out relation)) { quotation.InstrumentId = relation.InstrumentId; inverted = relation.Inverted; return true; } } } return false; }
public bool TryGetLastQuotation(int sourceId, int instrumentId, out PrimitiveQuotation primitiveQuotation) { primitiveQuotation = null; if (this._LastReceivedQuotations.ContainsKey(sourceId)) { if (this._LastReceivedQuotations[sourceId].ContainsKey(instrumentId)) { primitiveQuotation = this._LastReceivedQuotations[sourceId][instrumentId].PrimitiveQuotation; } } return primitiveQuotation != null; }
public bool IsNotSame(PrimitiveQuotation quotation) { PrimitiveQuotation last; if (this.TryGetLastQuotation(quotation.SourceId, quotation.InstrumentId, out last)) { return quotation.Timestamp != last.Timestamp || quotation.Bid != last.Bid || quotation.Ask != last.Ask || quotation.Last != last.Last || quotation.High != last.High || quotation.Low != last.Low; } return true; }
public bool Fix(PrimitiveQuotation primitiveQuotation, out double ask, out double bid) { bool @fixed = false; bool fixAsk = !PrimitiveQuotation.TryGetPriceValue(primitiveQuotation.Ask, out ask); bool fixBid = !PrimitiveQuotation.TryGetPriceValue(primitiveQuotation.Bid, out bid); if (fixAsk || fixBid) { PrimitiveQuotation last; if (this.TryGetLastQuotation(primitiveQuotation.SourceId, primitiveQuotation.InstrumentId, out last)) { if (fixAsk) { primitiveQuotation.Ask = last.Ask; ask = double.Parse(primitiveQuotation.Ask); } if (fixBid) { primitiveQuotation.Bid = last.Bid; bid = double.Parse(primitiveQuotation.Bid); } @fixed = true; } } return !fixAsk && !fixBid || @fixed; }