I'm in the process of selecting a platform for strategy development, backtesting, automated trading, and tracking, but unlike many/most I don't use charting at all, and it feels a bit awkward looking at all these systems that mainly seem to be designed around charts.
What I'm looking for is a platform that preferably can be used in the cloud as I'm permanently travelling and that can be completely run through scripts. Think querying external files and databases (for instance for parameters, external signals, ETF universe restrictions, synthetically extended hstorical data, etc), use functions, integrate real-time data plus built-in and custom indicators, create reports, send out trade notifications, etcetera.
I'm currently at the point that I start wondering whether this is possible at all using an existing trading platform. However, I've been reading up on a great many systems and so far have short-listed the following:
Related is that I would prefer to run at least the automated trading and tracking parts on a colocated server, VPS, in the cloud, whatever, and that I would be okay with developing and modifying my strategies on a tablet or laptop instead if necessary.
I wonder if there's any members in the community that have enough scripting experience to put me in the right direction. Your thoughts would be highly appreciated!
Tnx...
drftr
The following user says Thank You to drftr for this post:
It depends on your programming skills.
TS and MC are using EasyLanguage which is good for "normal" people but hard, IMHO, for people with a coding background.
Compared to MC TS is less stable and tends to crash qui often.
MC .Net is using C# and VB, which are both powerful. But I find programming with MC .Net more tricky than with NinjaTrader, a bit more confusing and less easy to read.
You didn't mention Ninja but I think it's a good option (stable and no real technical limits).
I can't say for QuantConnect, AmiBroker and Backtrader.
Success requires no deodorant! (Sun Tzu)
The following 2 users say Thank You to sam028 for this post:
I agree with Sam about EasyLanguage. I have a coding background and found it very hard to understand why it did things the way it did. It basically drove me nuts, and so did the way that it positively encouraged spaghetti code (unstructured coding.) I think it was really designed to be "easy" for non-programmers, and I suppose it succeeds at this, but I would want something else, myself. Things may have changed since I looked at it years ago, but I would be unwilling to code anything critical in it, based on my experience at the time.
There are experienced traders right here on this forum who use it a lot for automated systems and who would dispute everything I just said, by the way....
Thanks for the responses so far - really appreciated...
Although I'm not a programmer I've been working in IT for 3 decades, often with databases and SQL, so at least I should have SOME potential to pick up a major language. Since I might use what I learn for over a decade it may be a good investment in time. Like most I prefer an easier language over a more difficult one but I want to choose based on the viability of the technical solution.
The strategy I'm using and that I want to rebuild and expand uses a limited ETF universe and has fixed rules. It only has to check whether the rules (all coded) currently apply or not, and act based on that. It should be able to communicate with the outside world to receive input like parameters and send out trading signals. As such I would only need a script on a remote server, start it, go on holiday for a month, and after a month see if it's still going strong.
Obviously this is a bit exaggerated but I DO want to set up a system that would make this possible in theory, so that there is NO NEED to "do something" at a screen. If this is possible with any of the platforms mentioned then I'm all ears.
I've been reading up for a couple of weeks now and found too many technical problems for some systems not mentioned on my list. For sure I've read plenty of rave reviews for the exact same software! But since I won't be anywhere near the pc, server, instance, or whatever, I want to limit technical risks as much as possible. Heck, I often don't have web access for a week!
Had I chosen a different kind of life I could see myself invest blood, sweat, and tears in for instance NinjaTrader, or make Zorro take the next leap (after removing the max gain restriction), etcetera, as there's many systems to be enthusiastic about. But for me it's mostly about reducing risk - twofold: First, that I select the right platform for me to avoid 6-12-18 months of investing in a language that in the end can't do what I want, and second, that the solution is stable enough that I can let it run for weeks on auto-pilot if I wanted to.
I hope this adds a useful background. Thanks again and please keep 'em coming!
drftr
The following 2 users say Thank You to drftr for this post:
Actually @bobwest , I totally agree about TradeStation and EasyLanguage. The IDE is terrible, has no version control, and has a host of other problems. The benefit of EasyLanguage is being able to get up and running quickly with trading ideas. I use EasyLanguage and PowerLanguage because it works for what I'm doing right now. However, there are ideas I want to develop that are exceptionally difficult to code in EasyLanguage, even with OOEL, GlobalVariables, EL Collections, etc. My website/blog on system trading is launching very soon and the idea around development is to be platform agnostic and focus on the process.
With that being said, my dear wife just finished a couple of Python courses specifically for building trading systems, and she raves about the simplicity, elegance, and power of Python (Spyder IDE). She has no formal training in software/application development, aside from what she learned with EasyLanguage in TradeStation, so that is interesting to me.
@trendisyourfriend , I took a look at Zorro at the suggestion of @SMCJB , and it looks compelling. I would love to explore this platform more sometime in the future.
@drftr , I too find charting to sometimes be an awkward thing and can deceive, potentially creating a bias (John Ehler's website has a section of optical illusions that demonstrates this point for traders). Petra Zacek, who trained with @kevinkdog and is also a World Trading Cup champion, stated that she does not like working with charts because she is not a visual person (Better System Trader podcast, episode 154).
~vmodus
Enjoy everything!
The following 2 users say Thank You to vmodus for this post:
Thanks for sharing the Spyder IDE(a). Looks cool and I might look into it further should I take the Python route.
Any thoughts on whether MultiCharts.NET would be able to do what I need or is your experience restricted to EasyLanguage / PowerLanguage? If I interpret you correctly that might not be the best choice? I have also sent out emails to the companies in question and MultiCharts support is doing their very best to answer my questions, I have to say. But where they focus on what PowerLanguage CAN do I'm trying to make clear that I'm currently more interested in what it CAN'T do. Hmm... Sounds like I've been in IT too long... ;-)
drftr
The following 2 users say Thank You to drftr for this post:
A retail charting/trading package is just a visual representation of an array of aggregated market data which to build a trading system you need. So I wouldn't get hung up on that but,
They are mostly optimised to run on desktop computers and are very much bloated with the aim of offering many things to many people. While a cloud based server, if you are talking AWS kinda thing are not exactly optimised for running pc based software. Of course you can do it, I run systems on google cloud using Sierra Charts. Just be careful of testing a system on a pc with 4 cores/8 threads and a gpu then thinking you will have the same function on a cloud server with 2 threads no real gpu.
What trading time frame are you talking? If its EOD or only a few trades a day on larger type time frame, say hourly, a simple python system would be perfect for a server. If it is more active down in the minute or less data sampling and multiple instruments then what retail platforms do well is data collection and curation in a fast and reliable way.
In my own experience I wouldn't get too hung up on the final solution before you actually went about testing and proving something works. There is a lot to be learnt between the initial idea generation and the final implementation. What experience do you have with any programming language? I would use whatever makes it easy to get started.
The following user says Thank You to Trembling Hand for this post:
Point is I HAVE something that works in Excel and Access but it can hardly be maintained and expanding it will cause an instant nightmare. I don't want to go from one hobby project to the next so I either keep what I have while feeling defeated, or I set up something much more professional that can be expanded later. I have too much experience with work arounds is what I'm saying really and when there's money involved I don't consider that a good thing. Especially when it's MY money ;-)
Your cloud-related comments are very interesting and confirm what I have previously read. Will have to look into that much further. For the reasons you mention I have kept very different animals like Python (no pun intended) and QuantConnect on my short-list for now as they offer a completely different solution. On the other hand they seem to be run as hobby projects as for the first I can't even sign up while the second never responds. So there's added risk in that too. I've also learned AmiBroker as an organization is extremely small. They all have SOME big problem that would disqualify them but if I take them all off the short-list I'm back at square 1.
If this question was directed at me.... I have no idea. My experience is limited to EL/PL. If you know C#, then you can do just about everything in MC.NET. If you don't, then you probably need to decide what direction to take. For me, the next thing to learn is Python, based on my wife's experience with it and recommendation. Not for nothing, but Python is most likely to become the dominant language in the future of quantitative/algo/systematic trading, from what I am seeing. That is only my opinion, though.
~vmodus
Enjoy everything!
The following user says Thank You to vmodus for this post:
C#/.Net is powerful on a Windows machine. If it can be done, it can be done in .Net. However, Python should also be able to do what you need.
Doing it in Ninja/Multi.Net will be faster/easier than coding from scratch in Python.
Should you later want to get into machine learning, Python is the leader.
Will you be using intraday data and trading frequently each day?
Will NinjaTrader work with your broker? If not, would you switch to NT's broker?
If not, I'd go with MultiCharts.Net, assuming it works with your broker.
Does your broker have a python api?
NT's support forums are much more active than MC's ... from what I've seen. Some members know more than the support staff!
People complain about NT crashing/locking up. From what I've seen, and based on what you've said about your strategy, I doubt you'd have those problems.
The following user says Thank You to userque for this post:
My current broker is TradeStation and since I'm from the EU that's about the only US broker that allows me to trade US ETFs (I got dumped from TDA and IB because of this and could only stay for trading derivatives - I have passed for the honour).
I have requested API info plus a code from TradeStation to look into the possibilities but you're probably aware that customer support is not something that's very high on their list so I guess I'll wait a bit longer then.
In nearly all reviews I've read about NT I see that their focus is futures, options, and forex. Most reviews mention ETFs can't be used outright, which I know is nonsense, but it does show a trend that makes me a bit wary. As such I would have to assume there's far less development in that direction for pre-fab indicators and stuff. In that regard MultiCharts.NET would seem to be a safer bet but that's just an expectation.
drftr
The following user says Thank You to drftr for this post:
Thanks and yes, that is the page where I applied for the necessary code... :-)
NT remains a head scratcher though. Of course I gave it another look as positive reactions were coming in, but geez... there's a lot of negativity about stability and related stuff ESPECIALLY from what seem to be well-respected regulars. I will still keep NT in mind should I find no other solution but to be honest I'm not warming up just yet - sorry! This is not to say the other platforms don't have their own problems but I've read so many now about TradeStation and NinjaTrader that I'm ending up sweating by the thought I would have to go through all of that myself while, say, travelling in Mauritania!
There's more head scratching going on though as MultiCharts support tells me everything I want can be done using PowerLanguage. While... I just saw a comparison that for .NET stated:
Access to the status of orders, positions, accounts, logs from the script
Access all data from scripts for instruments that are not even charted
Access to the list of symbols in the database from studies
Ability to use the third-party databases (SQL Server, Mongo DB)
This totally fits into my ideas and from my (incorrect?) interpretation suggests that if .NET HAS these possibilities the PowerLanguage version DOES NOT, otherwise it's not a difference. Now I admit I may not be the smartest guy on this forum but would you interpret this differently??
drftr
The following user says Thank You to drftr for this post:
NT will tax your machine. I have a new machine that I just installed NT on. During optimizations, it would nearly max out my CPU, right before the BSOD. I troubleshoot for a couple of months before discovering that the solution was to increase voltage to the CPU. As a precaution, I also maxed the CPU out at a few percentage points below 100.
Second cause was NT using all of the memory, causing freezes/crashes.
For this one, I had to optimize fewer parameters and fewer indicators at a time. Since I really don't use 'indicators' anymore, I don't see that problem anymore. Seems to be an issue with memory not being freed up fast enough.
2. Genetic Optimizer
Not many seem to have this issue, but the GO would not work when trying to optimize more than a certain number of parameters. Found a fix via modifying the optimizer's code. Has to be re-applied whenever NT is been updated.
3. Quotes
Optimizer/Backtester seemed to use stale quotes if NT hadn't been restarted in days. I restart it daily now.
She purrs like a kitten now.
I agree with your interpretation. But if we are correct, the non-dotNet version would appear to be very limited.?
But, I suspect most scripting languages will offer sufficient capabilities. DotNET will make a difference when you desire capabilities outside of the platform, i.e., when you want to interact with the operating system, or another application.
Microsoft makes windows. MS makes .NET. It stands to reason that .NET will offer the most capabilities in a windows environment.
Also, dotNet is a compiled language, and is likely to be much faster than other languages.
Have you considered MotiveWave? It is based on Java, another professional, powerful, and fast language.
Also, with C# and Java, your knowledge of either of these languages can be applied to general programming interests. IOW, you could develop real applications that have nothing to do with trading, or your trading platform.
The following user says Thank You to userque for this post:
This is now conformed through email by MultiCharts, and therefore must (?) be valid for TradeStation's EasyLanguage as well.
drftr
ADDED (and sorry for leaving it out): This means that most data I would need indeed can only be had with either:
1) PowerLanguage while having charts and/or other screens open (so I would have to be logged on somewhere all the time and generate relevant charts and whatever I need) to be able to use the data;
or
2) Use C# on MultiCharts.NET so that I can query and process all data I need without having to develop and generate charts and stuff first.
Do you really need a mechanical solution for such a low frequency of trading? Are you opening thousands of new trades per week?
Maybe this interview of Kris Longmore, founder of Robot Wealth would give you some more insights. BTW, this guy is an expert with Zorro and its strong/weak points maybe you should try to contact him to get a realistic perspective.
I often have no access at all and I don't consider that a problem for not being able to get in. But I DO find it a problem for not to be able to get out! What's more is that I'm sharing signals with a dozen others so I wouldn't want them to rely on someone who isn't! ;-)
Now both are front and back end: Excess for the main strategy and Access for hedging. Obviously I want to mix the best of both worlds in the new setup.
Ok. Curious as to why you (assumedly) never delved into VBA.
I coded my initial algos using Excel, VBA, and the Excel evolutionary algo. Amazing what you can (slowly) do in Excel. But as you know, it gets cumbersome and very restrained.
Depending on the details of your strategy, it may be possible to, one at a time, farm out the duties that your Excel and Access performs, a la carte, to a language like Python.
What I'm saying is that with all other solutions, you'll have to fully export your strategies into them before you can benefit; whereas, the Python solution may allow piecemeal, incremental, improvements/benefits.
Again, this possibility all depends on facts I don't have.
It's more difficult to create and modify an excel spreadsheet compared to building/modifying that same data using code.
Again, I can't know anything for certain re: your situation, from where I sit.
(A programming language can manipulate data in an abstract way; Excel/Access are "physically" restrained to two-dimensional "space." [With unnecessary/additional effort in implementation and maintenance, the restraints can be partially overcome by utilizing VBA])
The following user says Thank You to userque for this post:
All perfect points and from where I stand AFTER absorbing what has been shared with me on this and my other thread on the EasyLanguage sub forum I think you pretty much nailed it.
I want to move away from Excel because my linked spreadsheets must have millions and millions of formulas that make it a very tedious job to change it into something different. Access comes with its limitations as well and if I add mine it doesn't look good. It works. That's it.
What's left is learning a new language as I wonder what I need an application for if it's doing a lot of things I don't want and not the things I do want. I could still re-use a lot of stuff, but anyway...
Disturbing that the only questions I got answered where from MultiCharts support as neither TradeStation, AmiBroker, QuantConnect nor Backtrader bothered to answer, nor did they allow me to post the quesions on their forum without buying the software first (have posted on the TS forums as they're my broker but to no avail). Without answers and/or support for sure I won't select any of those and prefer to bite in the dust, so that leaves 1) reconsidering Access or 2) starting from scratch with a new language as my options.
I will leave the post open for a few more days in case someone else wants to chime in and will then consider my questions answered.
Got kicked out as a European wanting to trade US ETFs. Same for IB. Same for IB.uk. TradeStation seems to be able to get around EU rules. Possibly because it's originally a Japanese company - just guessing here.
Ok , glad it works for you. Tradestation looks just like Thinkorswim. Perhaps some left TOS and joined Tradestation. TOS has its own quirks but because I am a new trader I like to keep it simpler.
My research seems to have come to an end but with a bit of a surprise. After finally being in email contact with QuantConnect and having reviewed most of the documentation I have to say it looks really promising. Well, it did from the onset because of the reviews I've read and their technical solution, but not being able to get into contact never is too promising (STILL a fail for TradeStation, AmiBroker, and Backtrader - go figure...).
Biggest pros:
1. Its primary development and trade tools are in the cloud which gives me a lot of freedom and also saves on costs (starter level is even free).
2. Development can also be done on any desktop for instance using Visual Studio.
3. One can use both C# and Python and both are fully integrated.
4. Historical data for backtesting and real-time data for live trading are free.
5. They seem to be able to scale up servers without a blink.
6. External sources can be used to be included in scripts, like scheduling reading tickers from a Dropbox file or so.
7. Depending on the subscription level there's database space allocated for personal use.
So far so good. In case anyone has actually used QuantConnect I'd be open for opinions!
drftr
The following user says Thank You to drftr for this post:
I'd just suggest researching what happened to Quantopian; as you don't want that happening to QuantConnect a month, a year, or five years from when you join.
The following 2 users say Thank You to userque for this post:
Are you referring to the crowdsource part here? For sure I won't be in there but it could still start working against them over time. At least they seem to have different income streams which makes survival more likely. They absorbed a huge part of Quantopian's members which makes for a very decent community size-wise. Last but not least, anything developed in C# or Python can be used elsewhere should the proverbial SHTF. I think that's actually a big benefit over most of their competitors.
Your point is very well taken though and I will look into it in detail.