I have a ATS which is back-ended into a Postgres DB. I am looking to move the system to some type of hosted environment, but the options are overwhelming. Is anybody here doing the same type of thing? If so what are the pros/cons/recommendations. Thanks in advance.
I have used a VPS in the past for hosting my ATS, and I can't say that I have any complaints. The system was snappy and latency to my broker was a lot lower than when I ran my code from home. As far as companies go, I would recommend either Linode or Slicehost; I have experience with both and they are top-notch. If your software is processor or memory-intensive, make sure not to sell yourself short as far as VPS plan/features.
I'm currently using Softlayer. I'm just not comfortable with the idea of VPS and hardware sharing for something this critical, so am using a dedicated server from them. They also have multiple server locations. I originally picked their Dallas site because it's basically next-door to TD Ameritrade... but now I'm with IB, so am considering moving over to their Washington DC site. They have IPMI service, giving you monitor/keyboard access to the console... for my Windows-based system, that was also important to me.
Hi, could you please go any deeper in this matter? I mean how are you actually organized? Did you write your executable and then you placed it on a server of a computer house and it runs alone on its own there? Does it start at determined times or is it a 24h tool? I'm very interested in this as I have some authomated Systems that run on my PC, in any case I launch them everymorning and sit nearby doing other tasks, the idea of something that would work completely on its own is very nice to me and I will certainly go on in that direction, your experience would be very precious for me anyway. Thanks, bye Smodato
Hi, I actually use NinjaTrader, no custom executables. The hosted server gives me access, and I use it just as if I'm sitting in front of it. I log in using Remote Desktop Connection usually, and over my DSL link it only feels slightly more sluggish than my local machine. (Only "feels" sluggish, actual code executing much faster due to better hardware. Even so, this makes hosted VPS a bad idea for daytraders who rely on their twitch reflexes for entry/exit.) I can also log in using IPMI instead of RDC. IPMI is a hardware device/product provides me a separate keyboard/monitor interface directly into the console itself, as if I'm right in front of it. So, when I reboot the server, I can see it coming back up (and change the BIOS or do anything else I want) without waiting for Windows to become available. I am trying to use recorded macros to launch my program, but it's been sort of hit/miss. I find myself getting up at 6:30 AM every morning just to verify whether the program has indeed launched; it's just not reliable otherwise. So, it's essentially identical to running code on my own machine at home. I just don't need to worry about downed DSL lines, power outage, etc, etc.
I wasn't sure which of us smodato was replying to, so at the risk of offering irrelevant information, here's a bit of info about my setup: I'm running completely custom code, other than using the QuickFix libraries to provide the protocol link to my broker. My code is written largely in Ruby, runs on a FreeBSD system, and starts and stops itself automatically depending on time of day. I was fortunate to find a VPS provider (neither of the ones I mentioned earlier, though they're both great) with excellently low latency (18 ms) to my broker, so I execute all orders from there. I run the software inside a GNU screen session, so I can log in and attach or detach from that terminal at my whim. I forward a database connection from one of my systems at home via a reverse SSH connection, in order to do long-term price and execution logging, but the DB queries for this are executed asynchronously, so they don't prevent actual trading activity from taking place when there is a bit of data transit delay.
314, Could you give some pointers on navigating through QuickFIX? As mentioned, I'm currently with NT, and only using the brokers that they connect with. But the thought has occurred to me more than once that, eventually, I'd like to strike off and be a little more independent. I've looked at QuickFIX in the past, but it looks to be just a very low-level interface dealing with message sending. How much work is it to build the logic on top of that to interface with a broker? I'm spoiled right now with NT... I can just call EnterLong(), get back an order token, and then monitor order status through an event handler based on that token. How much work to build something on QuickFIX with the same capability?
Hi all, thanks for all answers, I did not address my question to somebody in particular but different experiences is what I was looking for. So I understand it works as I supposed but you are not sleeping quietly knowing your software is running somewhere out there, is that right? I also wonder whether the following configuration would be feasible: VB6 developed executable connection to TWS from IB VPS solution autostart and autostop the above would mean a Windows environment, a "poor" VB6 application and the TWS with its API ( I don't know how this is judged among you developers) Thanks, bye Smodato
heech: FIX is a bit lower-level than what you're describing with NinjaTrader, but not terribly. With FIX, you send a command to open a position, and your side (long or short) is specified as an argument to that command. You can then query for execution using other commands, and monitor your positions, cash, etc. Seems to me that it wouldn't be terribly hard to write some code that lets you register a callback function that triggers on order execution. What you *would* miss if you went straight from NinjaTrader to a solely FIX-based solution is a lot of the niceties that NT affords you, such as the point-and-click interface, backtesting, strategy wizard (though I'm guessing you don't use that), etc. I've had to write a lot of ad-hoc code for backtesting and related activities, which was (is) fun for me, but may not be for everyone.
smodato, Let me be clear in saying that I do sleep very quietly knowing my software is out there running. =) I'm not sure about the configuration you proposed because I'm ignorant as to how (or if) VB6/TWS/IB can be made to play together, but it sounds fine. If TWS can be interfaced with via a COM interface, VB6 can probably interact with it. Autostart/stop should be as simple as using a timer in VB (ahhh, it's been a long time...) to start/stop calculations and order sending.