private async void DoScan() { var settings = SettingsStore.Load(); SetStatusText($"initializing {settings.Exchange} with 24hr volume of {settings.Min24HrVolume} ..."); _scanner = new Scanner(settings); while (_running) { int idx = 0; foreach (var symbol in _scanner.Symbols) { idx++; SetStatusText($"scanning {symbol} ({idx}/{_scanner.Symbols.Count})..."); var signal = await _scanner.ScanAsync(symbol); if (signal != null) { await Dispatcher.UIThread.InvokeAsync(() => { Signals.Insert(0, signal); }); } } SetStatusText($"sleeping..."); Thread.Sleep(5000); } }
private async Task ScanSymbols(string[] orderedTimeframes, Settings settings) { foreach (string timeframe in orderedTimeframes) { int idx = 0; foreach (var symbol in _scanner.Symbols) { idx++; int minutes = Scanner.TimeframeToMinutes(timeframe); SetStatusText($"{settings.Exchange} scanning {symbol.Symbol.MarketSymbol} ({idx}/{_scanner.Symbols.Count}) on {timeframe}..."); var signal = await _scanner.ScanAsync(symbol, minutes); if (!_running) { return; } if (signal != null) { await Dispatcher.BeginInvoke((Action)(() => { Signals.Insert(0, new SignalView(signal)); })); } if (!_running) { break; } } if (!_running) { break; } } }