NexusFi: Find Your Edge


Home Menu

 





VIDEO: MultiCharts vs. NinjaTrader strategy backtesting and optimization


Discussion in MultiCharts

Updated
      Top Posters
    1. looks_one Big Mike with 18 posts (43 thanks)
    2. looks_two spinnybobo with 3 posts (0 thanks)
    3. looks_3 Fat Tails with 3 posts (1 thanks)
    4. looks_4 cbritton with 3 posts (1 thanks)
      Best Posters
    1. looks_one aviat72 with 4 thanks per post
    2. looks_two Big Mike with 2.4 thanks per post
    3. looks_3 slickiam with 1 thanks per post
    4. looks_4 Fat Tails with 0.3 thanks per post
    1. trending_up 54,055 views
    2. thumb_up 50 thanks given
    3. group 23 followers
    1. forum 53 posts
    2. attach_file 0 attachments




 
Search this Thread

VIDEO: MultiCharts vs. NinjaTrader strategy backtesting and optimization

(login for full post details)
  #41 (permalink)
 
GaryD's Avatar
 GaryD 
Orlando, Florida
 
Experience: None
Platform: shoes
Trading: happy
Posts: 6,462 since May 2011


Big Mike View Post
C, I'll do another comparison in the future. But there is no "sim" in MultiCharts, there is no dom, there is no discretionary trading. If you want to sim or discretionary trade, you still need a second platform, which is why I still use NinjaTrader (just for the DOM, nothing else).

Mike


You just made me laugh out loud at myself. I had downloaded Multicharts to play with it awhile back, but had a hard time figuring it out and decided it was not worth the hassle to re-learn software when I am very happy with NT (except for the backtesting flaw I am reading about, and have experienced on many occasions). Now I see that the reason I was having trouble may be that Multicharts does not do what I was trying to get it to do? Classic.

Reply With Quote

Can you help answer these questions
from other members on NexusFi?
Looking for an MQL4 MetaTrader programmer/coder
The Elite Circle
NT7 Indicator Script Troubleshooting - Camarilla Pivots
NinjaTrader
Request for MACD with option to use different MAs for fa …
NinjaTrader
The space time continuum and the dynamics of a financial …
Emini and Emicro Index
ZombieSqueeze
Platforms and Indicators
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Just another trading journal: PA, Wyckoff & Trends
33 thanks
Daytrading ES & NQ
32 thanks
Battlestations: Show us your trading desks!
30 thanks
Spoo-nalysis ES e-mini futures S&P 500
28 thanks
Retail Trading As An Industry
25 thanks

(login for full post details)
  #42 (permalink)
 
Big Mike's Avatar
 Big Mike 
Manta, Ecuador
Site Administrator
Developer
Swing Trader
 
Experience: Advanced
Platform: Custom solution
Broker: IBKR
Trading: Stocks & Futures
Posts: 50,248 since Jun 2009
Thanks Given: 33,111
Thanks Received: 101,368


GaryD View Post
You just made me laugh out loud at myself. I had downloaded Multicharts to play with it awhile back, but had a hard time figuring it out and decided it was not worth the hassle to re-learn software when I am very happy with NT (except for the backtesting flaw I am reading about, and have experienced on many occasions). Now I see that the reason I was having trouble may be that Multicharts does not do what I was trying to get it to do? Classic.

It is important to note that since my first post, this has changed.

MultiCharts 7 was released a while back, and it does have discretionary trading and a DOM.

Mike

We're here to help: just ask the community or contact our Help Desk

Quick Links: Change your Username or Register as a Vendor


For the best trading education, watch our webinars
Searching for trading reviews? Review this list


Lifetime Elite Membership: Sign-up for only $149 USD
Receive exclusive offers from our Site Sponsors: Browse Offers
Report problems with the site: Using the NexusFi changelog thread
Follow me on Twitter Visit my NexusFi Trade Journal Started this thread Reply With Quote
(login for full post details)
  #43 (permalink)
 ehlaban 
Netherlands
 
