Ejemplo n.º 1
0
        private void HandleQuoteItem(object sender, MessageData item)
        {
            var data = JsonSerializer.Deserialize <Quote>(item.Data);

            Debug.WriteLine(JsonSerializer.ToJsonString(data));
            QuoteEvent?.Invoke(sender, data);
        }
Ejemplo n.º 2
0
		private void AsyncMergeTick() {
			bool bBusy = false;
			lock (__oLock) {
				bBusy = __bBusy;
				if (!bBusy) {
					__bBusy = true;
				}
			}

			if (!bBusy) {
				Task.Factory.StartNew(() => {
					while (__cQueue.Count > 0) {
						QuoteEvent cQuoteEvent = null;
						lock (__cQueue) {
							cQuoteEvent = __cQueue.Dequeue();
						}

						SeriesStorage cStorage = null;
						string sLSymbolId = cQuoteEvent.Quote.SymbolId.ToLower();
						lock (__cStorages) {
							__cStorages.TryGetValue(sLSymbolId, out cStorage);
						}

						if (cStorage != null) {
							cStorage.MergeTick(cQuoteEvent.Tick);
						}
					}

					lock (__oLock) {
						__bBusy = false;
					}
				});
			}
		}
Ejemplo n.º 3
0
 private void QuoteService_onQuote(object sender, QuoteEvent e)
 {
     if (__sSymbolId.Equals(e.Quote.SymbolId))
     {
         __cTimer.Start();
     }
 }
Ejemplo n.º 4
0
        private void Timer_onElapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            bool bBusy = false;

            lock (__oLock) {
                bBusy = __bBusy;
                if (!bBusy)
                {
                    __bBusy = true;
                }
            }

            if (!bBusy)
            {
                if (__cQueue.Count > 0)
                {
                    QuoteEvent cQuoteEvent = null;
                    while (__cQueue.Count > 0)
                    {
                        lock (__cQueue) {
                            cQuoteEvent = __cQueue.Dequeue();
                        }

                        QuoteUpdate(cQuoteEvent.ExchangeName, cQuoteEvent.DataSource, cQuoteEvent.Quote);                          //更新報價
                    }

                    RefreshGrid();
                }

                lock (__oLock) {
                    __bBusy = false;
                }
            }
        }
Ejemplo n.º 5
0
 private void QuoteService_onQuote(object sender, QuoteEvent e)
 {
     lock (__cQueue) {
         __cQueue.Enqueue(e);
     }
     __cTimer.Start();
 }
Ejemplo n.º 6
0
		private void QuoteService_onQuote(object sender, QuoteEvent e) {
			string sSymbolId = this.Bars.Request.Symbol;
			if (sSymbolId.Equals(e.Quote.SymbolId)) {
				Interlocked.Increment(ref __iTickCount);

				if (!__bBusy) {
					AsyncCalculate();
				}
			}
		}
Ejemplo n.º 7
0
        /// <summary>
        ///   發送即時成交Tick的通知
        /// </summary>
        /// <param name="e">QuoteEvent類別</param>
        protected void OnQuote(QuoteEvent e)
        {
            ++__lPacketCount;

            if (onQuote != null)
            {
                Task.Factory.StartNew(() => {
                    onQuote(this, e);
                });
            }
        }
Ejemplo n.º 8
0
        private void HandleQuoteItem(object sender, MessageData item)
        {
            var data = JsonSerializer.Deserialize <Quote>(item.Data);

            QuoteEvent?.Invoke(sender, data);
        }
Ejemplo n.º 9
0
		private void QuoteService_onQuote(object sender, QuoteEvent e) {
			lock (__cQueue) {
				__cQueue.Enqueue(e);
			}
			AsyncMergeTick();
		}