• Get $30 off VIP with code SUMMER30. Ends July 27. Happy trading!

ThinkorSwim is very slow

BMW7667

New member
I'm running quite a few custom scripts, got a brand new computer but ThinkorSwim is still slow as a sloth. Any suggestions?
 

HSNerd

New member
I run a lot of scripts also and it works fine for me. I would still consider it clunky. What did you get for a computer!? If you don't mind me asking. I build mine because I was having slow down issues also on the previous rig.
 

BenTen

Administrative
Staff
VIP
Usually, when ThinkorSwim starts acting slow, the platform will actually give you a popup and suggest a new setting for you to use. Have you seen such popup yet? If not, you can manually adjust the RAM settings from the login screen (click on the gear icon).

 

BMW7667

New member
running a brand new Falcon with ample RAM and 3 graphic cards. The RAM settings are set 12MB - 24MB. The rig only runs ToS no other apps .. its probably not the system but the charts.
One thing I noticed that charts got slow after I started running Renko charts .. not sure if anyone else experienced any slowness
 

Mordoor

New member
2019 Donor
VIP
I would change your ram settings in TOS to 64 - 1536. Also, TOS is not a multi-thread piece of software so it only uses one core of your CPU. However, you can have multiple instances of TOS open on the same computer. Hope this helps.
 

Mordoor

New member
2019 Donor
VIP
To look at your ram usage in TOS, on the main page, right click on the Help button on the top. This will open a window that shows your memory usage. It will show Total Memory, Used Memory and Free Memory across the top. You can click on Collect Garbage on the top right side and this will free up all available memory. In order for TOS to run efficiently, you should show at least 2,500,00K of total memory. If it does not, then adjust the memory settings on the startup screen as indicated in the post above. I am certain this will solve your problem.
 

markos

Well-known member
VIP
Also, take a look at the beta site. trade.tdameritrade dot com. Just remember it's in BETA and prone to issues.
Have you deleted your GUI file from inside the Thinkorswim file? Be sure your backed up first.
 

Townsend

Active member
VIP
I think TOS does a LOT of disk access. I got rid of my hard drive and and now with a cheap solid state drive everything happens almost instantaneously.

For example, a Grid with 20 charts loads in 3-4 seconds. And this just an i3 machine with 8 gig of RAM.

I like starting with an empty drive. But I know there are utilities that will copy the entire contents of your old drive to the new drive. Sounds pretty simple, though I've never done it.
 

bmcgraw393

New member
VIP
running a brand new Falcon with ample RAM and 3 graphic cards. The RAM settings are set 12MB - 24MB. The rig only runs ToS no other apps .. its probably not the system but the charts.
One thing I noticed that charts got slow after I started running Renko charts .. not sure if anyone else experienced any slowness
12-24MB of RAM is extremely small (This is coming from an nvida/intel/AMD engineer, I wont say which one for privacy reasons lol ). If you are really interested in automating, then you should use a 3.6GHz processor with at least 2133Mb RAM.
 

DoQtorNo

Member
Howdy and good evening,

Is there a maximum number of chart labels that you can place on a chart that would cause a system degradation on the ToS desktop platform? Is there a common practice of not to exceed a certain number of chart lables being placed?
 

scott69

Member
No problems with 8 charts (3 experimenting with some cool indicators from usethinkscript) gaming ASUS laptop, 10th gen i7, 16GB ram 1000GB SSD, 43 inch external monitor. Fast as heck, actually. I only trade one thing, NQ, so I try to keep it simple. 15 min LT chart for trend, 5 min chart for setup, 1 minute chart for trigger. I have found that the more complicated the system gets, the more to look at and the harder it is to watch what is important. I have to keep it simple 'cause I'm getting old (65), LOL. I'm supposed to be retired, but still trade 10 hours a day......
 

autoloader

New member
These settings seem to have improved my watchlist functionality. I found this on the reddit thinkorswim forum:
  • If you have 4GB of RAM, set the min/max to 512/1536
  • If you have 8GB of RAM, set the min/max to 1024/3072
  • If you have 16-32GB of RAM, set the min/max to 4096/6144
 

Slippage

Active member
My understanding is the performance is limited due to TOS being written in Java and only one thread can update the user interface at a time. TOS is multi-threaded and it will use more than one core, just not for redrawing things on the screen. It's using other threads/cores for requesting/receiving data and processing that data, scans, watchlists, etc. etc.

