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); }
public virtual void OnSymbolsChanged(SelectedSymbolsChanges changes) { }
public override void OnSymbolsChanged(SelectedSymbolsChanges changes) { }
public abstract Task OnSymbolsChanged(SelectedSymbolsChanges changes);