PDA

View Full Version : Porting Gauss filter


Mauro60
09-17-2007, 06:46 AM
this is a tradestation function code,have I tried to write the code for Ninja but not plot nothing.


{Gaussian Filter}
{Ported to EasyLanguage by: atavachron}
{Original author: DrKoch}
Inputs: Price(NumericSeries), Period(NumericSimple), poles(NumericSimple);

variables: aa(0), b(0), w(0), x(0), y(0), y1(0), y2(0), y3(0), y4(0),
a_1(0), a_12(0), a_13(0), a_14(0), a2(0), a3(0), a4(0), Pi(3.141592654),
sqrtOf2(1.414213562);

{If number of poles is < 0 or > 4 then return 0.}
{Number of filter poles must be between 1 and 4, inclusive}
If (poles >= 1) and (poles <= 4) then
begin
{initialization - performed only for first bar}
if CurrentBar = 1 then
begin
w = 2 * Pi / Period; {omega}
w = 180 * w / Pi; {in degrees}

b = (1 - cosine(w)) / (power(sqrtOf2, 2.0/poles) - 1.0);

aa = -b + squareroot(b*b + 2*b);
a_1 = 1.0 - aa;
a_12 = a_1 * a_1;
a_13 = a_1 * a_1 * a_1;
a_14 = a_12 * a_12;
a2 = aa * aa;
a3 = aa * aa * aa;
a4 = a2 * a2;

y1 = Price;
y2 = y1;
y3 = y2;
y4 = y3;
end;

{Calculate your indicator value here}
x = Price;

if (poles = 1) then
y = aa * x + a_1 * y1
else if (poles = 2) then
y = a2 * x + 2 * a_1 * y1 - a_12 * y2
else if (poles = 3) then
y = a3 * x + 3 * a_1 * y1 - 3 * a_12 * y2 + a_13 * y3
else if (poles = 4) then
y = a4 * x + 4 * a_1 * y1 - 6 * a_12 * y2 + 4 * a_13 * y3 - a_14 * y4;

y4 = y3; {delayed by four bars}
y3 = y2; {delayed by three bars}
y2 = y1; {delayed by two bars}
y1 = y; {delayed by one bar}

Gauss = y;
end
else
Gauss = 0.0;



I attach file CS MaGauss

NinjaTrader_Ray
09-17-2007, 06:55 AM
Please check your log tab of for any error messages when applying the indicator to a chart and let us know what it is.

Mauro60
09-17-2007, 07:36 AM
thanks for the answer,any error signalled on the Log Tab

Mauro60
11-16-2007, 08:08 AM
may someone could help me porting this indicator? I made some piece of code...help please

Mauro60
11-16-2007, 08:09 AM
this is a tradestation function code,have I tried to write the code for Ninja but not plot nothing.


{Gaussian Filter}
{Ported to EasyLanguage by: atavachron}
{Original author: DrKoch}
Inputs: Price(NumericSeries), Period(NumericSimple), poles(NumericSimple);

variables: aa(0), b(0), w(0), x(0), y(0), y1(0), y2(0), y3(0), y4(0),
a_1(0), a_12(0), a_13(0), a_14(0), a2(0), a3(0), a4(0), Pi(3.141592654),
sqrtOf2(1.414213562);

{If number of poles is < 0 or > 4 then return 0.}
{Number of filter poles must be between 1 and 4, inclusive}
If (poles >= 1) and (poles <= 4) then
begin
{initialization - performed only for first bar}
if CurrentBar = 1 then
begin
w = 2 * Pi / Period; {omega}
w = 180 * w / Pi; {in degrees}

b = (1 - cosine(w)) / (power(sqrtOf2, 2.0/poles) - 1.0);

aa = -b + squareroot(b*b + 2*b);
a_1 = 1.0 - aa;
a_12 = a_1 * a_1;
a_13 = a_1 * a_1 * a_1;
a_14 = a_12 * a_12;
a2 = aa * aa;
a3 = aa * aa * aa;
a4 = a2 * a2;

y1 = Price;
y2 = y1;
y3 = y2;
y4 = y3;
end;

{Calculate your indicator value here}
x = Price;

if (poles = 1) then
y = aa * x + a_1 * y1
else if (poles = 2) then
y = a2 * x + 2 * a_1 * y1 - a_12 * y2
else if (poles = 3) then
y = a3 * x + 3 * a_1 * y1 - 3 * a_12 * y2 + a_13 * y3
else if (poles = 4) then
y = a4 * x + 4 * a_1 * y1 - 6 * a_12 * y2 + 4 * a_13 * y3 - a_14 * y4;

y4 = y3; {delayed by four bars}
y3 = y2; {delayed by three bars}
y2 = y1; {delayed by two bars}
y1 = y; {delayed by one bar}

Gauss = y;
end
else
Gauss = 0.0;



I attach file CS MaGauss


may someone could help me porting this indicator? I made some piece of code...help please

sbgtrading
11-17-2007, 07:40 AM
I believe I have it working (see attachment)...but my research on the internet didn't find any documents that covered the topic of "Gauss Moving Average".

Let me know how it works for you!

Ben

Mauro60
11-17-2007, 09:13 AM
Thank you very much try hours, the code of the post is the version Tradestation

kuroro13
08-08-2008, 07:42 AM
for an unknown reason the indicator is not plotting when you set poles to 3 or 4.

if someone could check the code and tell me what's wrong I would really appreciate

mrlogik
08-08-2008, 10:35 AM
when you use 3 / 4 poles the divisor goes to zero.

change this line
b = (1 - Math.Cos(w)) / (Math.Pow(sqrtOf2, Math.Abs((2 / poles)) - 1));

mrlogik

Mauro60
08-11-2008, 02:28 AM
Thank you, I control with the version of Tradestation