VIDEO: MultiCharts vs. NinjaTrader strategy backtesting and optimization - futures io
futures io



VIDEO: MultiCharts vs. NinjaTrader strategy backtesting and optimization


Discussion in MultiCharts

Updated
      Top Posters
    1. looks_one Big Mike with 18 posts (42 thanks)
    2. looks_two cbritton with 3 posts (1 thanks)
    3. looks_3 spinnybobo with 3 posts (0 thanks)
    4. looks_4 Fat Tails with 3 posts (1 thanks)
      Best Posters
    1. looks_one aviat72 with 4 thanks per post
    2. looks_two Big Mike with 2.3 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 42,384 views
    2. thumb_up 49 thanks given
    3. group 23 followers
    1. forum 53 posts
    2. attach_file 0 attachments




Welcome to futures io: the largest futures trading community on the planet, with well over 125,000 members
  • Genuine reviews from real traders, not fake reviews from stealth vendors
  • Quality education from leading professional traders
  • We are a friendly, helpful, and positive community
  • We do not tolerate rude behavior, trolling, or vendors advertising in posts
  • We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community.  It's free and simple.

-- Big Mike, Site Administrator

(If you already have an account, login at the top of the page)

 
Search this Thread
 

VIDEO: MultiCharts vs. NinjaTrader strategy backtesting and optimization

(login for full post details)
  #1 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

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("futures.io (formerly BMT)test")]
    public class 
futures.io (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

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote

Journal Challenge April 2021 results (now extended!):
Competing for $1800 in prizes from Jigsaw
looks_oneMaking a Living with the Microsby sstheo
(201 thanks from 24 posts)
looks_twoSalao's Journalby Salao
(53 thanks from 11 posts)
looks_3Deetee’s DAX Trading Journal (time based)by Deetee
(38 thanks from 18 posts)
looks_4Learning to Profit - A journey in algorithms and optionsby Syntax
(35 thanks from 15 posts)
looks_5Maybe a little bit different journalby Malykubo
(14 thanks from 16 posts)
 
Best Threads (Most Thanked)
in the last 7 days on futures io
Big Mike in Ecuador
76 thanks
The Crude Dude Oil Trading System
72 thanks
Help improve the FIO community
35 thanks
futures io site changelog and issues/problem reporting
27 thanks
The New Micro Contract - MICRO BITCOIN coming May 2021
27 thanks
 
(login for full post details)
  #3 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


Correction to video regarding MultiCharts Bar Magnifier. Around 25m 10s on the video I say Bar Magnifier works only on time based charts. That's not true, it works on any "Regular" chart type, which MultiCharts defines as Tick, Volume, Range, plus all the time based charts.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #4 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

Why are the backtest results different in NinjaTrader vs MultiCharts?

I took a look at the SMA, EMA, WMA and CCI code built-in to both platforms to see if there was a difference causing them to trigger different signals.

MultiCharts Average (SMA):
 
Code
                            
inputs
    
PriceValuenumericseries ), 
    
Lennumericsimple ) ;                                                

Average SummationPriceValueLen ) / Len 
MultiCharts XAverage (EMA):
 
Code
                            
inputs
    
PriceValuenumericseries ), 
    
Lennumericsimple ) ;                                             

variables
    
var0/ ( Len ) ) ;

if 
CurrentBar 1 then
    XAverage 
PriceValue
else
    
XAverage XAverage[1] + var0 * ( PriceValue XAverage[1] ) ; 
MultiCharts WAverage (WMA):
 
Code
                            
inputs
    
PriceValuenumericseries ), 
    
Lennumericsimple ) ;                                                

variables
    
var0), 
    
var1) ;

var0 ;
for 
Value1 0 to Len 
    begin
    var0 
var0 + ( Len Value1 ) * PriceValue[Value1] ;
    
end ;
var1 = ( Len ) * Len .5 ;
WAverage var0 var1 
NinjaTrader SMA:
 
Code
                            
// 
// Copyright (C) 2006, NinjaTrader LLC <www.ninjatrader.com>.
// NinjaTrader reserves the right to modify or overwrite this NinjaScript component with each release.
//

#region Using declarations
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel;
using System.Xml.Serialization;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
#endregion

// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    
/// <summary>
    /// The SMA (Simple Moving Average) is an indicator that shows the average value of a security's price over a period of time.
    /// </summary>
    
[Description("The SMA (Simple Moving Average) is an indicator that shows the average value of a security's price over a period of time.")]
    public class 
SMA Indicator
    
{
        
#region Variables
        
private int        period    14;
        
#endregion

        /// <summary>
        /// This method is used to configure the indicator and is called once before any bar data is loaded.
        /// </summary>
        
protected override void Initialize()
        {
            
Add(new Plot(Color.Orange"SMA"));

            
Overlay true;
        }

        
/// <summary>
        /// Called on each bar update event (incoming tick).
        /// </summary>
        
protected override void OnBarUpdate()
        {
            if (
CurrentBar == 0)
                
Value.Set(Input[0]);
            else
            {
                
double last Value[1] * Math.Min(CurrentBarPeriod);

                if (
CurrentBar >= Period)
                    
Value.Set((last Input[0] - Input[Period]) / Math.Min(CurrentBarPeriod));
                else
                    
Value.Set((last Input[0]) / (Math.Min(CurrentBarPeriod) + 1));
            }
        }

        
#region Properties
        /// <summary>
        /// </summary>
        
[Description("Numbers of bars used for calculations")]
        [
GridCategory("Parameters")]
        public 
int Period
        
{
            
get { return period; }
            
set period Math.Max(1value); }
        }
        
#endregion
    
}

NinjaTrader EMA:
 
Code
                            
// 
// Copyright (C) 2006, NinjaTrader LLC <www.ninjatrader.com>.
// NinjaTrader reserves the right to modify or overwrite this NinjaScript component with each release.
//

#region Using declarations
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel;
using System.Xml.Serialization;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
#endregion

// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    
/// <summary>
    /// Exponential Moving Average. The Exponential Moving Average is an indicator that shows the average value of a security's price over a period of time. When calculating a moving average. The EMA applies more weight to recent prices than the SMA.
    /// </summary>
    
[Description("The Exponential Moving Average is an indicator that shows the average value of a security's price over a period of time. When calculating a moving average. The EMA applies more weight to recent prices than the SMA.")]
    public class 
EMA Indicator
    
{
        
#region Variables
        
private int            period        14;
        
#endregion

        /// <summary>
        /// This method is used to configure the indicator and is called once before any bar data is loaded.
        /// </summary>
        
protected override void Initialize()
        {
            
Add(new Plot(Color.Orange"EMA"));

            
Overlay                true;
        }
        
        
/// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        
protected override void OnBarUpdate()
        {
            
Value.Set(CurrentBar == Input[0] : Input[0] * (2.0 / (Period)) + (- (2.0 / (Period))) * Value[1]);
        }

        
#region Properties
        /// <summary>
        /// </summary>
        
[Description("Numbers of bars used for calculations")]
        [
GridCategory("Parameters")]
        public 
int Period
        
{
            
get { return period; }
            
set period Math.Max(1value); }
        }
        
#endregion
    
}

NinjaTrader WMA:
 
Code
                            
// 
// Copyright (C) 2006, NinjaTrader LLC <www.ninjatrader.com>.
// NinjaTrader reserves the right to modify or overwrite this NinjaScript component with each release.
//

#region Using declarations
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel;
using System.Xml.Serialization;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
#endregion

// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    
/// <summary>
    /// The WMA (Weighted Moving Average) is a Moving Average indicator that shows the average value of a security's price over a period of time with special emphasis on the more recent portions of the time period under analysis as opposed to the earlier.
    /// </summary>
    
[Description("The WMA (Weighted Moving Average) is a Moving Average indicator that shows the average value of a security's price over a period of time with special emphasis on the more recent portions of the time period under analysis as opposed to the earlier.")]
    public class 
WMA NinjaTrader.Indicator.Indicator
    
{
        
#region Variables
        
private int        period    14;
        
#endregion

        /// <summary>
        /// This method is used to configure the indicator and is called once before any bar data is loaded.
        /// </summary>
        
protected override void Initialize()
        {
            
Add(new Plot(Color.OrangeName));

            
Overlay                true;
        }

        
/// <summary>
        /// Called on each bar update event (incoming tick)
        /// </summary>
        
protected override void OnBarUpdate()
        {
            if (
CurrentBar == 0)
                
Value.Set(Input[0]);
            else
            {
                
int        back    Math.Min(Period 1CurrentBar);
                
double    val        0;
                
int        weight    0;
                for (
int idx backidx >=0idx--)
                {
                    
val        += (idx 1) * Input[back idx];
                    
weight    += (idx 1);
                }
                
Value.Set(val weight);
            }
        }

        
#region Properties
        /// <summary>
        /// </summary>
        
[Description("Numbers of bars used for calculations")]
        [
GridCategory("Parameters")]
        public 
int Period
        
{
            
get { return period; }
            
set period Math.Max(1value); }
        }
        
#endregion
    
}

SMA and WMA look the same, the EMA method looks very slightly different.

Here is the CCI:

MultiCharts CCI:
 
Code
                            
inputs
    
Lennumericsimple ) ;                                                 

variables:     
    
var0), 
    
var1), 
    
var2) ;

var0 AverageCLen ) ;                                                  
var1 ;
for 
var2 0 to Len 
    begin
    var1 
var1 AbsValue( ( )[var2] - var0 ) ;
    
end ;
var1 var1 Len ;

if 
var1 0 then
    CCI 
0
else
    
CCI = ( var0 ) / ( .015 var1 ) ; 
NinjaTrader CCI:
 
Code
                            
// 
// Copyright (C) 2006, NinjaTrader LLC <www.ninjatrader.com>.
// NinjaTrader reserves the right to modify or overwrite this NinjaScript component with each release.
//

#region Using declarations
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel;
using System.Xml.Serialization;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
#endregion

// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
    
/// <summary>
    /// The Commodity Channel Index (CCI) measures the variation of a security's price from its statistical mean. High values show that prices are unusually high compared to average prices whereas low values indicate that prices are unusually low.
    /// </summary>
    
[Description("The Commodity Channel Index (CCI) measures the variation of a security's price from its statistical mean. High values show that prices are unusually high compared to average prices whereas low values indicate that prices are unusually low.")]
    public class 
CCI Indicator
    
{
        
#region Variables
        
private int            period        14;
        
#endregion

        /// <summary>
        /// This method is used to configure the indicator and is called once before any bar data is loaded.
        /// </summary>
        
protected override void Initialize()
        {
            
Add(new Plot(Color.Orange"CCI"));
            
Add(new Line(Color.DarkGray200"Level 2"));
            
Add(new Line(Color.DarkGray100"Level 1"));
            
Add(new Line(Color.DarkGray0"Zero line"));
            
Add(new Line(Color.DarkGray, -100"Level -1"));
            
Add(new Line(Color.DarkGray, -200"Level -2"));
        }

        
/// <summary>
        /// Calculates the indicator value(s) at the current index.
        /// </summary>
        
protected override void OnBarUpdate()
        {
            if (
CurrentBar == 0)
                
Value.Set(0);
            else
            {
                
double mean 0;
                for (
int idx Math.Min(CurrentBarPeriod 1); idx >= 0idx--)
                    
mean += Math.Abs(Typical[idx] - SMA(TypicalPeriod)[0]);
                
Value.Set((Typical[0] - SMA(TypicalPeriod)[0]) / (mean == : (0.015 * (mean Math.Min(PeriodCurrentBar 1)))));
            }
        }

        
#region Properties
        /// <summary>
        /// </summary>
        
[Description("Numbers of bars used for calculations")]
        [
GridCategory("Parameters")]
        public 
int Period
        
{
            
get { return period; }
            
set period Math.Max(1value); }
        }
        
#endregion
    
}

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #5 (permalink)
 cbritton 
Atlanta, Georgia
 
Experience: Intermediate
Platform: NT
Broker: DDT
Trading: ZN, ZB
 
cbritton's Avatar
 
Posts: 224 since Mar 2010
Thanks: 152 given, 249 received

Mike,

