PDA

View Full Version : JTHMA indicator


ninjamouse
03-09-2009, 07:51 AM
Hi there

Wonder if the programmers here can help me?

I have the following JTHMA from a Tradestation indicator:


Type : Function, Name : jtHMA
{jtHMA - Hull Moving Average Function}
{Author: Atavachron}
{May 2005}

Inputs: price(NumericSeries), length(NumericSimple);
Vars: halvedLength(0), sqrRootLength(0);
{
Original equation is:
---------------------
waverage(2*waverage(close,period/2)-waverage(close,period), SquareRoot(Period)
Implementation below is more efficient with lengthy Weighted Moving Averages.
In addition, the length needs to be converted to an integer value after it is halved and
its square root is obtained in order for this to work with Weighted Moving Averaging
}
if ((ceiling(length / 2) - (length / 2)) <= 0.5) then
halvedLength = ceiling(length / 2)
else
halvedLength = floor(length / 2);
if ((ceiling(SquareRoot(length)) - SquareRoot(length)) <= 0.5) then
sqrRootLength = ceiling(SquareRoot(length))
else
sqrRootLength = floor(SquareRoot(length));
Value1 = 2 * WAverage(price, halvedLength);
Value2 = WAverage(price, length);
Value3 = WAverage((Value1 - Value2), sqrRootLength);
jtHMA = Value3;



Type : Indicator, Name : jtHMA
{jtHMA - Hull Moving Average Indicator}
{Author: Atavachron}
{May 2005}

{
Inputs:
-------
price: the time series being smoothed, usually Close, High, etc,
but could be RSI(Close, 25) for example.
length: the length of the MA, pretty meaningless in the normal sense
of moving averages, as this quantity is heavily modified
in the code. You need to experiment, do not just use a setting
of 20 because that is what works for you with Simple Moving Averages.
zeroLine: if you are using this in an indicator pane, you might
want to display a centre line of some sort, ths allows
one to set its value
zeroVisible: boolean variable, determines whether the centre line
(zeroLine) is plotted.
upColour: If you wish to differentiate upward movements by colour coding.
downColour: If you wish to differentiate downward movements by colour coding.
colourDeltaBar: Set this to 1 if you wish the colour change to be effective on
the actual bar where the direction change occurred.
Set this to 0 for default behaviour. All other values
are pretty meaningless.
}
Inputs: price(Close), length(21),
zeroLine(0.0), zeroVisible(false),
upColour(Blue), downColour(Red), colourDeltaBar(1);
Value1 = jtHMA(price, length);
Plot1(Value1, "jtHMA");
If ZeroVisible = true then
Plot2(zeroLine, "Zero");
{ Color criteria }
if (Value1 > Value1[1]) then
SetPlotColor[colourDeltaBar](1, upColour)
else if (Value1 < Value1[1]) then
SetPlotColor[colourDeltaBar](1, downColour);


Can someone please help me in translating that to a Ninja C# Code

Thankyou

NinjaTrader_Bertrand
03-09-2009, 08:00 AM
Hi ninjamouse, the Hull MA is already available in NinjaTrader - http://www.ninjatrader-support.com/HelpGuideV6/MovingAverageHMA.html

You can find it also under HMA in the 'Indicators' selection list.

ninjamouse
03-09-2009, 08:09 AM
Coolm OK, do you think the code can be changed so that it displays a green/red line depending on if its a up/down trend. Just like this:



http://trader.online.pl/ELZ/t-i-Hull_Moving_Average.gif

Thanks

NinjaTrader_Bertrand
03-09-2009, 08:13 AM
Sure, please check into this reference sample for this - http://www.ninjatrader-support2.com/vb/showthread.php?t=3227