Experience: Advanced
Platform: Ensign, Multicharts
Trading: SP500
Posts: 91 since Nov 2009
Thanks Given: 66
Thanks Received: 57



GaryD View Post
You just made me laugh out loud at myself. I had downloaded Multicharts to play with it awhile back, but had a hard time figuring it out and decided it was not worth the hassle to re-learn software when I am very happy with NT (except for the backtesting flaw I am reading about, and have experienced on many occasions). Now I see that the reason I was having trouble may be that Multicharts does not do what I was trying to get it to do? Classic.

Gary, can you explain or point me to some thread where i can read more about the backtesting flaw you mentioned?

Reply With Quote
(login for full post details)
  #44 (permalink)
 
spinnybobo's Avatar
 spinnybobo 
Crete, IL/USA
 
Experience: Intermediate
Platform: NinjaTrader, Mt4
Broker: Tradestation/Tradestation, NinjaTrader, FXCM and Tallinex
Trading: ES, CL, EUR/USD, TF
Posts: 173 since Aug 2009
Thanks Given: 105
Thanks Received: 61

HI Mike

great video. thank you. I was thinking of trying out Multicharts and was wondering if you think it can handle something like this for ES:

take current date say, jan 01, 2010
then find which futures contract would be the main contract that is trading. in this case, it is march 2010
take current date of ES march 2010 minus ES june 2010 (both on the current date) //basically the difference of current to the next month
then if march > 0 print a green dot in bottom pane for that day. If <= 0 then print grey dot

So, it would have to do this for each historical bar, so I could see the spx, or dow, or any chart, and the bottom indicator would be based soley on historical ES futures contracts going back to 1997 daily data.
not sure if you have to add all that data to the chart: 4 contracts per year for 14 years is 54 data series. I would of course import all of that, but not sure if it can just "lookup" what it needs, or if it needs to actually get added to the chart.

Basically, this is an indicator that shows demand in the front month futures contract which some say is a bullish sign.
I have noticed that there is currently a premium in the current march ES contract right now compared to June. This has been going on for a while, but was not during the crash of 2008. So, I wanted to go back in time and see how it looks on a chart and see how accurate this condition is.

Not sure if this sounds like it would be possible, and it if is, would a .dll or outside code be needed?
What I like so far about Mulitcharts, is it sounds like it is very easy to import data, there is an abundance of easy language tutorials out there, plus all of those extra features you pointed out in the video.

Also, do you feel like you have to use a custom genetic optimizer in Multicharts? You said it is way better than NinjaTrader, however, on NinjaTrader, you use a custom one.

thanks
Spencer

Follow me on Twitter Reply With Quote
(login for full post details)
  #45 (permalink)
 
Big Mike's Avatar
 Big Mike 
Manta, Ecuador
Site Administrator
Developer
Swing Trader
 
Experience: Advanced
Platform: Custom solution
Broker: IBKR
Trading: Stocks & Futures
Posts: 50,248 since Jun 2009
Thanks Given: 33,111
Thanks Received: 101,368

With MultiCharts you use custom contracts or continuous contracts, so I don't see why it would be any problem.

Mike

We're here to help: just ask the community or contact our Help Desk

Quick Links: Change your Username or Register as a Vendor


For the best trading education, watch our webinars
Searching for trading reviews? Review this list


Lifetime Elite Membership: Sign-up for only $149 USD
Receive exclusive offers from our Site Sponsors: Browse Offers
Report problems with the site: Using the NexusFi changelog thread
Follow me on Twitter Visit my NexusFi Trade Journal Started this thread Reply With Quote
The following user says Thank You to Big Mike for this post:
(login for full post details)
  #46 (permalink)
travelboysteve
Orange County
 
Posts: 6 since Dec 2012
Thanks Given: 1
Thanks Received: 1

This and many other reason are steering me from TS platform to Multicharts,..just sayin,.....

Reply With Quote
(login for full post details)
  #47 (permalink)
 
cory's Avatar
 cory 
virginia
the coin hunter
 
