Tag Archives: Multichart.net

2 reasons for quant membership with limitation of Multichart.net framwork and Microsoft .NET PInvoke DLL Imports

HI there

This is an email for all your technical programming geeks.
First off, I am totally frustrated with the .NET framework of Multicharts:
I am revisiting an old open source trading platform as Multicharts.net framework is proving to be frustrating to work with
I then came across a major limitation of code generation from Matlab Coder or Simulink Coder toolboxes:

Critical while integrating Matlab with Microsoft .NET with C# or even Visual C++: Managed versus unmanaged DLL code
Next up? People like me get confused on managed versus unmanaged C++ native code.
What to do do for those confused about managed Microsoft .NET C# vs unmanaged C++ code?
Here is workaround and a sample demo::
Youtube video Demo of Visual C++ CLR DLL with Microsoft dot Net C sharp client
More detailed videos of the above will be posted in a few days
.
Confused? Frustrated by this? Here are two reasons right now why you need to join my Quantlabs.net Premium Membership.
1. Save yourself with loads of hours of frustration with the above.
2. I have also posted for my Quantlabs.net Premium Membership video demos with source code of the open source trading platform strategy calling one these managed C++ DLLs.
Join here to get access to the above video demo.
Thanks Bryan

HOW DO YOU START A PROFITABLE TRADING BUSINESS? Read more NOW >>>

NOTE I now post my TRADING ALERTS into my personal FACEBOOK ACCOUNT and TWITTER. Don't worry as I don't post stupid cat videos or what I eat!

Why I switch to Matlab Simulink and Multichart.net with no execution through Linux, open source, Marketcetera, or Java

Why I switch to Matlab Simulink and Multichart.net with no execution through Linux, open source, Marketcetera, or Java

See bloew as this continue.

This is in follow up on a video I posted on:

Youtube video Demo of Matlab Simulink visual trading model to c to Microsoft NET C sharp to Multicharts trading platform

Thanks for the queries. I much appreciate that.

Responses below followed –>

 

Hey Bryan,

I’ve been watching your videos and I’ve found them interesting. However, lately I’ve seen you post about multicharts for algo trading.

Apparently, you originally were going to set-up an ATS based on quickfix?

Have you looked into open-source cross-platform java-based algorithmic trading platforms such as marketcetera or algo-trader? Both platforms also happen to utilize quickfix/j.

–> Algotrader has no real documentation while the paid edition Marketcetera is very expensive. I also have looked at major available open source trading platforms.
Marketcetera, unlike multicharts, was actually designed for HFT and is still used by various hedge funds for the reason, and it has full fix connectivity, unlike the c sharp based multicharts(or tradelink, another open-source trading platform solution only has a broken implementation of fix, unfortunately).

–> I would have gone through sockets for Interactive Broker’s TWS client as that is properly supported while there is virtually no support for FIX on major brokers. If I ever go FPGA, FIX will be my only choice.
However, as the platform was designed for fix-based hft solutions, it currently does not support any market data solutions other than market-data over fix. Since, IB doesn’t offer market data over fix, one would still have to manually code a connection to iqfeed. For retail based solutions that do offer market data over fix, I know x-trader has it available, and many retail futures brokers do offer the fix api at a lower cost. Since, you’re canadian, if you ever think about opening account with a us FCM, I know the “deepdiscounttrading.com” takes Canadian clients. The site looks sketchy, but it’s actually an IB for Crossland. I’m not sure what they offer with regards to the pricing for tt fix connectivity, though. If you wanted to code for the iqfeed feed, you could use socket programming to receive the data through java.

–> I only go after reputable brokers like IB as I am not that desperate to trade with questionable brokers

They have c++ integration, so it may be possible to use the simulink code, or alternatively you may be able to use the matlab compile to compile a c/c++ library or use the compiler for java to simply create a native java extension. Matlab has excellent java support, better than c#.

–> i am sure you heard about the latest news of the Java breaches including the latest with Twitter  so I stay with more secure stuff. .NET Ahem. hack but that argument is another day….
http://web.archive.org/web/20080912010358/http://trac.marketcetera.org/trac.fcgi/wiki/C++Integration

However, to make it easier, algo-trader, which is a newer and less mature product has full support for the IB market data feed as well as execution capabilities. Apparently, they also offer fix, although I wouldn’t say that it is as optimized as marketcetera for ultra-low-latency.

Since latency is extremely important with regards to HFT, have you considered a linux-based solution? Linux has lower latency than windows for tcp/ip communications. Matlab is capable of running on linux, as well. You can still compile the code on the platform using simulink or to a library or to java and then integrate it into the marketcetera or algo-trader platform.

 

–> If I do go HFT, I would only stick with FPGA type solution so these other trading platforms will be useless as it is hardware based. I can generate HDL/Verilog code from the Simulink HDL coder.

Iqfeed can work on linux through wine, as socket networking will still be able to function on linux.

Here are the download links to marketcetera and algo-trader:

code.google.com/p/algo-trader/

