Hello everyone. This is my second post to this forum, long time reader. I am sort of at my wits end in terms of trading platform choice. Let me begin by saying that I've done a lot of research both on this forum and others online as far as which platform to start with (i.e. Ninjatrader, Sierra Chart, TS, and so on.)
First a little background. I am not a hard core developer by any stretch. I do have enough knowledge and experience with structured/OO languages to be dangerous. That being said I do prefer C# as I've done several projects that helped me both in IT and finance roles. I could read and maintain C/C++ code, not so much write something from scratch.
After a somewhat prolonged research period, I decided to go with Ninjatrader by buying a lifetime license. I figured after several months of playing around with the demo, reading about its capabilities and studying the documentation I thought that this was the right platform for me. I simply wanted a platform that had a good support base, a wide range of built-in technical indicators, good support in terms of brokers for execution and support for long historic data for wide variety of instruments (stocks, futures, currencies) as well as a decent (yes, I know loaded statement) backtesting and optimization engine.
Here's the problem. NT7/8(beta) have proven to be somewhat weak at executing strategies. Here's what I mean. NT7 is not capable of running 24/7 with InteractiveBrokers (IB - my broker of choice). NT support suggested I switch to another broker (hint, hint - theirs). Instead I switched to their Beta 8 version - which is loaded with bugs (and they are everywhere), however at least I can have it running with IB via IBGW 24/7 (if it was stable enough to actually pull that off). Support for NT8 Beta is shoddy and they do make it painfully obvious that since it's in BETA, any issues (new or old) will be responded to in due time (several days, although I have experienced faster response but no resolution). However this is not even the biggest problem.
The BIGGEST problem with Ninjatrader is its way of handling crash / restart recovery. There isn't one. If the platform happens to crash on you while you have one (or more) strategies running AND you have positions - good luck picking up where you left off. So that led me to believe that I may have made a poor choice in platform and there may not be a single platform that can do everything, which is why I'm asking for anyone who is still with me reading this post to suggest the following.
Either: If you can, please provide some guidance on how to handle crash/restart recovery on NT8 with strategies that have open positions, or need to be restarted as NT will go nuts trying (and failing) to synchronize it's virtual positions with actual account positions (by sending live orders and causing massive issues taking me out of desired positions).
OR please suggest a:
1) Signal generation platform that can be customized using either C# (preferred) or C/C++ or similar having access to clean reliable market data with extensive historic data for stocks, futures and currencies.
2) Backtesting platform (if possible combined with #1 above)
3) Execution platform that would take input from #1 and can be stable enough to run 24/7 to execute overnight (I'm on the US east coast) as well as handle RTH/ETH trades. Alternatively I do have a custom execution system that I wrote for IB which I could retro fit to receive data from another source through an API. It's basic but it does the job of sending orders.
I've spent considerable amount of time developing strategies for NT8. I could theoretically port them to any platform, I just don't know which one
Thanks for reading and I hope someone can shed some light on this rather dimly lit problem...
Last edited by bmveee; June 24th, 2016 at 11:51 AM.
I created my own trading platform next to NT for signal generation.
Currently I inject ordres in NT.
NT is quite a beast to tame, if you do 300+ orders per day across 10 instruments, it is a challenge ... but
it is possible to run it for more than 24 hours, even if support (to me too) suggest you restart NT every
My next step will be to inject orders in another tool, or to write my own connectors. I have no ambition
to make a charting tool (NT shines in this field)...
I see - do you mind sharing what data your feeding into your app? Does your app compute all the technicals or do you have something feeding you values and you run the algo to submit trades into NT? What I'm trying to do is the reverse. I'm trying to use NT as my signal generator and feed signals into my trade engine that will handle orders/positions (risk/trade management).
My data :
I have an IQfeed data subscription (i have a developer API account).
I have also my own data server. (pulling some real-time data from left and right that IQ does not provide)
Both streams are sitting behind a proxy-process, so NT can consume that data without being aware of where the data comes from, my own robot also talks to this same process.
Yes i do calculate the values of the few indicators that I need in my robot.
Nothing to do with NT.
The output is textual log (no charts) and orders are injected into NT (ATI both DLL and file based) and for knowing an order is touched in chart traders, i read the NT database, to know exactly where the order and the stop/target are sitting
The role of NT is :
- order gateway to brokers (ATI in, specific broker API out)
- visual interface to see where the orders sit (i can manually take over, cancel, drag & drop
I don't need any chart to be open, for the system to function.
no strategies loaded in NT.
This makes the robot very loosly coupled and flexible
Got it, thanks! I'm going to see if I can do the reverse - where NT will handle market data processing & signaling inside their strategy engine - but submit orders to my robot that will handle position/risk/stop out methodology.
The following user says Thank You to bmveee for this post: