private void Remove(object obj) { var model = obj as QuotationModel; QuotationCenter.UnSubscribe(model.InstrumentID, this); this.Quotations.Remove(model); }
public CandleChartViewModel(string instrumentID) { this.Title = instrumentID; this.instrumentID = instrumentID; double priceTick = InstrumentListViewModel.Instance.Instruments.First(p => p.InstrumentID == instrumentID).PriceTick; this.Precision = GetPrecision(priceTick); this.GetCandles(); QuotationCenter.Subscribe(instrumentID, this); }
private async void Init() { await DALUtil.Init(); InstrumentListViewModel.Instance.Instruments = await Task.Run(() => { return(InstrumentDAL.Get()); }); await Task.Run(() => { QuotationCenter.Init(); }); QuotationListViewModel.Instance.Init(); TradeAdapter.Instance.Start(); this.IsBusy = false; }
private QuotationModel AddInstrument(string instrumentID) { Quotation quotation = QuotationCenter.GetQuotation(instrumentID); QuotationModel quotationModel; if (quotation == null) { quotationModel = new QuotationModel(instrumentID); } else { quotationModel = new QuotationModel(quotation); } this.Quotations.Add(quotationModel); QuotationCenter.Subscribe(instrumentID, this); return(quotationModel); }
public void PublishQuotation() { while (true) { if (marketDataFieldQueue.Count == 0) { Thread.Sleep(1); continue; } this.lastQuotationTime = DateTime.Now; ThostFtdcDepthMarketDataField field = marketDataFieldQueue.Dequeue(); if (field.LastPrice == 0) { Debug.WriteLine("Filter data with no price: " + field.InstrumentID); continue; } field.TradingDay = this.GetTradingDay(); if (field.ActionDay == string.Empty) { var today = DateTime.Today; var builder = new StringBuilder(today.Year.ToString()); if (today.Month < 10) { builder.Append(0); } builder.Append(today.Month); if (today.Day < 10) { builder.Append(0); } builder.Append(today.Day); field.ActionDay = builder.ToString(); } QuotationCenter.ProcessMarketDataField(field); } }
private void DoClose() { QuotationCenter.UnSubscribe(this.instrumentID, this); ChartsViewModel.Instance.Documents.Remove(this); }