Ejemplo n.º 1
0
        public async Task <SelectedSymbolsChanges> UpdateAsync(TimeSlice slice)
        {
            if (NextSwapTime < Algo.Market.Time)
            {
                NextSwapTime = Algo.Market.Time + UpdatePeriod;

                var filtered = OnUpdate(slice);

                var removedSymbols =
                    (from sym in _SymbolsSelected.Values where !filtered.Any(s => s.Key == sym.Key) select sym)
                    .ToArray();
                var added = (from sym in filtered where !_SymbolsSelected.ContainsKey(sym.Key) select sym).ToArray();

                //remove unused symbols
                foreach (var sym in removedSymbols)
                {
                    _SymbolsSelected.Remove(sym.Key);
                }

                //add new symbols
                foreach (var sym in added)
                {
                    ISymbolFeed feed = await Algo.GetSymbolFeed(sym.Key);

                    _SymbolsSelected.Add(feed.Symbol.Key, feed.Symbol as SymbolInfo);
                }
                var retVal = new SelectedSymbolsChanges(added.ToArray(), removedSymbols.ToArray());
                return(retVal);
            }

            return(SelectedSymbolsChanges.None);
        }
Ejemplo n.º 2
0
 public virtual void OnSymbolsChanged(SelectedSymbolsChanges changes)
 {
 }
Ejemplo n.º 3
0
 public override void OnSymbolsChanged(SelectedSymbolsChanges changes)
 {
 }
Ejemplo n.º 4
0
 public abstract Task OnSymbolsChanged(SelectedSymbolsChanges changes);