PDA

View Full Version : Just downloaded NT, translating from TS


Januson
05-17-2007, 01:07 PM
Hello...

To get myself at the right track from the beginning, I've a couple of questions.

I'm trying to translate an .ELD file from Tradestation, this .ELD uses a function called XAverageOrig, take a look here:
inputs:
Price( numericseries ),
Length( numericsimple ) ; { this input assumed to be a constant >= 1 }
variables:
SmoothingFactor( 1 / Length ) ;
if CurrentBar = 1 then
XAverageOrig = Price
else
XAverageOrig = XAverageOrig[1] + SmoothingFactor * ( Price - XAverageOrig[1] ) ;


I'm a little confused, should I code it as an indicator ie. like SMA or should it be a custom method? I did try to program it as a method:
public double XAverageOrig(IDataSeries price, int length)
{

double smoothingFactor = 1/length;

if (CurrentBar == 1)
return price[0];
else
return XAverageOrig(price, length) + smoothingFactor * (price[0] - XAverageOrig(price, length));



}

But as I feared it behaved like a recursion and killed my CPU :p

Any help?

Kind regards
Januson

NinjaTrader_Ray
05-17-2007, 01:20 PM
I would code it as an indicator, that way you can code it once and have it available for anything that can use an indicator.

What I would do is create an indicator via the wizard and lets name the plot XAvg in the wizard.

In OnBarUpdate()


double smoothingFactor = 1 / length;

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


Note: I use Input[0] which refers to the default value passed into this indicator such as High or Close or Low price, or another indicator for that matter.

NinjaTrader_Ray
05-17-2007, 01:23 PM
I should have added that you need to code this as an indicator since you have to maintain an array of calculated values by where a method does not do that for you.

I am referring to accessing the value of XAvg of 1 bar ago.