Пример #1
0
        /// <summary>
        /// </summary>
        /// <param name="interval">Interval to sync with public quote server</param>
        /// <param name="tushare"></param>
        public RealtimeQuotesManager(TimeSpan interval, TushareManager tushare)
        {
            Tushare = tushare;
            void Elapsed(object sender, ElapsedEventArgs e)
            {
                if (TradeOff)
                {
                    Synchronizer.Stop();
                }
                if (!_lastElapsedFinished)
                {
                    return;
                }
                var tasks = new List <Task>(Quotes.Count);

                foreach (var stock in Quotes)
                {
                    string id = stock.Key;
                    var(playBack, recent) = stock.Value;
                    tasks.Add(
                        GetRealTimeQuote(id)
                        .ContinueWith(
                            task => {
                        var result = task.Result;
                        if (result.Count > 0 &&
                            result[0]
                            .TradingTime >
                            playBack[^ 1]
                            .TradingTime)
                        {
                            playBack.AddRange(result);
                        }
                        recent.Clear();
                    }
                            )
                        );
                }
                _lastElapsedFinished = false;
                Task.WhenAll(tasks)
                .ContinueWith(
                    _ => _lastElapsedFinished = true
                    );
            }

            Synchronizer = new Timer(interval.TotalMilliseconds)
            {
                Immediate = true
            };
            Synchronizer.Elapsed += Elapsed;
        }
 public void Setup()
 {
     TuShare = new TushareManager("ecffe13bdfb4ccb617b344f276b4827d3614e0a736a5fe7c0c6767ce");
 }
Пример #3
0
 /// <summary>
 ///     Default interval is 1 minutes
 /// </summary>
 public RealtimeQuotesManager(TushareManager tushare) : this(TimeSpan.FromMinutes(1), tushare)
 {
 }
Пример #4
0
 /// <summary>
 /// </summary>
 /// <param name="baoStock"></param>
 /// <param name="tushare"></param>
 public StockApiController(BaoStockManager baoStock, TushareManager tushare)
 {
     BaoStock = baoStock;
     Tushare  = tushare;
 }