Experience: Intermediate
Platform: ninja
Trading: NQ
Posts: 6,096 since Jun 2009
Thanks Given: 877
Thanks Received: 8,086


travelboysteve View Post
This and many other reason are steering me from TS platform to Multicharts,..just sayin,.....

but he has moved on to SierraChart and in process of building his own trading platform.

Reply With Quote
(login for full post details)
  #48 (permalink)
travelboysteve
Orange County
 
Posts: 6 since Dec 2012
Thanks Given: 1
Thanks Received: 1

yep,....knew that by his profile,..I just don't have time for that kind of thing,.....
Tradestation has been good for me to build my knowledge for what I need, but I am really thinking I don't want to pay unnecessary fees any longer just to have a platform, much less the data too,....


I wish I did have more time to tinker,......I've been relegated to swing trading for awhile, but it is suiting me much better these days.
Less stress

Reply With Quote
(login for full post details)
  #49 (permalink)
 ilu007 
New York + US
 
Experience: Intermediate
Platform: MultiCharts
Trading: Indian Stocks
Posts: 37 since Aug 2015
Thanks Given: 10
Thanks Received: 2

Anyone have a link to download this videos?


Big Mike View Post
In this video I conducted a head-to-head comparison of MultiCharts and NinjaTrader evaluating which performed better for backtesting and optimization.

The data was provided by IQFeed, for ES S&P 500, 5-minute bars over a period of 2 years (3/22/2008 to 3/22/2010). RTH market hours were used. Where possible, every setting was exactly duplicated in both NinjaTrader and MultiCharts.

The latest version of both platforms was used:
- MultiCharts 6.0 beta 2
- NinjaTrader 7 beta 11

Before we begin, you need to know a few things. First, if I made any mistakes here it was not intentional and if you should feel free to correct me. Second, this video and the below post summarizes how I feel. Keyword being "I". Each trader has their own method and everyone has their own ideas of what is important and what isn't. I've focused on what I know, and what is important to me. It may have little relevance to you, or you may find that things I have left out that mean nothing to me in fact mean much to you.

Here is the video comparison, remember to watch in HD mode and full screen for best viewing:


Here is the MultiCharts EasyLanguage code for the sample backtest (25 lines of code):
 
Code
                            
inputs:

    
ma1len    ),
    
ma2len    34 ),
    
ma3len    55 ),
    
ma4len    ),
    
ccilen    14 );
    
vars:
    
ma1v    ),
    
ma2v    ),
    
ma3v    ),
    
ma4v    ),
    
cciv    );
    
ma1v    Average(Closema1len);
ma2v    XAverage(Closema2len);
ma3v    WAverage(Closema3len);
ma4v    Average(ma1v+ma2v+ma3vma4len);
cciv    CCI(ccilen);

condition1 ma4v ma4v[1] and cciv 0;
condition2 ma4v ma4v[1] and cciv 0;

if 
condition1 then Buy 1 Contract Next Bar At Market;
if 
condition2 then Sellshort 1 Contract Next Bar At Market
Here is the NinjaTrader NinjaScript code for the sample backtest (105 lines of code):
 
Code
                            
#region Using declarations

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Data;
using NinjaTrader.Indicator;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Strategy;
#endregion

// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
    
/// <summary>
    /// Enter the description of your strategy here
    /// </summary>
    
[Description("nexusfi.com (formerly BMT)test")]
    public class 
nexusfi.com (formerly BMT)test Strategy
    
{
        private 
int    ma1len    9;
        private 
int ma2len    34;
        private 
int ma3len    55;
        private 
int ma4len     9;
        private 
int ccilen    14;
        
        private 
DataSeries ma4vds;

        private 
double ma1v,ma2v,ma3v,ma4v,ma4v1,cciv;
            
        
/// <summary>
        /// This method is used to configure the strategy and is called once before any strategy method is called.
        /// </summary>
        
protected override void Initialize()
        {
            
CalculateOnBarClose true;
            
            
ma4vds    = new DataSeries(this);
        }

        
/// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        
protected override void OnBarUpdate()
        {
            if (
CurrentBar 2) return;
            
            
            
ma1v    SMA(CloseMA1len)[0];
            
ma2v    EMA(CloseMA2len)[0];
            
ma3v    WMA(CloseMA3len)[0];
            
            
ma4vds.Set(ma1v ma2v ma3v);
            
            
ma4v1    ma4v;
            
ma4v    SMA(ma4vdsMA4len)[0];
            
            
cciv    CCI(CCIlen)[0];
            
            
            if (
ma4v ma4v1 && cciv 0EnterLong();
            if (
ma4v ma4v1 && cciv 0EnterShort();
        }

        
#region Properties
        
[Description("")]
        [
GridCategory("Parameters")]
        public 
int MA1len
        
{
            
get { return ma1len; }
            
set ma1len Math.Max(1value); }
        }
        [
Description("")]
        [
GridCategory("Parameters")]
        public 
int MA2len
        
{
            
get { return ma2len; }
            
set ma2len Math.Max(1value); }
        }
        [
Description("")]
        [
GridCategory("Parameters")]
        public 
int MA3len
        
{
            
get { return ma3len; }
            
set ma3len Math.Max(1value); }
        }
        [
Description("")]
        [
GridCategory("Parameters")]
        public 
int MA4len
        
{
            
get { return ma4len; }
            
set ma4len Math.Max(1value); }
        }
        [
Description("")]
        [
GridCategory("Parameters")]
        public 
int CCIlen
        
{
            
get { return ccilen; }
            
set ccilen Math.Max(1value); }
        }
        
#endregion
    
}

With the NinjaTrader test I ran it a second time in the video, as I noticed the first time I left "Exit on close" set to true. By default, MultiCharts does not exit on close. So I re-ran NT's backtest with exit on close to false to try to duplicate everything as closely as possible. The results below are based on "pass 2" in the NinjaTrader test.

My rig is a Core i7 920 overclocked to 4ghz with 12GB of ram, hardware RAID 3Ware 9690SA with (4) 750GB drives in a RAID 0+1, running Windows 7 x64. No antivirus and minimal background processes were running during the test.

Raw execution speed:
MultiCharts 6.0 beta 2: 6m 50s
NinjaTrader 7 beta 11: 6m 55s

Platform features:
MultiCharts has IOG (intrabar order generation) which allows it to submit orders intrabar. This is equivalent to NinjaTrader's "calculate on bar close = false", but without all the nasty side effects and repercussions that one must suffer through when using COBC=false in NT. An example would be on a 5-minute bar, MultiCharts can look intrabar and see that your condition (in this case, our moving averages and CCI) were met intrabar (say on minute 3 out of 5) and submit an order without waiting for the bar to close.

NinjaTrader is not capable of submitting intrabar orders in backtesting. Live strategies can submit intrabar orders using calculate bar close = false. Trying to simulate IOG within a backtestable strategy in NinjaTrader requires writing custom code to use MTF and try to work-around the problem, and it adds a great deal of complexity, plus MTF doesn't even work in current beta's of NinjaTrader.

MultiCharts also has Bar Magnifier. This allows MultiCharts to more accurately determine the OHLC (open/high/low/close) for each bar. If you are using a 5 minute bar but have enabled Bar Magnifier, you can select an improved resolution such as 1 minute, or even 1 tick, so you can accurately know the OHLC order. Why is this important? Without it knowing the OHLC, if your strategy enters on the Close of the prior bar and has a profit target that falls within the High of the current bar but also has a stop that falls within the low of the current bar, how is the platform to know if the trade was a winner or loser? Was the high made before the low, or vice versa? One condition would cause a winner, and one condition would cause a loser. MultiCharts has the solution with Bar Magnifier. With bar magnifier turned off, MultiChart's is set to assume the worst-case scenario, which is far better than assuming the best case and then being in for a rude awakening when running the strategy live.