Well done. You are slowly convincing me that I should consider MC, provided I can get my favorite indicators converted.

I know backtesting is only one aspect of the platforms, so how do you feel about comparing them on a live sim account?

Regards,
-C

“Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat.” - Sun Tzu
Reply With Quote
The following user says Thank You to cbritton for this post:
 
(login for full post details)
  #6 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

Sorry the audio quality of the video is poor. I was real tired (can't you tell?? lol) and it seems I was whispering. I know you can hear it volume wise, but... anyway, I'll do better next time.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #7 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


cbritton View Post
Mike,

Well done. You are slowly convincing me that I should consider MC, provided I can get my favorite indicators converted.

I know backtesting is only one aspect of the platforms, so how do you feel about comparing them on a live sim account?

Regards,
-C

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).

MC 7 will have a DOM. It remains to be seen how "feature complete" their discretionary trading/sim engine/dom will be compared to NinjaTrader, but based on how well the team has done in other aspects, I have very high hopes.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
The following 2 users say Thank You to Big Mike for this post:
 
(login for full post details)
  #8 (permalink)
 cbritton 
Atlanta, Georgia
 
Experience: Intermediate
Platform: NT
Broker: DDT
Trading: ZN, ZB
 
cbritton's Avatar
 
Posts: 224 since Mar 2010
Thanks: 152 given, 249 received


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).

MC 7 will have a DOM. It remains to be seen how "feature complete" their discretionary trading/sim engine/dom will be compared to NinjaTrader, but based on how well the team has done in other aspects, I have very high hopes.

Mike

I reread my question and I think I misstated, so let me revise it.

What I mean is, if you take a strategy in NT7 and an equivalent on in MC, say the ones you just wrote, and used them to autotrade on a live sim account, but use them both on the same day with the same instrument and chart type, what would the results be? In theory, you should get the same fills, right? I would like to know if something works with minimum fuss or if there were some drawbacks or caveats to making it run properly. I would love to help test this, but I don't have NT7.

Regards,
-C

“Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat.” - Sun Tzu
Reply With Quote
 
(login for full post details)
  #9 (permalink)
 jdfagan 
Pacifica, CA
 
Experience: Advanced
Platform: AmiBroker, TradeStation, NinjaTrader
Broker: Options House
Trading: Futures, Stocks
 
jdfagan's Avatar
 
Posts: 34 since Jun 2009
Thanks: 68 given, 44 received

Thanks for the comparisons Mike. I actually went from TradeStation 8.x to NinjaTrader 6.5 back in early 2009. I do love working with C# compared to EasyLanguage but I do see some of NinjaTrader's drawbacks - particularly in backtesting engine - which is where I spend most of my time analyzing as I use fully 100% automation. Its definitely hard to trust a system when the backtesting engine isn't as accurate as you'd like - for instance, choosing best case trade over a worst case in an ambiguous situation as you described.


Quoting 
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.

I found this an important point that seemed to really make you move away from NinjaTrader and towards MultiCharts. Could you elaborate on what exactly are the "nasty side effects and repercussions that one must suffer through when using COBC=false in NT"? I do have this set to false in my strategies but I'm wondering what the ill consequences of doing this are?


Quoting 
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.

Suppose one wrote a re-usable abstract strategy class that allowed user to define the lower more fine grained time frame used (purely for execution purposes) in relation to your higher timeframe that ran for generating the signals. If such a reusable class was written that helped alleviate the pain for writing strategies that were more accurate (backtesting wise) in NinjaTrader, would this be enough to have you use NinjaTrader again?

Thanks for the insightful post.

Cheers,

JD

Follow me on Twitter Reply With Quote
 
(login for full post details)
  #10 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received



cbritton View Post
I reread my question and I think I misstated, so let me revise it.

What I mean is, if you take a strategy in NT7 and an equivalent on in MC, say the ones you just wrote, and used them to autotrade on a live sim account, but use them both on the same day with the same instrument and chart type, what would the results be? In theory, you should get the same fills, right? I would like to know if something works with minimum fuss or if there were some drawbacks or caveats to making it run properly. I would love to help test this, but I don't have NT7.

Regards,
-C

Results should be the same, yes. I don't believe many users fault NinjaTrader for its real-time strategy handling, it is its historical/backtesting that has all the problems.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io 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)
  #11 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


jdfagan View Post
Thanks for the comparisons Mike. I actually went from TradeStation 8.x to NinjaTrader 6.5 back in early 2009. I do love working with C# compared to EasyLanguage but I do see some of NinjaTrader's drawbacks - particularly in backtesting engine - which is where I spend most of my time analyzing as I use fully 100% automation. Its definitely hard to trust a system when the backtesting engine isn't as accurate as you'd like - for instance, choosing best case trade over a worst case in an ambiguous situation as you described.

I found this an important point that seemed to really make you move away from NinjaTrader and towards MultiCharts. Could you elaborate on what exactly are the "nasty side effects and repercussions that one must suffer through when using COBC=false in NT"? I do have this set to false in my strategies but I'm wondering what the ill consequences of doing this are?

Suppose one wrote a re-usable abstract strategy class that allowed user to define the lower more fine grained time frame used (purely for execution purposes) in relation to your higher timeframe that ran for generating the signals. If such a reusable class was written that helped alleviate the pain for writing strategies that were more accurate (backtesting wise) in NinjaTrader, would this be enough to have you use NinjaTrader again?

Thanks for the insightful post.

Cheers,

JD

Hi JD,

The list of problems using COBC false is very long and not easy to explain in a single post, it would be like summarizing years of headaches into a few lines of text . Most of the problems are due to DataSeries synchronization and order handling. If you are a C# programmer and you've not run into any problems, more power to you.

Yes you could develop a class if you want. With C# people always ask "can I do this?". Sure, you can do anything in C#. You can write your own trading platform in NinjaScript if you want. The "can" isn't the problem. I got tired of spending all my time creating complex code to work around issues the platform should handle directly.

At this time, NinjaTrader has lost my confidence. I also see NT7 as a failure and am not at all impressed by it. It's just my opinion. Many other people think NT7 is great. Like trading itself, there is no clear right or wrong answer. You use what works for you.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #12 (permalink)
 cbritton 
Atlanta, Georgia
 
Experience: Intermediate
Platform: NT
Broker: DDT
Trading: ZN, ZB
 
cbritton's Avatar
 
Posts: 224 since Mar 2010
Thanks: 152 given, 249 received


Big Mike View Post
...
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).
...

Mike,

Was this data pulled from IQFeed during the backtest or did you have it stored on you pc for testing? I'm looking at doing some back tests, but I don't have much in the way for historical data for NT6.5 other than what's available on this site. I'm grateful for that, but I would like more data to test with so I'm looking for options: subscription to IQFeed, something else...

Thanks,
-C

“Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat.” - Sun Tzu
Reply With Quote
 
(login for full post details)
  #13 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


cbritton View Post
Mike,

Was this data pulled from IQFeed during the backtest or did you have it stored on you pc for testing? I'm looking at doing some back tests, but I don't have much in the way for historical data for NT6.5 other than what's available on this site. I'm grateful for that, but I would like more data to test with so I'm looking for options: subscription to IQFeed, something else...

Thanks,
-C

It was downloaded via each platforms interface to IQfeed.

Minute data is not too hard to find 1 or 2 years for free. Tick data is much harder, but there is 5 years of tick data for ES and 1 year of tick data for CL in the Elite section (sticky post on top). I have other instruments too but haven't posted them, ie 6E or GC.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io 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)
  #14 (permalink)
piersh
California
 
 
Posts: 87 since Jun 2009
Thanks: 5 given, 119 received


Big Mike View Post
SMA and WMA look the same, the EMA method looks very slightly different.

i think NT's EMA is identical to MC's. a little algebra will get you this:

 
Code
                            
double var0 2.0 / (period);

if (
CurrentBar == 0)
    
Value.Set (Input [0]);
else
    
Value.Set (Value[1] + var0 * (Input[0] - Value[1])); 

Reply With Quote
 
(login for full post details)
  #15 (permalink)
bkout
Austin, TX
 
 
Posts: 1 since Aug 2009
Thanks: 0 given, 0 received

Hi Mike, First post here. Thanks for doing the test on Ninja vs. MultiCharts. I have been using Ninja and am doing a trial with MC and probably will switch. Unless I missed it you didn't figure out why the results were different on your tests. It looked to me like you left the default value of 20 bars required in the setup for Ninja. This is one of the things that always seems annoying/dumb/(insert word of choice) about Ninja backtest/optimizations. It should be designed so that you tell it when you want it to be able to take the first trade (like at the start of your two year period) and the program just figures out how much data it needs to have the indicators get up and running but nooooooo! you have to figure out more than the number of bars that you might need for the indicators to be working, put in your guess as to what that date works out to be and then to be sure run the test a few times looking at the actual trades to see that you got the first trade in your time period BUT not the one before that. Now my experience is with the "old" Ninja so if this has been corrected please accept my apology but otherwise it might explain at least part of the difference in your results -- see when each platform took the first trade with the system parameters that had the longest number of bars back required. Then adjust the bars required on the opt setup and the start date in Ninja -- maybe you can get a better match??

Reply With Quote
 
(login for full post details)
  #16 (permalink)
 zulutrader 
NY, NY
 
 
Posts: 9 since May 2010

excellent information Big Mike!

I personally prefer Ninjatrader but you argument is very logical and appealing

Reply With Quote
 
(login for full post details)
  #17 (permalink)
 spinnybobo 
Crete, IL/USA
 
Experience: Intermediate
Platform: NinjaTrader, Mt4
Broker: Tradestation/Tradestation, NinjaTrader, FXCM and Tallinex
Trading: ES, CL, EUR/USD, TF
 
spinnybobo's Avatar
 
Posts: 181 since Aug 2009
Thanks: 103 given, 56 received

Mike

do you use 6.5 or 7 for the dom's in Ninja? I thought I heard of people having problems with dom's or ATM strategies in 7

thanks
Spencer

Follow me on Twitter Reply With Quote
 
(login for full post details)
  #18 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


spinnybobo View Post
Mike

do you use 6.5 or 7 for the dom's in Ninja? I thought I heard of people having problems with dom's or ATM strategies in 7

thanks
Spencer

I am back to NT 6.5 because the new NT7 beta's hang on startup for me. NT has tried to help solve it but they say I'm the only one reporting it, and after a few attempts I just gave up and went back to 6.5, since the DOM hasn't changed from 6.5 to 7 it was fine for me.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #19 (permalink)
 Fat Tails 
Market Wizard
Berlin, Europe
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
 
Fat Tails's Avatar
 
Posts: 9,855 since Mar 2010
Thanks: 4,238 given, 26,743 received

Thank you a lot for doing this. I am watching your test of multicharts with great interest.

I have spent an awful lot of time to use and to understand NinjaTrader, but the more I dig into it, the more problems I am running into. There are so many problems that are not solved yet (neither for NT 6.5 nor for NT 7.0) and so many details that they simply do not understand. Just some experiences from the last two days:

-> today 15:20 > NT 7.0 produced a 21 min bar on a 5 min chart (the real-time bar never closed), bar timer just showed 0:00 when connected, not reproducible
-> Eurex session close is at 10:00 PM CET, all datafeeds transmit the close at around 22:05, so you do not catch the close, because it is cut off
-> I had a data hole on my NQ chart, reloading the chart did not help. I needed to delete all NQ data in the data base and then open a chart again
-> NT 6.5/7.0 cannot read daily data from Interactive Brokers for TF, DX or IPE Brent, if you are located East of GMT. IF GMT +2 cannot read US index data either.
-> indicator on indicator problem because they check double values for zero after a recursive series with thousands of bars

I have lost a lot of time with the little daily fights. It is like flying an experimental plane which has instable aerodynamics, and you are at the brink of crashing down at any moment. I have purchased NinjaTrader some time ago and I do not mind the money spent for it. But what matters is the time spent to make it do what it is supposed to do by itself. I guess there is a lot of sunk cost involved, and admitting that it is not what I had hoped for, feels like closing out a losing trade.

Thanks again for your sharing of the NinjaTrader versus Multicharts experience.


Big Mike View Post
SMA and WMA look the same, the EMA method looks very slightly different.
Mike

EMA formula is basically the same, just a different way to assign a value to the first bar..

Reply With Quote
 
(login for full post details)
  #20 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

Fat Tails,

Let's just say I feel very good with my decision to switch to MultiCharts. I don't regret it in the slightest, and I was a hardcore C# programmer right up to the day I learned EasyLanguage. Now personally I don't rely on a lot of indicators in my trading, but I did spend some time working on basic stuff getting it the way I wanted.

I found MultiCharts and EasyLanguage to be ideal for what I needed. 100% rock solid, fast, stable, and easy to accomplish objectives.

MultiCharts is not perfect. I've brought them a few bugs, but they released patches for me practically immediately.

I think for indicator junkies, they won't be as happy with MultiCharts because there are just too many NinjaTrader indicators around that are "whiz-bang" modified, whereas the EasyLanguage indicators are more of the basics. But while the NT boys are off playing with toys, I am trading.

The bottom line is simple: I think anyone that compares the two will find the choice abundantly clear. Whatever their decision is, it shouldn't be a tough one one way or the other.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #21 (permalink)
 Michael.H 
CA
 
Experience: Master
Platform: Marketdelta and Ninja
Broker: Velocity
Trading: NQ
 
Posts: 670 since Apr 2010
Thanks: 64 given, 526 received

Big mike, do you think then that its possible to build an indicator like the gomi volume ladder into multicharts based on its programming capabilities?

Reply With Quote
 
(login for full post details)
  #22 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


Michael.H View Post
Big mike, do you think then that its possible to build an indicator like the gomi volume ladder into multicharts based on its programming capabilities?

More or less anything is possible. Just like C#. I remember someone converted the d9wavelet indicator from sefstrat to MultiCharts --- at first sefstrat thought it would not be possible, but it ended up getting done in a couple of hours and with a lot less code

But in the case of Gomi's work which is really extremely complicated, I don't think you can accomplish it in the native EasyLanguage language. But, you can hook into a DLL file and write it in C# or C++ if you want.

MultiCharts themselves offer custom project work. You might contact them and ask them. But of course get Gomi's permission first to release the Elite code to them

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #23 (permalink)
 spinnybobo 
Crete, IL/USA
 
Experience: Intermediate
Platform: NinjaTrader, Mt4
Broker: Tradestation/Tradestation, NinjaTrader, FXCM and Tallinex
Trading: ES, CL, EUR/USD, TF
 
spinnybobo's Avatar
 
Posts: 181 since Aug 2009
Thanks: 103 given, 56 received

Mike

did you ever think of building your own platform either in C# or perhaps Java? without your extensive knowledge and experience, it might be pretty cool. if you got it the way you wanted, you could always offer the sale of licenses after beta testing.

either that or maybe it could be with the theme of this website and be open source. you could make money through charging for support given by your support team ---kind of like the GNU people

I think it would be cool to have an open source or closed source platform in Java.

at the very least, just wondering if you ever thought about it at least for your own trading?

thanks
Spencer

Follow me on Twitter Reply With Quote
 
(login for full post details)
  #24 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

Sorry, no --- I know my limits, and while I enjoy programming I would rather trade to make money than sell platform licenses to make money.

There are many people here on futures.io (formerly BMT) that have discussed in public that they are already working on new platforms. I hope one day they will join forces

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #25 (permalink)
 Michael.H 
CA
 
Experience: Master
Platform: Marketdelta and Ninja
Broker: Velocity
Trading: NQ
 
Posts: 670 since Apr 2010
Thanks: 64 given, 526 received

Thanks, i actually am not planning on porting his indicator to multicharts.... Just wanted to know its capabilities. I know i/rt uses easylanguage(i think), but its capabilities are much more limited than ninja.

Reply With Quote
 
(login for full post details)
  #26 (permalink)
 syxforex 
British Columbia
 
Experience: Advanced
Platform: NINJA
Broker: ZEN
Trading: Crude
 
Posts: 1,091 since May 2010

Mike,

I like NT7 but I'm starting to see that you just can't trust the damn thing. With the endless beta versions and changes and things being not as they should at every corner, I'm looking for an alternative. Today just has me burning up at DTN IQFeed went into total melt down stupidity mode. I've posted somewhere else about what was going on. It's just too much for me to take, after paying 160usd for the feed, I have less to work with than what I had before.

There isn't much that compares directly with NT for the price point. The professional tools like CQG start up around 1000/month, and goes up from there depending how you outfit it. I'm really surprised that with all the money NT is making, and it's a heck of a lot b/c basically anybody who gets to an advanced stage of retail trading will end up at NT, the last stop before one moves on to professional level charting software. This company is racking in enormous fees through their zenfire relationship. I'm really surprised there isn't a clear standout competitor going toe to toe for some of that. Really surprising because that is one big ole' pie NT is slurping up.

With multicharts it's just not something you really hear a lot about and that cause me to hesitate and rather keep fighting it out with the platform. What I'd like to know is how easy it is to convert indicators from nt to mc, and who can do it and for what price as I'm not a programmer myself. And secondly does Multi allow indicators on indicators as nt7 and mt4 do.

Thanks Mike,

Appreciate your advice in this area.


Big Mike View Post
Fat Tails,

Let's just say I feel very good with my decision to switch to MultiCharts. I don't regret it in the slightest, and I was a hardcore C# programmer right up to the day I learned EasyLanguage. Now personally I don't rely on a lot of indicators in my trading, but I did spend some time working on basic stuff getting it the way I wanted.

I found MultiCharts and EasyLanguage to be ideal for what I needed. 100% rock solid, fast, stable, and easy to accomplish objectives.

MultiCharts is not perfect. I've brought them a few bugs, but they released patches for me practically immediately.

I think for indicator junkies, they won't be as happy with MultiCharts because there are just too many NinjaTrader indicators around that are "whiz-bang" modified, whereas the EasyLanguage indicators are more of the basics. But while the NT boys are off playing with toys, I am trading.

The bottom line is simple: I think anyone that compares the two will find the choice abundantly clear. Whatever their decision is, it shouldn't be a tough one one way or the other.

Mike


Visit my futures io Trade Journal Reply With Quote
 
(login for full post details)
  #27 (permalink)
 mainstream 
Chicago, IL
 
Experience: Master
Platform: Kinetick Ninja Trader <7>
Broker: Ninja & IB
Trading: YM & Equities & Options & Mutual Funds
 
Posts: 175 since Jun 2010
Thanks: 56 given, 87 received

This might be a stupid question, but why not Trade Station? As far as auto trading goes, aren't all the Striker Systems on Trade Station?

Reply With Quote
 
(login for full post details)
  #28 (permalink)
 Fat Tails 
Market Wizard
Berlin, Europe
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
 
Fat Tails's Avatar
 
Posts: 9,855 since Mar 2010
Thanks: 4,238 given, 26,743 received


mainstream View Post
This might be a stupid question, but why not Trade Station? As far as auto trading goes, aren't all the Striker Systems on Trade Station?

As far as I understand -> With TradeStation you are tied to one broker. I do not want to marry a broker, would like to keep some independence, and for various reasons (amongst them capital protection and commissions) I prefer Interactive Brokers

MultiCharts use EasyLanguage as does TradeStation, so all indicators and strategies designed for TradeStation should run on MultiCharts as well.

I am not aware that TradeStation has a superior datafeed or a DOM.


syxforex View Post
There isn't much that compares directly with NT for the price point. The professional tools like CQG start up around 1000/month, and goes up from there depending how you outfit it.

There are probably only few of us that can pay for a decent tool. If it wasn't that expensive, I would like to test the CQG integrated client (uses C# as NinjaTrader, so indicators / strategies can be transplanted easily from NinjaTrader) with X-Trader for executions. CQG comes integrated with MatLab, so it would be a leap forward in trade metrics and backtesting.

I have not found any thread here on CQG, probably most of us do not admit that the investment might pay off.

Reply With Quote
 
(login for full post details)
  #29 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

Fat Tails,

There are a few traders here using CQG, you may wish to start a new thread to solicit feedback if you are curious about them and their opinions.

With regards to MultiCharts vs. TradeStation, I believe MultiCharts wins the automation category hands down. MultiCharts discretionary trading is just now growing up and ready to come out and play, in version 7. There is a discussion on the MC forum about TradeStation 9 vs MultiCharts, because TS9 will introduce code breaking EasyLanguage changes.

Most people on the MC forum said they didn't care. Because MC has evolved over the years to be more than just its EL compatibility, and for years has had superior EL functions compared with TradeStation (and still does, today -- for instance, second granularity). Still, with TS v9 coming, MC v7 will need to stand and deliver

Competition is good.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #30 (permalink)
 aviat72 
San Francisco Bay Area
 
Experience: Intermediate
Platform: NT,TOS,IB
Trading: ES,CL,TF
 
Posts: 280 since Jun 2010
Thanks: 155 given, 271 received

Big M:

Interesting thoughts. Your observations seem to reflect a lot of frustration with NT and a desire to find something that works.

However, I think the frustration is swinging your opinion to not so insignificant manner.

(1) Intra-bar granularity: I have not run a lot of strategies, but my default approach is to add a 1 range bar as the second bar series and run the strategy test on that bar. This seems to work and does not require CalculateOnBarClose = false. In fact for backtesting COBC is meaningless since all calculations are done on the bar close.

The sampling bar (IOG) is not natively supported as it seems it is in MC, but all it requires are a few statements to add that bar, and then use that bar to trigger the calculations and updates.

 
Code
// Add the time period you want to sample at
			Add(samplingBarType,samplinBarPeriod);
			this.SamplingBarIndex = this.numberOfSeries++

...
// Check and execute strategy on that bar

	if(BarsInProgress == this.SamplingBarIndex && FirstTickOfBar){				
		updateIndicators();
		checkTradeTriggers();					
	}
I keep that sampling bar as a parameter to the strategy and seems to work fine. This being C#, you can use a base class to do this kind of work and then derive from it.

(2) Lines of Code: We all know that the lines of code are not the best metric, but a lot of the NT code size is the auto-generated part or the default headers which the strategy wizard automatically creates for you. The actual computation part is almost the same.

(3) Data Initialization: My default strategy setup just runs the indicators for a day or two extra to make sure everything is setup and initialized. I also control the time of the day when the strategy is active using input to the strategy. Simple checks in the code keep help implement these features.

 
Code
		[Description("Number of Days To Skip")]
		[Category("Parameters")]
		public int DaysToSkip
		{
			get { return daysToSkip; }
			set { daysToSkip = value; }
		}
		
		[Description("Activation Time")]
		[Category("Parameters")]
		public int StartTime
		{
			get { return startTime; }
			set { startTime = value; }
		}
		[Description("De-Activation Time")]
		[Category("Parameters")]
		public int EndTime
		{
			get { return endTime; }
			set { endTime = value; }
		}
----------------------------------------------------------------------


On a general note, the power of NT lies in its flexibility. Whenever you have flexibility, it takes more effort to achieve the same task, simply you have to worry about a lot more things. NT does provide enough wrappers to take care of the mundane tasks for you, while giving you the power to explore your own stuff.

NT is more like an operating system with a set of in-build indicators. To truly harness it requires you to build your own application layer on top. But you then have full control on what you are doing. Since you

____________________________________________


However the fundamental problem with NT7 as Fat Tail noted is that it does not do what is supposed to do in a reliable manner. I am running NT7 and just opened another workspace (which does have a lot of charts). Half of the charts did not open and are stuck with a "Loading Data..." message. So much potential, yet unrealized. I had to shutdown and restart. Now if that happens during live trading.... You cant trust it.

Visit my futures io Trade Journal Reply With Quote
The following 4 users say Thank You to aviat72 for this post:
 
(login for full post details)
  #31 (permalink)
 bizman70 
toronto, ontario
 
Experience: Intermediate
Platform: ninja trader
Broker: sterling, iqfeed
Trading: es, nq, 6e
 
bizman70's Avatar
 
Posts: 363 since May 2010
Thanks: 41 given, 140 received

is there a way to calculate the right generations and population you may need based on the parametners you may be using in a back test with a genetic optimizer

