PDA

View Full Version : Porting Kalman Filter


Mauro60
09-13-2007, 07:37 AM
this is a tradestation function code,is some experienced of C# able to do its porting?
{Function = Kalman Filter}
{Use gain between 500 to 1000 for starters...}
Inputs: price(NumericSeries), gain(Numeric);
Vars: Pred(price), Smooth(0), Velo(0), DeltaK(0), stderr(0),
error(0), sumerr(0) ;

if currentbar > 1 then
begin


DeltaK = price - Pred;
Smooth = Pred + DeltaK* SquareRoot((gain / 10000) * 2) ;
Velo= Velo + ((gain / 10000) * Deltak) ;
Pred = Smooth + Velo ;

KF=Pred;
end;

KBJ
09-16-2007, 08:28 PM
I don't know Trade Station, so I'm not sure I got this right.

But I converted it....


private int gain = 500;

double pred;
double velo = 0;

protected override void Initialize()
{
Add(new Plot(Color.Orange, "Kalman"));

Overlay = true;
PriceTypeSupported = true;
}

protected override void OnBarUpdate()
{
if (CurrentBar == 0) pred = Close[0]; // Initialize on first bar.

double DeltaK = Close[0] - pred;
double smooth = pred + DeltaK * Math.Sqrt(( gain / 10000) * 2);
velo = velo + ((gain / 10000) * DeltaK);
pred = smooth + velo;

Values[0].Set( pred );
}

It seems to be touchy about the value of "gain", either plotting just a horizontal line if too small, or nothing at all if too big.

Let me know if this is what its supposed to do (see attachments).

Best regards,

KBJ

Mauro60
09-17-2007, 03:15 AM
Thanks a lot of for the answer, I have made a small change to the variable GAIN,as soon I can I will compare to Tradestation's KF