http://grepcode.com/snapshot/repo1.maven.org/maven2/org.marketcetera/marketdata-marketcetera/2.2.0/

and the mirror for marketcetera:

http://repo.jrebirth.org/repo/org/marketcetera/

–> As said, Marketcetera is too expensive and too rigid. If they still only support strategy development through Ruby, it is fairly dated. Multicharts,NET is  a real nice solution with options as my video hints at. If I got really rolling, I would definitely switch to something like Deltix or even FPGA

What I don’t understand is, if you’re going to use multicharts for execution, why not matlab, I mean neither platforms were designed for ultra-low-latency, so you can’t expect the performance between the 2 to be that different with regards to hft. You might as well just use matlab, for everything, in that case. E.P Chan has an ATS set-up in matlab, but he doesn’t exactly call it HFT. For that matter, people who automate in multicharts, don’t generally call it HFT, either.

–> As I am switching to Multicharts, I would never call it HFT but it does have the capabilities to execute fairly higher number of orders. My UK quant contact told me about the .NET version so that is why I switched. Remember Matlab is single threaded so it has limits. I already talked to Ernie about the Multicharts so he may investigate with what I showed in the same video you saw.

You don’t need to jump on a linux-based ats right away, but you could at least test some basic code out with eclipse on a linux vm in vmware/virtualbox.

 

–> After my jaunt in Linux, I don’t see myself go Linux or open source as there really no support, community, set of standards, etc. It is only for people who are wanting to live on the command line or just be true open source. I like  to be productive so Windows offers that capability for me. ALso, I would never virtualize or do cloud as I don’t need extra software layers to slow down any systems.

I’m just trying to help. I hope it works out. If you manage to pull off integrating the matlab code into an ultra-low-latency solution like marketcetera, you’ll have a serious production-quality system with a nice workflow on your hands, and one that would actually be ready to be co-located…..

–> I think this is just about the best offering I have as I explained in the video. Thanks for offering but I have already looked at all the open source trading platforms, R, Linux, etc. These set of options explained in the video is the most logical to me.

Best Regards

—-

“Algotrader has no real documentation while the paid edition Marketcetera is very expensive. I also have looked at major available open source trading platforms.”

It’s true that you wouldn’t be able to get true support with either platform, however, some start-up hedge funds simply use marketcetera as a template for their basic platform.

“I would have gone through sockets for Interactive Broker’s TWS client as that is properly supported while there is virtually no support for FIX on major brokers. If I ever go FPGA, FIX will be my only choice.”

At the institutional level and especially in the HFT world, FIX is the industry standard for both streaming market data and executions. All major brokers from Newedge to Goldman Sachs to JPMorgan to HSBC, etc support FIX.
Besides IB, I know other retail brokers offer fix connectivity through (the Nasdaq certified Platinum partner) DAS Trader (brokers such as speedtrader and choicetrade offer this) or (the institutional quality) realtick (check their website and you’ll find cobra trading, lightspeed trading, etc.) or Rithmic (check their website and you’ll find Vision Financial among other FCMs including the major institution, newedge) platforms. Just2trade also has a fix connection. Of course, I mentioned the very professional X_Trader, as it offers both market data and execution, something that is hard to find at the retail level.
For market data, besides using socket programming to receive the iqfeed data, there is another retail-oriented data vendor that offers level 1-based data with native linux support for both c++ and java. You can look into “Activetick”.

 

–> All of the brokers you mention are probably fine. X_Trader is something I heard is kind of buggy and overpriced which still limits you. I cannot verify as I never used it. I don’t think this operation I will be involved with is really HFT. Even if I did, I would use nothing less than FPGA or Deltix depending on capital available. As for FIX, it is fine when you have an army of coders who can tackle these support issues or if you can truly afford the third party FIX engine solutions.
“I only go after reputable brokers like IB as I am not that desperate to trade with questionable brokers”

The only reason why I brought up that site is because some US-based FCMs do not permit Canadian clients for various reasons. Anyway, it’s only an introducing broker , so your funds will still be secured by a decently sized broker, Crossland.

 

–> Not sure but what are the advantages going through some introductory broker? I think IB should be good enough.

” i am sure you heard about the latest news of the Java breaches including the latest with Twitter so I stay with more secure stuff. .NET Ahem. hack but that argument is another day..”

No offense, but I wouldn’t necessarily call MS Windows based solutions “secure”. Even major banks may use windows based desktops, however on the server-side, their key infrastructure is all Linux based at this point. Mono has worse performance on linux than java, partially because a fundamental reason why .net is so fast on windows is due to microsoft’s heavy optimizations for windows/x86 based hosts in their vm, whereas java vms are inherently less architecture/platform based with regards to performance. That’s probably the reason why MS is having some difficulty in fully porting .net over to even ARM windows.
Also, people who co-locate mostly run linux on either bare metal or run hosted vms, which in turn are based on xen/linux platforms. Therefore, their systems are written in mainly c++ and to a lesser extent java. If you take a look at real major industry-grade execution management systems like Portware, RTS, Flextrade, ORC etc. you’ll find that they are largely java based. Other major EMS solutions like Apama are based on c++.

