14:32:55 ET - [SignalsBoard] distinct types=5 ms=0
14:32:55 ET - [SignalsBoard] latest-per-symbol fetched rows=8 db_ms=11
14:32:55 ET - [SignalsBoard SQL] latest-per-symbol:
SELECT [t].[Id], [t].[CreatedAt], [t].[Direction], [t].[EntryPrice], [t].[ExitPrice], [t].[ExitResult], [t].[ExitTime], [t].[Notes], [t].[SignalType], [t].[StopLoss], [t].[Symbol], [t].[TargetPct], [t].[TargetPrice], [t].[TriggerPrice], [t].[TriggerTime], [t].[ValidationCheckedAt], [t].[ValidationExecutedAt], [t].[ValidationExecutedPrice], [t].[ValidationProfitAmount], [t].[ValidationProfitPct], [t].[ValidationResult]
FROM [dbo].[TradeSignals] AS [t]
INNER JOIN (
SELECT [t0].[Symbol], MAX([t0].[TriggerTime]) AS [MaxT]
FROM [dbo].[TradeSignals] AS [t0]
WHERE [t0].[Symbol] <> N'' AND [t0].[Direction] <> N'NEUTRAL'
GROUP BY [t0].[Symbol]
) AS [t1] ON [t].[Symbol] = [t1].[Symbol] AND [t].[TriggerTime] = [t1].[MaxT]
ORDER BY [t].[TriggerTime] DESC
14:32:55 ET - [SignalsBoard] reload start latestPerSymbol=True searchLen=0 dir='' type=''
14:32:55 ET - [SignalsBoard] OnInitializedAsync start
14:32:55 ET - [SchwabMarketDataService.Ctor] _HistoryOffsetHrs= -1
14:32:55 ET - [Ctor] QuotesUrl=https://api.schwabapi.com/marketdata/v1/quotes (All timestamps in America/New_York)
14:32:55 ET - [SignalService.Ctor] ready (All timestamps stored/retrieved/logged in America/New_York)
14:32:51 ET - [RefreshTokenAsync] ERROR: Token refresh failed with status BadRequest
14:32:51 ET - [RefreshTokenAsync] Response body: ���Ak�@���0g���ͥ�J7��D7��uwM�!��b�4�1�����xsF�Zj���UJjKybeE"�_�����L���\�~t]�VԴd���d�1|�2|��&H[[��<K-h�k2%�N�Oċ�Տjqj�N�O��&>�~��7S��j�uA�\�b�=F�����ǟ��'���W+��v�i�o�LO��$va��or��l
14:32:51 ET - [RefreshTokenAsync] Response status: 400 BadRequest
14:32:51 ET - [RefreshTokenAsync] Request Headers: Authorization=Basic ejVwVzFGSzVwcUF6OFFabVRXNktLcmVxUWtFeWxRaUs6WFRNRDN4enFqYkdVNGN3Sw==
14:32:51 ET - [RefreshTokenAsync] POST Body: grant_type=refresh_token&refresh_token=EDm4FiTFJt_IHhNyl9vr123XCdJtvV0kZnlKq2lM3mJ106S8XDE6fE7-hVdKn1itFwUckaAvxkwbY4w_LbJ1-uprb9yXOPJX1_nIKvUzuJHDfeVxJIw44dyGMCi72CYzzeOakoA1CNg%40
14:32:51 ET - [GetAccessTokenAsync] refreshing token (expires 2025-10-10T12:56:58.5336035) (code 100)
14:30:28 ET - [Signals.Dispose] cancel CTS
14:30:28 ET - [Signals.OnInitializedAsync] end
14:30:28 ET - [LoadGrid] end elapsedMs=301
14:30:27 ET - [LoadGrid] rows=0
14:30:27 ET - [LoadGrid] filter window [2026-02-23T00:00:00.0000000, 2026-02-24T00:00:00.0000000)
14:30:27 ET - [LoadGrid] start Symbol= TradingDayLocal=2026-02-23
14:30:27 ET - [LoadAvailableSymbols] end elapsedMs=566
14:30:27 ET - [LoadAvailableSymbols] topMovers=0 tradeSymbols=12 merged=12
14:30:27 ET - [LoadAvailableSymbols] start
14:30:27 ET - [Signals.OnInitializedAsync] start
14:30:27 ET - [SchwabMarketDataService.Ctor] _HistoryOffsetHrs= -1
14:30:27 ET - [Ctor] QuotesUrl=https://api.schwabapi.com/marketdata/v1/quotes (All timestamps in America/New_York)
14:30:27 ET - [SignalService.Ctor] ready (All timestamps stored/retrieved/logged in America/New_York)
14:30:03 ET - [Quotes] Error loading movers: Invalid attempt to call ReadAsync when reader is closed.
14:30:03 ET - [Quotes] Loading top movers...
14:30:03 ET - [GetTopSymbolsAsync] Retrieved top 10: crcl,hood,intc,MS,MSFT,open,pfe,RAY,rcat,amcr
14:30:03 ET - [Quotes] Error loading movers: A second operation was started on this context instance before a previous operation completed. This is usually caused by different threads concurrently using the same instance of DbContext. For more information on how to avoid threading issues with DbContext, see https://go.microsoft.com/fwlink/?linkid=2097913.