The first generation of my trading system uses a broker's proprietary script on that same broker's platform. The second generation of my trading system uses a generic programming language on another broker's platform. I am now working on the third generation of my trading system. It is language-agnostic, platform-agnostic, and broker-agnostic. Why? Because designing trading systems is as much about creativity as the science. An artist would not limit themselves to a defined toolset. I want to be free to use whatever tools are necessary to get the job done efficiently and being able to try new things as technologies evolve. Having a broker-agnostic system frees me from being locked into any particular broker. Conversely, I could use one system to gather data and trade from multiple brokers for the best execution prices. Yes, this is over-engineering for a small entity like myself. But heck, this is something that I enjoy building. So why not?