Java is a major player in the banking industry for server-side solutions and execution management among other things, including algorithmic execution, big data analysis via hadoop, high-performance network infrastructures, etc. C# is not really used for ultra-low-latency performance code, it is more used on the front-end desktop side of things for more managerial things such as creating custom portfolio management software, etc.

 

–> I agree with the above but on the trade secrets that I learned with C#, it has amazed me on the speed you can get with how you memory is managed within C#, your data types, and design patterns used. The coding style is very unorthodoxed but these ‘trade secret methodolgoies’ are just that: secretetive. Unfortunately, I don’t think I would ever reveal any of this as I like to retain my market edge over others. This was recently demoed to me by a real world quant with amazing speed results of massive times series being analyzed in real time. All done in C++ and C#.

“As said, Marketcetera is too expensive and too rigid. If they still only support strategy development through Ruby, it is fairly dated. Multicharts,NET is a real nice solution with options as my video hints at. If I got really rolling, I would definitely switch to something like Deltix or even FPGA”

A Veteran’s Perspective

From their blog, they support ruby, java and python for scripting.
Python is not a joke, either. It’s on par with matlab for prototyping. Many Quants now are using it for prototyping in lieu of the lower-performance and less-general programming oriented R. Cython is becoming pretty popular in quant shops, too. A lot of ATS solutions use python code for scripting and some even use performance cython code for various execution management tasks as part of their respective platforms.

 

–> Too many languages to choose from is not the way, it is the bottom line of $. I have seen more trading platforms and it all comes down to profit in what they generate. The above C# system is easily the most optimized and high performant based system I have set my eyes on. The GUIs are pretty awesome too.

“As I am switching to Multicharts, I would never call it HFT but it does have the capabilities to execute fairly higher number of orders. My UK quant contact told me about the .NET version so that is why I switched. Remember Matlab is single threaded so it has limits. I already talked to Ernie about the Multicharts so he may investigate with what I showed in the same video you saw”

http://www.mathworks.com/support/solutions/en/data/1-4PG4AN/

Matlab offers multithreading for a number functions, already, also they have a killer parallel computing toolbox. I don’t believe that multicharts has support for distributed computing.

Plus, matlab has gpu support:
http://www.mathworks.com/discovery/matlab-gpu.html

A parallelized gpu implementation with partial support for multi-threading, actually doesn’t sound half-bad. I don’t think that multicharts can compete on that front.

 

–> As said, parallel computing is not a priority at this point as there will be very small subset of assets watched simultaneously. We are just starting out so I need something proven. The next evolutionary step would be something like FPGA or Deltix.

“After my jaunt in Linux, I don’t see myself go Linux or open source as there really no support, community, set of standards, etc. It is only for people who are wanting to live on the command line or just be true open source. I like to be productive so Windows offers that capability for me. ALso, I would never virtualize or do cloud as I don’t need extra software layers to slow down any systems.”

Every major cloud computing vendor from amazon down use xen/linux based platforms for hosting solutions, at this point. Co-location companies that sell hosted services to hedge funds also use xen/linux based platforms. Generally, the utilized linux distribution is CENTOS/RHEL, but sometimes it is Suse.

Well, the thing about linux is that it’s just an open-source copy of unix. It was designed to be customizable and performance oriented from the start. So, usability as a goal has always been pushed to the side. CENTOS is basically a copy of RHEL without support. Oracle also offers Oracle linux, which is another copy of RHEL and is available with lower-priced support options.
Given the ability to tweak linux to the user’s specification, linux-based solutions at the high-end for supercomputing and Financial trading applications, etc will always have better performance than equivalent windows based products. I don’t believe that many hedge funds are using windows for hft, but those that are, are very wary of the limitations of the platform, and structure their strategies accordingly.

 

–> As said, I tried Linux. I was so frustrated sitting their compiling dependencies that were either broken or had some undocumented hack to get around. I ended up wasting more time on this crap than anything else. Give me something where my productivity jumps up instead of looking at some flashing command line. I really hated the non standards way of these C++ library dependencies. I want to trade not fix processes that can go off the rails for some reason. From what I have been told by multiple real world quant sources, most hedge fund and banks only use Windows and .NET technologies in the UK. It is only market makers use Linux which does makes sense. Of course, I could be wrong on this but there are really two paths to go down: .NET vs Java/Linux/Open Source. Honestly, both worlds have their pros and cons but I have given both a fair shake. I just need to get up and running as fast as possible instead of spending many months or even years on a home grown system. As said, I appreciate the input.

Alright, I just wanted to throw some ideas in your way.

Best Regards

 

See how I plan to use Multichart as a trading platform

HOW DO YOU START A PROFITABLE TRADING BUSINESS? Read more NOW >>>

NOTE I now post my TRADING ALERTS into my personal FACEBOOK ACCOUNT and TWITTER. Don't worry as I don't post stupid cat videos or what I eat!