NinjaTrader assumes the best case scenario. If the high of the bar is higher than your profit target, then your profit target will be met. The only way to try to work around this is to again develop a custom complex strategy that uses MTF and submits orders to a smaller time frame but manages entry signals from the larger original time frame.

MultiCharts has far superior reporting capabilities. The backtest performance report is far more detailed and has loads more information. You can also export it to Excel with far more detail than what NinjaTrader offers in its export.

NinjaTrader does have one nice feature MultiCharts is lacking, the ability to narrow the report down by hour (say 8am-9am) so you can see what time periods during the day your strategy performs at its best and at its worse. Nicely done. I'll be making a feature request to MultiCharts to add this.

The language behind the strategy:
All the fancy features in the world won't help if your platform simply cannot be made to do what you want. MultiCharts uses EasyLanguage, which is obviously widely used by TradeStation. On the other side of the ring is NinjaTrader which uses C#.

I've always been a programmer and have learned many languages, all self taught. But I don't think I am the norm when it comes to successful traders. And in fact, I think for the most part a computer geek that knows how to program probably makes a poor trader, because their time is spent wrapped up in code and not in psychology -- where the real money is at

Alright, so EasyLanguage is just that - easy. I've picked up all the basics in about two days. It's intuitive. In fact, it's so intuitive I've often be struck and just how easy it is. Not easy as in simple, but easy as in -- in just works!

On the other hand, C# is incredibly powerful. If you want your Ninja strategy to use neural networks, land on the moon, cook you breakfast and not even break a sweat, then C# is the way to go.

But what if you could have both? In essence, MultiCharts lets you do both because you can use external DLL's which means your EasyLanguage indicators can call and reference C# DLL's!

I know that there is a die hard debate of EasyLanguage vs. C#. But having used both now, I don't think there is a clear winner. The right choice will be decided by what the individual traders needs are and what they are trying to accomplish. My final advice on this topic is this: more complex is rarely better.

Usefulness of backtest, which is what it's all about, right?:
With MultiChart's IOG (intrabar order generation) and Bar Magnifier, I find myself only interested in the MultiChart's backtest results.

Since NinjaTrader has neither feature, you are left with either accepting known-faulty results, or trying to write an extremely complex MTF strategy to work around these limitations and get you to the end result you want. Writing MTF strategies is very complex, and doesn't even work in the latest beta's of NinjaTrader.

Final comments:
In my opinion, MultiChart's is the clear victor. But, I am not happy that MultiChart's soundly trounced NinjaTrader. I own NinjaTrader and have been a diehard fan. But in the last two years the NT7 snafu has just left me flabbergasted and sickened. There are only so many times you can hear "we're unable to duplicate that" and be treated like you are the only person experiencing problems before you just give up. The same is true of "we'll add that to our list of considerations". After two years of waiting, NT7 still doesn't address half of the things I felt were important, and instead adds dozens of things that were meaningless to me, and even removes some functionality that used to be there!

Competition is good, and I think that NT7 has been a very humbling experience for the NinjaTrader executive team. If they can recover, then they hopefully won't make the same mistakes again. The competition is catching up quickly, and MultiCharts 6.0 is just the beginning. MultiCharts plans to release v7.0 of their product around the end of June 2010, and TradeStation 9 is also coming soon. No one is standing still, and in the end, traders win.

You can find more discussion on MultiCharts here:


You can find more discussion on NinjaTrader here:


I encourage and welcome you to post your own reviews. I have focused on what is important to me so I am biased in that regard, and you will focus on what is important to you. Hopefully with enough information people can make some education decisions without having to go through all the leg work.

Mike


Reply With Quote
(login for full post details)
  #50 (permalink)
 
slickiam's Avatar
 slickiam 
Tomsk, Russia
 
Experience: Beginner
Platform: custom
Trading: gold
Posts: 273 since Dec 2010
Thanks Given: 133
Thanks Received: 435



ilu007 View Post
Anyone have a link to download this videos?


bump

Scientia Libertas Prosperitas
Reply With Quote
The following user says Thank You to slickiam for this post:





Last Updated on June 12, 2016


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts