Gamestudio Links
Zorro Links
Newest Posts
Newbie Questions
by fairtrader. 12/06/23 11:29
Zorro Trader GPT
by TipmyPip. 12/04/23 11:34
Square root rule
by Smallz. 12/02/23 09:15
RTest not found error
by TipmyPip. 12/01/23 21:43
neural function for Python to [Train]
by TipmyPip. 12/01/23 14:47
Xor Memory Problem.
by TipmyPip. 11/28/23 14:23
Training with command line parameters
by TipmyPip. 11/26/23 08:42
Combine USD & BTC Pairs In Asset Loop
by TipmyPip. 11/26/23 08:30
AUM Magazine
Latest Screens
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Who's Online Now
7 registered members (3run, miwok, AndrewAMD, Quad, TipmyPip, fairtrader, 1 invisible), 637 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
fairtrader, hus, Vurtis, Harry5, KelvinC
19019 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 | chip programmers | 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