the tradeoff is doing everything in house is time consuming and not a good use of energy.
you want a platform that gives you most of what you need, and then lets you build or add anything else.
in tradelink our connectors support a standard set of features that allows strategies and applications to be portable across brokers and data feeds.
However, tradelink also support custom-broker features. You can query any broker to see what features it supports. This can be used for example to simulate an order modify command (using cancel replace), if a given broekr doesn't support this. But if it does, you can modify orders using native broker feature if you choose.
Similiarly, not every broker/feed provides historical bar data.... so in tradelink we provide a way to see what features a given broker supports and take action accordingly.
This also allows you to add custom features, just as if you were working with the broker api directly. However with tradelink you're only adding what is missing, and not constantly reinventing the wheel.
TradeLink is open source and free and supports 10+ brokers and 3 data feeds :
http://tradelink.googlecode.com