Multicharts and Multicharts.NET use completely different programming languages for their indicators and you can't use code from one platform in the other platform. A rewrite is always needed.
The documentation is a bit slim though, but you can check the tradingcode.net website from futures.io user @Jura (the link mattz posted) or post on the forum here as there are some people coding in MC.NET around.
The following user says Thank You to ABCTG for this post:
On the plus side, they have a built in releasing feature that can use .NET reactor (if you have a license for it). So you can protect your code really well. Much better than CliSecure. In fact for my Ninja stuff I don't use CliSecure as it's easily cracked.
I like the way you can control calcbar and recalcbar. It's multithreaded, so you can kick stuff off in other threads.
It's just like all of these platforms - they have philosophical differences in how things are done - but the documentation is fairly easy to navigate and most importantly - as long as you aren't asking dumb-ass questions - you can get onto their online support, do a screen share and get the advice from the team. So you can literally log on to support and have thenm come and take a look.
The forums are pretty good too.
I think the challenge is getting your head wrapped around their philosophy. I went from Tradestation to Ninja, then did OEC Trader (which is a little tougher because of not much documentation) to MC.NET. So I'm not sure if the switch to MC.NET was easier because at that point I'd become savvy in moving to new platforms or because it's relatively friendly.
I think they have a good team and a solid approach to support. It'll be interesting to see how they grow the .NET version - I still have people asking me if I can do my stuff on the 'regular/easylanguage" version but after C#, it's a pain to go back to what is effectively FORTRAN.
If you have any questions about the products or services provided, please send me a Private Message or use the futures.io "Ask Me Anything" thread
The following 2 users say Thank You to DionysusToast for this post:
I agree with DionysusToast. The .NET version is much more flexible and powerful than the standard version, and once you become productive in it you wouldn't want to look back.
I have done projects in C, Pascal, Visual Basic, C#, Matlab and Python and I know C++ and Java, so trust me in saying that by going .NET a door to a whole world of possibilities have been opened. Since you can add reference to external .NET assembly from an indicator or signal script, in addition to all the included MultiCharts functions and the standard .NET libraries (e.g. date and time handling, networking, Windows forms for GUI controls), you can have tons of powerful 3rd party libraries at your finger tips and many of them are free, such as .NET connector to use MySQL database, Math.Net for all kinds of mathematical need including statistics and signal processing, Zedgraph for fast and elegant 2D charts (MultiCharts internal charting only allows x axis to be time, so when you need a scatter plot or histogram you need another charting library; MSChart works but is quite awkward), QLNet for all the basic quant stuff, and Accord.NET for machine learning.
.NET (C# or Visual Basic) is a good compormise between execution speed (C/C++ is better) and expressiveness (Python is better). Java and Java VM based languages may be equally good or better in terms of language itself and libraries, but since MultiChart is Windows-focused, .NET makes a lot more sense.
I am eager to realize some of my ideas with the help of the all-mighty .NET, and have started forging ahead.
Seemes that a lot of you are very impressed about the .net possibilities , but there is no help for beginners -
C# is apparently not easy to understand . So what about one concrete example to start with? Maybe an existing indi
from easy language ported to MCNet step by step?
So as a suggestion: If you want to add a new indicator the Powereditor always starts with a template.If you look a little bid closer , there are always 2 or three methods used - the Create method , the StartCalc and the CalcBar method.As I understand this the StartCalc method is for the initializing and inside CalcBar are any caculations for cresting the indi. First question would be , why you use Create sometimes and sometimes not ? How to develop further?
Maybe a start for newbies
Do you mean there's no help at all, or there's no help that's accessible enough?
The `Create()` method is used for creating objects (like functions, orders, and plots). So if your indicator doesn't rely on a function (like `XAverage` to calculate a default EMA), then you won't need to use the `Create()` method. That's why that method is not present in every script. However, since practically every indicator uses a function and/or plot, it's pretty rare to have no `Create()` method in a script.
The following user says Thank You to Jura for this post:
I don't own a Easy Language version of MultiCharts and I don't know Easy Language well enough except the very basic concepts... Actually I only purchased MultiCharts .NET because the .NET version is out, otherwise I would have gone to NinjaTrader whose scripts are also C# .NET based.
If you can paste the indicator code here with some explanations yes I can definitely try converting it to MultiCharts .NET. Otherwise, you can also read the indicators that come with the MultiCharts .NET installation - there are tons of them and all source codes are available (you may need to dig down a layer or two to understand how the underlying functions work).
Yes as in Jura's answer, Create() is used when you need to create objects of classes internal to MultiCharts like plots, orders, functions etc. If you define those in StartCalc() you will get an error message. However, if you have an object of a standard type like List<double> or DateTime etc, you can define them anywhere. I guess this is because the execution model: Create() is run only once for each indicator while StartCalc() COULD be run for more than one time e.g. when you change indicator parameters, or when MultiCharts try different lookback period if you don't specify max number of bars to look back.
I prefer to put my initializations in StartCalc() to ensure it's run everytime indicator is recalculated, and plus you have access to Bars.Info like the symbol and big point value of the instrument, while Bars is not accessible in Create().
Last edited by panz; November 9th, 2015 at 06:53 PM.
Reason: specify previous post's author name