Looking for the right Software...

Mike_E

Newbie
Messages
6
Likes
0
Hi,

in my quest for the right software (for me, oc), I am begenning to test Ninja Trader and Multicharts.

My broker (and data feed) is IB, and I use TWS to handle my orders. It works fine and TWs is quite powerful in that field. But, for charting, backtesting and analysis purpose, I need something more consistent. :D

So, my question is about Multicharts:

How to code a multisymbol, multi timeframe indicator with EasyLangage? Has someone an example?

This is not possible at the moment with NT, and their programming approach is more software ingeneer oriented than user friendly. I prefer the rapid coding approach of Multicharts (or Prorealtime that is used to use). :)
 
I fear that NT Is absolutly NOT software engineer oriented. They are not on an EasyLanguage level, but frankly, I do software fror a living, and NT pisses me off ;) I hope NT7 goes a lot more into pro development (integrate visual studio, proper breakpoint support etc.).

If I were you I would jump - it is not that much harder, possibly a week of learning. After all, all the concepts have to be in EasyLanguage, too (like loops etc.). The NT community is pretty good. Once NT7 is out (end of next month as beta) a lot of issues hopefully are history ;)
 
TY for your answer.

When i said "software engineer oriented", i meant, for instance, you need nearly 100 lines of code for a simple indicator (including all the declarations and additionnal code), when you only need 10 in EL. If you want to add or remove a input var, for instance, you need to change a lot of things in NT when, with a simplier language, Prorealtime or EL, you do it in one second by modifying one or two lines.

I used to code in C, but as a trader, I want to trade, not to spend my life coding! :D

I do like NT for Tech Analysis, great graphics, and so on, but i miss some fonctionnality (perhaps to come in NT7), like multisymbol, multitimeframe, and i also would like a kind of two levels approach, simple and light coding for simple purpose, and C# complete coding for those who need a complete programming language which is not my case for Trading.

