02:16:25 ET - [SignalsBoard] distinct types=5 ms=5
02:16:25 ET - [SignalsBoard] latest-per-symbol fetched rows=8 db_ms=56
02:16:25 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
02:16:25 ET - [SignalsBoard] reload start latestPerSymbol=True searchLen=0 dir='' type=''
02:16:25 ET - [SignalsBoard] OnInitializedAsync start
02:16:25 ET - [SchwabMarketDataService.Ctor] _HistoryOffsetHrs= -1
02:16:25 ET - [Ctor] QuotesUrl=https://api.schwabapi.com/marketdata/v1/quotes (All timestamps in America/New_York)
02:16:25 ET - [SignalService.Ctor] ready (All timestamps stored/retrieved/logged in America/New_York)
02:14:46 ET - [RefreshTokenAsync] ERROR: Token refresh failed with status BadRequest
02:14:46 ET - [RefreshTokenAsync] Response body: �e�1�0��X�;t`��:[�"l�%�q*PջS�n��{��bV��z��\8zyH�����D�v1��%o�4�pN���4@�п$��\M��(h�sz* �&��d�f&��~=d�Y�N����!֫�
02:14:46 ET - [RefreshTokenAsync] Response status: 400 BadRequest
02:14:45 ET - [RefreshTokenAsync] Request Headers: Authorization=Basic ejVwVzFGSzVwcUF6OFFabVRXNktLcmVxUWtFeWxRaUs6WFRNRDN4enFqYkdVNGN3Sw==
02:14:45 ET - [RefreshTokenAsync] POST Body: grant_type=refresh_token&refresh_token=EDm4FiTFJt_IHhNyl9vr123XCdJtvV0kZnlKq2lM3mJ106S8XDE6fE7-hVdKn1itFwUckaAvxkwbY4w_LbJ1-uprb9yXOPJX1_nIKvUzuJHDfeVxJIw44dyGMCi72CYzzeOakoA1CNg%40
02:14:45 ET - [GetAccessTokenAsync] refreshing token (expires 2025-10-10T12:56:58.5336035) (code 100)
02:09:45 ET - [RefreshTokenAsync] ERROR: Token refresh failed with status BadRequest
02:09:45 ET - [RefreshTokenAsync] Response body: �e�1�0��X�;t`��:[�"l�%�q*PջS�n��{��bV��z��\8zyH�����D�v1��%o�4�pN���4@�п$��\M��(h�sz* �&��d�f&��~=d�Y�N����!֫�
02:09:45 ET - [RefreshTokenAsync] Response status: 400 BadRequest
02:09:45 ET - [RefreshTokenAsync] Request Headers: Authorization=Basic ejVwVzFGSzVwcUF6OFFabVRXNktLcmVxUWtFeWxRaUs6WFRNRDN4enFqYkdVNGN3Sw==
02:09:45 ET - [RefreshTokenAsync] POST Body: grant_type=refresh_token&refresh_token=EDm4FiTFJt_IHhNyl9vr123XCdJtvV0kZnlKq2lM3mJ106S8XDE6fE7-hVdKn1itFwUckaAvxkwbY4w_LbJ1-uprb9yXOPJX1_nIKvUzuJHDfeVxJIw44dyGMCi72CYzzeOakoA1CNg%40
02:09:45 ET - [GetAccessTokenAsync] refreshing token (expires 2025-10-10T12:56:58.5336035) (code 100)
02:04:45 ET - [RefreshTokenAsync] ERROR: Token refresh failed with status BadRequest
02:04:45 ET - [RefreshTokenAsync] Response body: �e�1�0��X�;t`��:[�"l�%�q*PջS�n��{��bV��z��\8zyH�����D�v1��%o�4�pN���4@�п$��\M��(h�sz* �&��d�f&��~=d�Y�N����!֫�
02:04:45 ET - [RefreshTokenAsync] Response status: 400 BadRequest
02:04:44 ET - [RefreshTokenAsync] Request Headers: Authorization=Basic ejVwVzFGSzVwcUF6OFFabVRXNktLcmVxUWtFeWxRaUs6WFRNRDN4enFqYkdVNGN3Sw==
02:04:44 ET - [RefreshTokenAsync] POST Body: grant_type=refresh_token&refresh_token=EDm4FiTFJt_IHhNyl9vr123XCdJtvV0kZnlKq2lM3mJ106S8XDE6fE7-hVdKn1itFwUckaAvxkwbY4w_LbJ1-uprb9yXOPJX1_nIKvUzuJHDfeVxJIw44dyGMCi72CYzzeOakoA1CNg%40
02:04:44 ET - [GetAccessTokenAsync] refreshing token (expires 2025-10-10T12:56:58.5336035) (code 100)
02:01:46 ET - [Signals.Dispose] cancel CTS
02:01:46 ET - [Signals.OnInitializedAsync] end
02:01:46 ET - [LoadGrid] end elapsedMs=340
02:01:45 ET - [LoadGrid] rows=0
02:01:45 ET - [SignalsBoard] OnInitializedAsync done
02:01:45 ET - [SignalsBoard] reload end
02:01:45 ET - [SignalsBoard] load ok total=8 filtered=8 wall_ms=133 sw_ms=132
02:01:45 ET - [SignalsBoard] distinct types=5 ms=7
02:01:45 ET - [SignalsBoard] latest-per-symbol fetched rows=8 db_ms=99
02:01:45 ET - [LoadGrid] filter window [2026-10-09T00:00:00.0000000, 2026-10-10T00:00:00.0000000)
02:01:45 ET - [LoadGrid] start Symbol= TradingDayLocal=2026-10-09
02:01:45 ET - [LoadAvailableSymbols] end elapsedMs=722
02:01:45 ET - [LoadAvailableSymbols] topMovers=0 tradeSymbols=12 merged=12
02:01:45 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
02:01:45 ET - [SignalsBoard] reload start latestPerSymbol=True searchLen=0 dir='' type=''
02:01:45 ET - [SignalsBoard] OnInitializedAsync start
02:01:45 ET - [SchwabMarketDataService.Ctor] _HistoryOffsetHrs= -1
02:01:45 ET - [Ctor] QuotesUrl=https://api.schwabapi.com/marketdata/v1/quotes (All timestamps in America/New_York)
02:01:45 ET - [SignalService.Ctor] ready (All timestamps stored/retrieved/logged in America/New_York)
02:01:45 ET - [LoadAvailableSymbols] start
02:01:45 ET - [Signals.OnInitializedAsync] start
02:01:45 ET - [SchwabMarketDataService.Ctor] _HistoryOffsetHrs= -1
02:01:45 ET - [Ctor] QuotesUrl=https://api.schwabapi.com/marketdata/v1/quotes (All timestamps in America/New_York)
02:01:45 ET - [SignalService.Ctor] ready (All timestamps stored/retrieved/logged in America/New_York)
02:01:44 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.