Having a gazillion core computer with one hundred and eleventy video cards isn't going to help. You'd be better off buying two or three cheaper computers to run charts. The bottleneck is the one thread (one CPU core) that handles drawing the user interface. This is similar to how everything worked before dual core. One CPU did all the work and it "context switched" between threads which were queued for it to process. Similar to when you yourself are multitasking, if your attention gets split too many ways your throughput on those tasks decreases and you start to fall behind. Everything you see moving and flashing on the screen requires redrawing.

As someone stated earlier in this thread, even on a single computer, running multiple instances of TOS does improve performance. Why? Because each instance has its own thread that handles updating the user interface. That's going to get you your biggest performance boost aside from getting stuff off your screen. Conveniently, TOS linking symbols to colors works across multiple instances and across multiple computers. Beware if using multiple computers and connected to VPN, if the computers aren't using the same VPN server TDA's servers will prevent the second one from logging in since it's looks like you're in two difference places.

Here's some info about a ThinkOrSwim config file you can modify and maybe get better performance. If it makes any difference at all it wasn't much on my computers.

https://www.elitetrader.com/et/thre...art-loading-time-or-any-java-platform.214227/

Just DON'T DO THIS PART
-Dsun.java2d.opengl=true
-Dsun.java2d.d3d=false
OpenGL is an obsolete 3D graphics library that modern video cards don't optimize for. That forum post was written in 2011.

Here are the contents of my thinkorswim.vmoptions file. You'll notice the Xmx and Xms are the memory setting you can choose in TOS so yours may be different from mine and you should keep your settings for those if you have 8GB of memory or less.

Code:
-Xmx6144m
-Xms4096m
-Dawt.useSystemAAFontSettings=lcd_hrgb
-Djava.net.preferIPv4Stack=true
-Djava.util.Arrays.useLegacyMergeSort=true
-Dsun.awt.disableMixing=true
-Dsun.java2d.noddraw=true
-Dsun.java2d.xrender=false
-Dsun.net.http.allowRestrictedHeaders=true
-classpath/p launcher-second.jar
-XX:MaxPermSize=256m
-Djxbrowser.logging.level=INFO

Everything on the screen that updates (redraws) impacts the performance.
  • Get rid of extra Active Trader windows, or at least hide them or clear the symbols from them when not in use.
  • If you have extra charts on screen that aren't relevant much of the time, clear the symbols from them. A quick way to clear all the charts is using the menu from the button with 3 lines at top right of chart window. It's quick to load symbols from a watchlist into the charts using the same menu.
  • If you switch around between the Trade tab and its sub-tabs and the Charts tab and its sub-tabs TOS will still be updating the stuff that's not on screen in the background. If you're not using some of them while trading clear the symbols from them.
  • Collapse watchlists and quick charts, etc. when you're not using them.
  • Remove any studies you don't need.
  • For the studies you keep, hide chart bubbles and titles on the plots where they don't matter to you. For those who are code savvy, I make copies of the default studies and change the colors, hide bubbles/titles, and make other changes for my preferences so when I add the study to a chart it already looks the way I want it without any effort to change settings.
  • If you have multiple charts on screen and performance is laggy when you're placing an order try maximizing the chart you're focused on so TOS doesn't have to draw the others while you're entering your order.
Also, performance is worse during trading hours (or in OnDemand) with high volume stocks. If your strategy can be executed during lunch or outside of market hours then you can mostly avoid the performance issues.
 

Slippage

Active member
I forgot one other performance tweak and this one actually can have a noticeable impact depending on your hardware and how you set this. If your strategies can tolerate slower price updates you can throttle the quote speed. In Application Settings -> System you can choose from real time, 1 sec delay, 3 secs, 10 secs or 15 secs. Changing it from real time to 1 second delay quieted down my fans a bit. I tested the longer settings hoping TOS developers were smart enough to force an update at the candle close for whatever timeframes are on screen but no such luck.
 

JP382

Member
My understanding is the performance is limited due to TOS being written in Java and only one thread can update the user interface at a time. TOS is multi-threaded and it will use more than one core, just not for redrawing things on the screen. It's using other threads/cores for requesting/receiving data and processing that data, scans, watchlists, etc. etc.

Having a gazillion core computer with one hundred and eleventy video cards isn't going to help. You'd be better off buying two or three cheaper computers to run charts. The bottleneck is the one thread (one CPU core) that handles drawing the user interface. This is similar to how everything worked before dual core. One CPU did all the work and it "context switched" between threads which were queued for it to process. Similar to when you yourself are multitasking, if your attention gets split too many ways your throughput on those tasks decreases and you start to fall behind. Everything you see moving and flashing on the screen requires redrawing.

As someone stated earlier in this thread, even on a single computer, running multiple instances of TOS does improve performance. Why? Because each instance has its own thread that handles updating the user interface. That's going to get you your biggest performance boost aside from getting stuff off your screen. Conveniently, TOS linking symbols to colors works across multiple instances and across multiple computers. Beware if using multiple computers and connected to VPN, if the computers aren't using the same VPN server TDA's servers will prevent the second one from logging in since it's looks like you're in two difference places.

Here's some info about a ThinkOrSwim config file you can modify and maybe get better performance. If it makes any difference at all it wasn't much on my computers.

https://www.elitetrader.com/et/thre...art-loading-time-or-any-java-platform.214227/

Just DON'T DO THIS PART
-Dsun.java2d.opengl=true
-Dsun.java2d.d3d=false
OpenGL is an obsolete 3D graphics library that modern video cards don't optimize for. That forum post was written in 2011.

Here are the contents of my thinkorswim.vmoptions file. You'll notice the Xmx and Xms are the memory setting you can choose in TOS so yours may be different from mine and you should keep your settings for those if you have 8GB of memory or less.

Code:
-Xmx6144m
-Xms4096m
-Dawt.useSystemAAFontSettings=lcd_hrgb
-Djava.net.preferIPv4Stack=true
-Djava.util.Arrays.useLegacyMergeSort=true
-Dsun.awt.disableMixing=true
-Dsun.java2d.noddraw=true
-Dsun.java2d.xrender=false
-Dsun.net.http.allowRestrictedHeaders=true
-classpath/p launcher-second.jar
-XX:MaxPermSize=256m
-Djxbrowser.logging.level=INFO

Everything on the screen that updates (redraws) impacts the performance.
  • Get rid of extra Active Trader windows, or at least hide them or clear the symbols from them when not in use.
  • If you have extra charts on screen that aren't relevant much of the time, clear the symbols from them. A quick way to clear all the charts is using the menu from the button with 3 lines at top right of chart window. It's quick to load symbols from a watchlist into the charts using the same menu.
  • If you switch around between the Trade tab and its sub-tabs and the Charts tab and its sub-tabs TOS will still be updating the stuff that's not on screen in the background. If you're not using some of them while trading clear the symbols from them.
  • Collapse watchlists and quick charts, etc. when you're not using them.
  • Remove any studies you don't need.
  • For the studies you keep, hide chart bubbles and titles on the plots where they don't matter to you. For those who are code savvy, I make copies of the default studies and change the colors, hide bubbles/titles, and make other changes for my preferences so when I add the study to a chart it already looks the way I want it without any effort to change settings.
  • If you have multiple charts on screen and performance is laggy when you're placing an order try maximizing the chart you're focused on so TOS doesn't have to draw the others while you're entering your order.
Also, performance is worse during trading hours (or in OnDemand) with high volume stocks. If your strategy can be executed during lunch or outside of market hours then you can mostly avoid the performance issues.


Im confused, I just watched this video
and below is one of the tweaks suggested to help system run better that is diff from above

" -Xmx2048m
-Xms1024m
-XX:MaxPermSize=256m
-Dawt.useSystemAAFontSettings=false
-Djava.util.Arrays.useLegacyMergeSort=true
-Classpath/p launcher-first.jar
-Djava.net.preferIPv4stack=true
-Dsun.java2d.xrender=True
-XX:-UseConcMarkSweepGC
-Dsun.java2d.noddraw=true
-Dsun.awt.disableMixing=true "

Also I had TOS tech give me this line for VMoptions file about a week ago bc my TOS crashes a lot
" -Dsun.java2d.opengl=false "

Which one do you use???? And can you also use the code tech gave me???
 

Similar threads

Top