Visit my futures io Trade Journal Reply With Quote
 
(login for full post details)
  #32 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


bizman70 View Post
is there a way to calculate the right generations and population you may need based on the parametners you may be using in a back test with a genetic optimizer

I don't know which platform you are talking about. But, I can tell you that MultiCharts automagically changes them based on the number of parameters.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #33 (permalink)
 bizman70 
toronto, ontario
 
Experience: Intermediate
Platform: ninja trader
Broker: sterling, iqfeed
Trading: es, nq, 6e
 
bizman70's Avatar
 
Posts: 363 since May 2010
Thanks: 41 given, 140 received

i saw that in the video u posted - was wondering if there is a code to that or a calculation standard - i dont have access to MC but it looks like they may be using a 2.5 times divider on the parameter for the population and a 10 times for the generation - it would be nice to try another test to confirm

Visit my futures io Trade Journal Reply With Quote
 
(login for full post details)
  #34 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


bizman70 View Post
i dont have access to MC

You can get a free trial of MultiCharts from the website.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
 
(login for full post details)
  #35 (permalink)
 richtobey 
San Antonio
 
Experience: Advanced
Platform: NinjaTrader Interactive Brokers
Broker: Interactive Brokers
Trading: forex
 
Posts: 45 since Oct 2010
Thanks: 0 given, 116 received

In reviewing the video you used the default fill type. DefaultFillType.cs is accessed from the backtest setup screen in NT7 by accessing Strategy Analyzer > Optimizer > Historical Fill Processing > Fill Type > Default. You can create custom ones as you probably know. It is located at My documents\NinjaTrader 7\bin\custom\type

In reviewing my own NT7 back test results, I noticed that the default fill type is a bit screwy. It's not straight forward that's for sure but the real market never gives you the best price. After reading it, I would never expect NT7 and Multicharts to have the same results. Multicharts has to be using a different fill algorithm since the NT7 default one is obscure. You might make a new one to simulate what you think Multicharts is doing and rerun the test to see if you can get the results to match, or vice versa if Multicharts will let you access a fill algorithm.

So being based upon C#, NT7 probably has the flexibility to get the results the same as Multicharts but as mentioned elsewhere in this thread, more flexibility has it's price.

As to the crashing... I agree, big pain. Does anybody have an opinion if this is NT7 or is it related to the data feeds not being stable? I'm curious to know if using Kinetick would make the system more reliable? In the past I've noticed that when I take my custom indicators off of the charts the system becomes more reliable. In one case I found an error which when corrected stopped some stability issues.

I'm personally not familiar with Multicharts and to hear the dissatisfaction on NT7 after spending so much time in the learning curve is a big bummer. I will eventually check out Multicharts based upon Big Mike's recommendation. But for now I haven't even mastered NT7.

Visit my futures io Trade Journal Reply With Quote
 
(login for full post details)
  #36 (permalink)
 trade8888 
Vancouver
 
Experience: Intermediate
Platform: Ninja
Trading: CL GC
 
Posts: 43 since Oct 2010
Thanks: 24 given, 46 received

An interesting comparison. Thanks for taking the time to do and share.

What I saw is the results from Multicharts were parameters of 20,80,20,80,20.

I did not hear you state the results from Ninja but at 24:33 the parameters are shown as
100,20,40,80,40.

Are those the optimized parameters?

If so why would the two platforms result in such different parameters?

Visit my futures io Trade Journal Reply With Quote
 
(login for full post details)
  #37 (permalink)
neb1998
chicago
 
 
Posts: 3 since Jan 2011
Thanks: 0 given, 0 received

Anyone using MC 6.0 with multi time frame systems with IB successfully? Full automated systems?

Fills accurate with IOG on and multiple time frames evaluated within a system?

Reply With Quote
 
(login for full post details)
  #38 (permalink)
 Jura 
The Netherlands
 
Experience: None
Platform: MultiCharts, TradingView
Trading: ...
 
Jura's Avatar
 
Posts: 774 since Apr 2010
Thanks: 2,347 given, 688 received

Great thread, lots of usable info. Thanks Big Mike!

Big Mike View Post
C, I'll do another comparison in the future.

I would love to see/read that; where can I find it? (perhaps I overlooked it? )


Big Mike View Post
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!

Seriously? Forgive my doubt, but such a short learning curve is unheard off - especially if you're used to NinjaTrader. Can other MultiCharts users comment on the learning curve, because that's for me, and perhaps other 'doubters' also, a big issue in determining to switch to MultiCharts.


Fat Tails View Post
Thank you a lot for doing this. I am watching your test of multicharts with great interest.

I have spent an awful lot of time to use and to understand NinjaTrader, but the more I dig into it, the more problems I am running into. There are so many problems that are not solved yet (neither for NT 6.5 nor for NT 7.0) and so many details that they simply do not understand.

Thanks for providing your point of view Fat Tails. I, and others with me, regard you as a highly experienced 'backtester', so I was wondering if you, after the quoted post above, switched to MultiCharts or did you stay with NinjaTrader? What made you change or stay?

Regards,

Reply With Quote
 
(login for full post details)
  #39 (permalink)
 Fat Tails 
Market Wizard
Berlin, Europe
 
Experience: Advanced
Platform: NinjaTrader, MultiCharts
Broker: Interactive Brokers
Trading: Keyboard
 
Fat Tails's Avatar
 
Posts: 9,855 since Mar 2010
Thanks: 4,238 given, 26,743 received


Jura View Post
Thanks for providing your point of view Fat Tails. I, and others with me, regard you as a highly experienced 'backtester', so I was wondering if you, after the quoted post above, switched to MultiCharts or did you stay with NinjaTrader? What made you change or stay?

Regards,

I am currently looking into MultiCharts, but have not yet advanced very much. Correctly understanding a new software is a heavy investment, and it will take some time. I will be likely to continue to use both NinjaTrader and MultiCharts, both of them have advantages.

Reply With Quote
The following user says Thank You to Fat Tails for this post:
 
(login for full post details)
  #40 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


Jura View Post
Great thread, lots of usable info. Thanks Big Mike!

