Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
4 registered members (AndrewAMD, TipmyPip, NewbieZorro, Grant), 14,196 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
FisherN Normalization formula for Z2 system? #455092
10/09/15 00:57
10/09/15 00:57
Joined: Sep 2015
Posts: 6
California
K
kiranb Offline OP
Newbie
kiranb  Offline OP
Newbie
K

Joined: Sep 2015
Posts: 6
California
What's the formula for the FisherN normalization function?

I tried the FisherInverse Transform which is an Ehler function (defined in http://www.mesasoftware.com/papers/TheInverseFisherTransform.pdf) on the BandPass filter but that gives a much more defined curve (-0.1,0.1) range and doesn't require a 500 parameter.

Pl advise formula.. in essence, I'm not able to replicate the Z2 system.

thx
Kiran

Re: FisherN Normalization formula for Z2 system? [Re: kiranb] #455137
10/10/15 23:22
10/10/15 23:22
Joined: Apr 2014
Posts: 482
Sydney, Australia
B
boatman Offline
Senior Member
boatman  Offline
Senior Member
B

Joined: Apr 2014
Posts: 482
Sydney, Australia
You can see the source code for the function in indicators.c. Reproduced here:

Code:
// normalize a value to the -1..+1 range
var Normalize(var* Data,int Period)
{
	Period = Max(2,Period);
	var vMin = MinVal(Data,Period);
	var vMax = MaxVal(Data,Period);
	if(vMax>vMin) 
		return 2.*(*Data-vMin)/(vMax-vMin) - 1.;
	else return 0.;
}

// Fisher Transform
var Fisher(var* Data)
{
	var v = Clamp(Data[0],-0.998,0.998);
	return 0.5*log((1.+v)/(1.-v));
}

// Normalized Fisher transform
var FisherN(var* Data,int Period)
{
	var *Value = series(*Data,2), *FN = series(*Data,2);
	Value[0] = 0.33*Normalize(Data,Period) + 0.67*Value[1];
	return FN[0] = Fisher(Value) + 0.5*FN[1];
}



You can see that the FisherN function uses the weighted average of the two most recent values of the normalized data series in calculating the Fisher transform and adds half of the second most recent value of the data series. Without looking to closely into the reason why this approach is used (off the top of my head, probably to enforce parameter stability), you could also try normalizing the data series and then inputting that normalized series directly into the Fisher transform function without further processing and investigate any differences.

The purpose of the Fisher transform is essentially to emphasize extreme values, relative to the period used to normalize the data.


Moderated by  Petra 

Gamestudio download | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1