NT view is in-between (you're right, not powerful and flexible enough for the engineer like you, to heavy and complex for those who wants simple, flexible and rapid coding, like me).

If i needed a complete programming environnement, i would choose VC++ (or VB) and the IB API.
 
As an example, the same (simple) indicator (volat+highest+lowest on n bars) in Prorealtime (basic, a bit like easy language) and the one i coded in NT ninjascript.

It speaks by itself... :D

PRT

IF BarIndex<20 then
VNK = Undefined
else
VNK = STD[20](close)
LimitMini=Lowest[period](VNK)
LimitMaxi=Highest[period](VNK)
Endif

Return VNK COLOURED(255,50,10) as "VNK",LimitMaxi COLOURED(0,200,20) as "Limite Maxi",LimitMini COLOURED(0,20,200) as "Limite Mini"

NinjaScript


#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.Gui.Chart;
#endregion

// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
[Description("Volatilité mesurée par l'ET et max/min sur N périodes")]
public class VolatET : Indicator
{
#region Variables
// Wizard generated variables
private int periodeMAX = 150; // Default setting for PeriodeMAX
private int periodeET = 20; // Default setting for PeriodeET
// User defined variables (add any user defined variables below)
#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.FromKnownColor(KnownColor.Red), PlotStyle.Line, "Max"));
Add(new Plot(Color.FromKnownColor(KnownColor.Green), PlotStyle.Line, "Min"));
Add(new Plot(Color.FromKnownColor(KnownColor.MediumBlue), PlotStyle.Line, "ET"));
CalculateOnBarClose = true;
Overlay = false;
PriceTypeSupported = false;
}

/// <summary>
/// Called on each bar update event (incoming tick)
/// </summary>
protected override void OnBarUpdate()
{
// Use this method for calculating your indicator values. Assign a value to each
// plot below by replacing 'Close[0]' with your own formula.
Max.Set(MAX(StdDev(Close,PeriodeET),PeriodeMAX)[0]);
Min.Set(MIN(StdDev(Close,PeriodeET),PeriodeMAX)[0]);
ET.Set(StdDev(Close,PeriodeET)[0]);
}

#region Properties
[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries Max
{
get { return Values[0]; }
}

[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries Min
{
get { return Values[1]; }
}

[Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove
[XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove
public DataSeries ET
{
get { return Values[2]; }
}

[Description("")]
[Category("Parameters")]
public int PeriodeMAX
{
get { return periodeMAX; }
set { periodeMAX = Math.Max(1, value); }
}

[Description("")]
[Category("Parameters")]
public int PeriodeET
{
get { return periodeET; }
set { periodeET = Math.Max(1, value); }
}
#endregion
}
}

#region NinjaScript generated code. Neither change nor remove.
// This namespace holds all indicators and is required. Do not change it.
namespace NinjaTrader.Indicator
{
public partial class Indicator : IndicatorBase
{
private VolatET[] cacheVolatET = null;

private static VolatET checkVolatET = new VolatET();

/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
/// <returns></returns>
public VolatET VolatET(int periodeET, int periodeMAX)
{
return VolatET(Input, periodeET, periodeMAX);
}

/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
/// <returns></returns>
public VolatET VolatET(Data.IDataSeries input, int periodeET, int periodeMAX)
{
checkVolatET.PeriodeET = periodeET;
periodeET = checkVolatET.PeriodeET;
checkVolatET.PeriodeMAX = periodeMAX;
periodeMAX = checkVolatET.PeriodeMAX;

if (cacheVolatET != null)
for (int idx = 0; idx < cacheVolatET.Length; idx++)
if (cacheVolatET[idx].PeriodeET == periodeET && cacheVolatET[idx].PeriodeMAX == periodeMAX && cacheVolatET[idx].EqualsInput(input))
return cacheVolatET[idx];

VolatET indicator = new VolatET();
indicator.BarsRequired = BarsRequired;
indicator.CalculateOnBarClose = CalculateOnBarClose;
indicator.Input = input;
indicator.PeriodeET = periodeET;
indicator.PeriodeMAX = periodeMAX;
indicator.SetUp();

VolatET[] tmp = new VolatET[cacheVolatET == null ? 1 : cacheVolatET.Length + 1];
if (cacheVolatET != null)
cacheVolatET.CopyTo(tmp, 0);
tmp[tmp.Length - 1] = indicator;
cacheVolatET = tmp;
Indicators.Add(indicator);

return indicator;
}

}
}

// This namespace holds all market analyzer column definitions and is required. Do not change it.
namespace NinjaTrader.MarketAnalyzer
{
public partial class Column : ColumnBase
{
/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
/// <returns></returns>
[Gui.Design.WizardCondition("Indicator")]
public Indicator.VolatET VolatET(int periodeET, int periodeMAX)
{
return _indicator.VolatET(Input, periodeET, periodeMAX);
}

/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
/// <returns></returns>
public Indicator.VolatET VolatET(Data.IDataSeries input, int periodeET, int periodeMAX)
{
return _indicator.VolatET(input, periodeET, periodeMAX);
}

}
}

// This namespace holds all strategies and is required. Do not change it.
namespace NinjaTrader.Strategy
{
public partial class Strategy : StrategyBase
{
/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
/// <returns></returns>
[Gui.Design.WizardCondition("Indicator")]
public Indicator.VolatET VolatET(int periodeET, int periodeMAX)
{
return _indicator.VolatET(Input, periodeET, periodeMAX);
}

/// <summary>
/// Volatilité mesurée par l'ET et max/min sur N périodes
/// </summary>
/// <returns></returns>
public Indicator.VolatET VolatET(Data.IDataSeries input, int periodeET, int periodeMAX)
{
if (InInitialize && input == null)
throw new ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");

return _indicator.VolatET(input, periodeET, periodeMAX);
}

}
}
#endregion
 
You can "easily" code multitimeframe multisymbol indicators or views or whatever with Sierra Chart.

It also works with IB and provides you powerful coding either via (simpler) spreadsheets or a full coded interface. I do a lot of multitimeframe stuff (and thats how I drive my trade entry and exit routines). In the past I did some simple multisymbol stuff because I was building tick as a condition of entry for asian markets (that don't provide tick, trin etc) but I haven't done any for a while.
 
eSignal

Mike_E,

You should check out eSignal or eSignal OnDemand, both have real time integrated trading with Interactive Brokers (IB).

There are hundreds of plug in studies that work with the charting located here:

eSignal Formula Script (EFS)

Chuck
 
TY for your answers. I'm gonna check Sierra and Esignal.

At the moment, i'm investigating Amibroker, which is quite an amazing piece of software! I'm impressed. The graphics are less "pretty" than the ones in NT (it lacks some functions like variable thickness, etc...), but coding is a lot easier and the power of the integrated language (instructions) is really astonishing for a 270$ software.

You can mix timeframes and symbols in the same study/backtest quite easily.

Bye, I go back to my testing! ;-)
 
To continue with the previous code example i took (in NT and PRT), here is the version i just code in AFL (the Amibroker language). Compact, isn't it?


VNK = StDev(C, 20);

H = HHV(VNK,150);
L = LLV(VNK,150);

Plot (VNK, "ET", colorBlue, 4);
Plot (H, "Highest 150", colorRed);
Plot (L, "Lowest 150", colorGreen);
 
Just wondering how the AmiBroker is going fo you? It is something I have just started looking at/for (back testing/scanning capable program) but a little overwhelmed at the moment....
 
I use Sierra Chart for trading but Amibroker for backtesting. The nice thing is that you can write amibroker code thats almost identical to what's needed in SC ... so you just transfer and adjust the variables after testing.

SC's test facility is more "accurate" than Amibrokers but not yet nearly as fast or flexible.
 
I use Strategy Runner with RCG. Is this platform okay for scalping? I'm not sure what data feed it uses, hopefully someone could tell me. I'm not really a techie! Also, I'm trying to decide between three platforms for scalping, AT (Infinity), Strategy Runner (RCG) and Ninja (Amp). Any thoughts? Thanks
 
Hello Nine,
I use Amibroker but have been looking for another software program that is more technically oriented i.e. chart patterns, auto trendlines etc. TJ has no interest in developing this for AB which means I need to look elsewhere. My computer coding skills are non-existent which makes it even more difficult. I suffer from Clinical Depression that prevents me from doing such tasks and is one of the reasons I need to find a more visual method of trading CDN stocks.
You mentioned that coding in AB is very close to SC, does that mean if I have an AFL for an indicator I can simply copy it to SC and it will work? If I am being too simplistic it is because of my lack of computer skills and coding. I would appreciate your insights into the similarities between AB and SC. Thank you.

Regards,


Tim







I use Sierra Chart for trading but Amibroker for backtesting. The nice thing is that you can write amibroker code thats almost identical to what's needed in SC ... so you just transfer and adjust the variables after testing.

SC's test facility is more "accurate" than Amibrokers but not yet nearly as fast or flexible.
 
...
You mentioned that coding in AB is very close to SC, does that mean if I have an AFL for an indicator I can simply copy it to SC and it will work? If I am being too simplistic it is because of my lack of computer skills and coding. I would appreciate your insights into the similarities between AB and SC. Thank you.

Regards,


Tim


forget it man... they are 2 different animals

if EasyLanguage is too difficult for you, there is no need to look elsewhere.
 
.... I use Amibroker but have been looking for another software program that is more technically oriented i.e. chart patterns, auto trendlines etc. TJ has no interest in developing this for AB .....

You certainly looked at the afl library. There you`ll even find autotrendlines code ( by T.J.) and lots of such codes. Additionally all new Indicators/Oscillators/Ch-Patt-Detection ideas published in Stocks & Commodities are readily available in an amibroker version (.afl) to legitimate subscribers.

Regards

Hittfeld
 
TY for your answers. I'm gonna check Sierra and Esignal.

At the moment, i'm investigating Amibroker, which is quite an amazing piece of software! I'm impressed. The graphics are less "pretty" than the ones in NT (it lacks some functions like variable thickness, etc...), but coding is a lot easier and the power of the integrated language (instructions) is really astonishing for a 270$ software.

You can mix timeframes and symbols in the same study/backtest quite easily.

Bye, I go back to my testing! ;-)

Mike,

I have been using AMIBroker for many many years. I have coded and back tested many systems in AMIBroker and always trying to improve on what I wrote. Every once and while I will try out another software program but for me I have not found anything as robust as AMIBroker. I am a software developer and working in the code to write systems is like an open book, there is nothing that cannot be done, and for the price, it cannot be beat.

Here is an AMIBroker screen shot... I later turned this system into a timing model that is on MTR for free.
image.axd


Vs. timing model on the web site. Timeframes are not the same... I just picked a couple of images.
image.axd
 
Top