First of all, I would like to thank you all for all the great feedback. It has been most helpful.
I have been looking into optimizing the code before dropping the money on a new system, and it looks like I have found what's slowing it down. Although the system does run a large number of computations, the computer is handling that decently. The GUI is also doing okay. What is slowing it down is connecting to the MySQL database on every new tick and inserting the data into it.
The thing is I am still fairly new at C# and am having somewhat of a tough time figuring this out. I have used NinjaTrader as my platform to develop this thing on. Using NinjaTrader, does anyone know if it is possible to open a MySql connection when a strategy initializes, keep it open, than have a query run using that open connection on each new tick? This should speed things up greatly as opposed to having to reinitialize a connection to the database with each new tick.