Esempio n. 1
0
        public override void request(OneDay oneDay)
        {
            TickDatabase db    = new TickDatabase();
            TickQuery    query = new TickQuery();
            TickReal     real  = new TickReal();

            switch (whatNeeded())
            {
            case Need.Past:
                break;

            case Need.PastAndFuture:
                Tick lastTick = null;
                var  filter   = new ActionBlock <Tick>(async tick =>
                {
                    if (lastTick == null || lastTick.Time < tick.Time || (lastTick.Time == tick.Time && lastTick.Volume < tick.Volume))
                    {
                        //
                        Buffer.Post(tick);
                        await Buffer.SendAsync(tick);
                    }
                    lastTick = tick;
                });
                db.Target = filter;
                db.Completion.ContinueWith(a =>
                {
                    query.Target = filter;
                    query.Completion.ContinueWith(b =>
                    {
                        real.Target = filter;
                    });
                });
                var since = new Since {
                    Stock = oneDay.Stock, After = RecentRecord.getTime(oneDay.Stock), Base = oneDay.Date
                };
                real.request(oneDay);
                query.request(since);
                db.request(oneDay);
                break;

            case Need.Future:
                // Real의 결과를 target으로 넣는다.
                real.request(oneDay);
                break;
            }
        }
Esempio n. 2
0
 public TickFeed(RecentRecord <Tick> recentRecord)
 {
     RecentRecord = recentRecord;
 }