I would love to see/read that; where can I find it? (perhaps I overlooked it? )


Seriously? Forgive my doubt, but such a short learning curve is unheard off - especially if you're used to NinjaTrader. Can other MultiCharts users comment on the learning curve, because that's for me, and perhaps other 'doubters' also, a big issue in determining to switch to MultiCharts.


Thanks for providing your point of view Fat Tails. I, and others with me, regard you as a highly experienced 'backtester', so I was wondering if you, after the quoted post above, switched to MultiCharts or did you stay with NinjaTrader? What made you change or stay?

Regards,

I haven't had time for a follow-up just yet. Hopefully soon.

I've been programming for nearly 20 years, I was writing some assembly code at 15 years old. But what I meant was that I learned the basics of the language in about 2 days, not that I memorized the name of every function. But there is a lookup dictionary for that, and its easy to get the syntax correct in EasyLanguage. EL compared to C# -- no comparison in terms of ease of use. All depends on just exactly what you are wanting to accomplish.

Mike

We're here to help -- just ask

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io Trade Journal Started this thread Reply With Quote
The following 3 users say Thank You to Big Mike for this post:
 
(login for full post details)
  #41 (permalink)
 GaryD 
Orlando, Florida
 
Experience: None
Platform: shoes
Trading: happy
 
GaryD's Avatar
 
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
 
(login for full post details)
  #42 (permalink)
 Big Mike 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received


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

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io 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: 92 since Nov 2009
Thanks: 66 given, 57 received


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 
Crete, IL/USA
 
Experience: Intermediate
Platform: NinjaTrader, Mt4
Broker: Tradestation/Tradestation, NinjaTrader, FXCM and Tallinex
Trading: ES, CL, EUR/USD, TF
 
spinnybobo's Avatar
 
Posts: 181 since Aug 2009
Thanks: 103 given, 56 received

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 
Site Administrator
Swing Trader
Data Scientist & DevOps
Manta, Ecuador
 
Experience: Advanced
Platform: Custom solution
Trading: Futures & Crypto
 
Big Mike's Avatar
 
Posts: 50,002 since Jun 2009
Thanks: 32,468 given, 98,269 received

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

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

Follow us on Twitter, YouTube, and Facebook

Support our community as an Elite Member:
https://futures.io/elite/

Visit other sites? Please spread the word about your experience with our community!
Follow me on Twitter Visit my futures io 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: 1 given, 1 received

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 
the coin hunter
virginia
 
Experience: Intermediate
Platform: ninja
Trading: NQ
 
cory's Avatar
 
Posts: 6,042 since Jun 2009
Thanks: 854 given, 7,910 received


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: 1 given, 1 received

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: 10 given, 2 received

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("futures.io (formerly BMT)test")]
    public class 
futures.io (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 
Tomsk, Russia
 
Experience: Beginner
Platform: custom
Trading: gold
 
slickiam's Avatar
 
Posts: 272 since Dec 2010
Thanks: 133 given, 433 received


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:
 
(login for full post details)
  #51 (permalink)
 ilu007 
New York + US
 
Experience: Intermediate
Platform: MultiCharts
Trading: Indian Stocks
 
Posts: 37 since Aug 2015
Thanks: 10 given, 2 received

Permission denied

Reply With Quote
 
(login for full post details)
  #52 (permalink)
 GuppyDRV 
Seattle
 
Experience: Intermediate
Platform: MultiCharts 10
Broker: InteractiveBrokers, IQFeed
Trading: ES
 
Posts: 57 since Nov 2015
Thanks: 19 given, 2 received

Hello all,

I have been using NT7 and have built a few good strategies that I have traded on a paper trade account at IB. They perform O.K. but differ from any back test/optimization results that I have produce using NT7. My thoughts are that several of the issues discussed within this thread are to blame. So here is my problem, by trade I'm a trader and not a programmer. To date I'm a manual discretionary position day trader. The reason I've been using NT7 is the strategy development wizard and an add on called Bloodhound (no involvement with them just a customer). This is a really great system that allows someone such as myself the ability to generate complex strategies and then quickly perform optimization and back testing. NT7 is slow and may have some built in limits that are causing my results to deviate beyond my comfort zone. My read is that Multi Charts with its use of multi core multi thread tech for optimization may improve performance along with improved results due to logic differences.

So here is the big question. Is there a system like Bloodhound or the NT7 strategy wizard within Multi Charts that would allow a non programmer like myself to quickly and in an intuitive (point and click kind of way) create strategies?

Any help would be appreciated. I have done some looking on other threads but have not found an answer. A point to a thread that discusses this would also be a great help.

Thanks,

GuppyDRV

Reply With Quote
 
(login for full post details)
  #53 (permalink)
jamesfisher
City Poland
 
 
Posts: 14 since Sep 2012
Thanks: 1 given, 3 received

I was wondering of robustness of back-testing/optimization in MultiCharts vs AmiBroker so I coded this same test in both platforms and run an optimization process in two dimension test with 1281 iterations. The result time:
- AmiBroker : 1 minute, 26 seconds
- MultiCharts : 11 minutes, 2 seconds

So the speed is circa 7 times better in AmiBroker.

Reply With Quote
 
(login for full post details)
  #54 (permalink)
 GuppyDRV 
Seattle
 
Experience: Intermediate
Platform: MultiCharts 10
Broker: InteractiveBrokers, IQFeed
Trading: ES
 
Posts: 57 since Nov 2015
Thanks: 19 given, 2 received

I have never used the Ameritrade System. Is it a server based system they host or does it reside on your computer? Do they have any sort of Wizard to aid in coding Strategies? Thanks for the heads up!

GuppyDRV

Reply With Quote


futures io Trading Community Platforms and Indicators MultiCharts > VIDEO: MultiCharts vs. NinjaTrader strategy backtesting and optimization


Last Updated on June 12, 2016


Upcoming Webinars and Events
 

NinjaTrader Indicator Challenge!

Ongoing
 

Journal Challenge w/$1,800 in prizes!

April
     



Copyright © 2021 by futures io, s.a., Av Ricardo J. Alfaro, Century Tower, Panama, +507 833-9432, info@futures.io
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.
no new posts