Hi,
In addition, Schwab 10 second streaming data was missing 9:56:21 through 10:01:11.
Back test 1-minute data is fine.
I have been using Schwab 1 minute and 10 second streaming data for a year now almost every trading day. This is a first for 1-minute data.
Wonder if users have seen similar missing bars in other symbols today?
In addition, Schwab 10 second streaming data was missing 9:56:21 through 10:01:11.
Back test 1-minute data is fine.
I have been using Schwab 1 minute and 10 second streaming data for a year now almost every trading day. This is a first for 1-minute data.
Wonder if users have seen similar missing bars in other symbols today?
Rename
Any messages from the Schwab extension in the Log Viewer?
A historical data request acquires those bars now.
A historical data request acquires those bars now.
Thank you! Log Viewer has the following messages:

I checked the AT&T router's log. There was no indication that Internet was down.

I checked the AT&T router's log. There was no indication that Internet was down.
"NoMessageReceived" is the the websocket connection indicating that more than 75 seconds passed without getting any information from the socket. Behind the scenes we open a QQQ stream to practically guarantee at least 1 trade within that time to keep the connection alive. But the fact that it happened in the middle of the market day can only point to a problem somewhere - client, server, a hop between them. There's no way to know.
Reconnection attempts should start right away following that, but it looks like it took nearly 4 minutes before it actually disconnection and then "attempting Reconnect".
Are you using build 12 (latest) of the Schwab Provider?
Reconnection attempts should start right away following that, but it looks like it took nearly 4 minutes before it actually disconnection and then "attempting Reconnect".
Are you using build 12 (latest) of the Schwab Provider?
On June 1, 2026, Schwab had some system issues which may have impacted data retrieval. I was using thinkorswim and, without getting into details, there were huge delays. I was scalping, and had to stop because trades would seem to not execute, or I had no visibility into trade execution. Although thinkorswim and the API are two different things, the issues may have been in their backend servers. Later in the day, Schwab indicated that the system issues had been resolved. There are a number of threads in the r/thinkorswim subreddit about the problems.
Yes, I am using build 12.
These things will happen. Need an ability for a strategy to be aware of it and take precautions.
I access Schwab multiple times a minute for option quotes. I use an async function that does this in the background using:
try
{
var task = Task.Run(() => SchwabHistorical.Instance.GetOptionChainSnapshot(_spy.Symbol, NextOptionExpiryDate, optionTypeHere, s1, s2));
chain = await task;
}
catch (Exception ex)
{
WriteToDebugFile("line 24744: catch exception message: " + ex.Message, 5);
}
I just checked the file the quotes are written to. Quotes are missing after 9:56:55 and before 10:01:27. But there were also no messages from catch. Apparently WL8 catches these messages. If there were a way for my code to know when the option quote request fails, I can take precautions. This part of the application runs on a timer tick. It does not depend on the presence of a bar.
Any other suggestions you might have are welcome.
If any way to know is available as a last resort, I can telephone Schwab and ask them to sell all positions.
Thank you! And thanking Paul for his comments!
These things will happen. Need an ability for a strategy to be aware of it and take precautions.
I access Schwab multiple times a minute for option quotes. I use an async function that does this in the background using:
try
{
var task = Task.Run(() => SchwabHistorical.Instance.GetOptionChainSnapshot(_spy.Symbol, NextOptionExpiryDate, optionTypeHere, s1, s2));
chain = await task;
}
catch (Exception ex)
{
WriteToDebugFile("line 24744: catch exception message: " + ex.Message, 5);
}
I just checked the file the quotes are written to. Quotes are missing after 9:56:55 and before 10:01:27. But there were also no messages from catch. Apparently WL8 catches these messages. If there were a way for my code to know when the option quote request fails, I can take precautions. This part of the application runs on a timer tick. It does not depend on the presence of a bar.
Any other suggestions you might have are welcome.
If any way to know is available as a last resort, I can telephone Schwab and ask them to sell all positions.
Thank you! And thanking Paul for his comments!
1. There will be no error to "catch". If it doesn't update, the data will be simply be the last value, but there will be a message written to the debug log.
2. However, this is a different request endpoint than getting data from a streaming socket. It could have been entirely successful - if it had ran!
3. But it didn't run because you weren't getting streaming data. If the BarHistory doesn't update, the script will not execute.
You could have your script update a file immediately during Initialize and monitor that file with an external process. If the update didn't happen, then the script didn't run.
2. However, this is a different request endpoint than getting data from a streaming socket. It could have been entirely successful - if it had ran!
3. But it didn't run because you weren't getting streaming data. If the BarHistory doesn't update, the script will not execute.
You could have your script update a file immediately during Initialize and monitor that file with an external process. If the update didn't happen, then the script didn't run.
Good point. The code that gets option quotes runs on bars.
To follow your suggestion:
I have another piece that runs under VS2026 that has a 10 second timer tick.
I could check the last update date time of the option quotes file. with this code
And if it is earlier than a certain time then do a number of things.
If the trade path to Schwab is still available for example, then I can sell all positions.
I have something similar. I ping a common web site at the top of each minute.
If there is no response, then an alarm sound provides an alert along with code trying to sell all positions if that path is still available. If not a phone call to the broker.
To follow your suggestion:
I have another piece that runs under VS2026 that has a 10 second timer tick.
I could check the last update date time of the option quotes file. with this code
And if it is earlier than a certain time then do a number of things.
If the trade path to Schwab is still available for example, then I can sell all positions.
I have something similar. I ping a common web site at the top of each minute.
If there is no response, then an alarm sound provides an alert along with code trying to sell all positions if that path is still available. If not a phone call to the broker.
To your point, if the 4-minute gap in bars is unrelated to option quotes, I have a file where I store the bars as well. I can look at its date of modification. The reason I have a program with a timer tick in addition to bars is to manage how bars come in with jitter and in lumps and smaller gaps. I have had to use two levels of indirection. This jitter is only in 10 second bars not in 1-minute bars.
I didn't say it was unrelated, and implied just the opposite.
Again, you cannot GetOptionChainSnapshot() if a bar isn't added to the chart's BarHistory because the strategy does not run.
Again, you cannot GetOptionChainSnapshot() if a bar isn't added to the chart's BarHistory because the strategy does not run.
Your Response
Post
Edit Post
Login is required