Indicator Fisher Transform Needed!

 
Can anybody code the indicator Fisher Transform for me please. Following is the indicator code for MT3.8:
/*[[
	Name := Fisher
	Separate Window := Yes
	First Color := Lime
	First Draw Type := Line
	First Symbol := 217
	Use Second Data := Yes
	Second Color := Red
	Second Draw Type := Line
	Second Symbol := 218
	
]]*/
//******** Parameters ********
Input : 	nBars(15),	Mark(1);

//******** Variables ********

Variables : bar(0), prevbars(0), start(0), cs(0), prevcs(0);
Variables : P(0), Value(0), Fish(0), MaxH(0), MinL(0);
Variables : Value1(0), Fish1(0), Fish2(0), i(0), pFish(0);

//Initialisation
setloopcount(0);
cs=nBars+Mark; //checksum used to see if parameters have been changed
if cs=prevcs
	then start=Bars-prevbars //params haven't changed only need to calculate new bar
	else start=-1;

prevbars = Bars;
prevcs = cs;
if start=1 | start=0 
	then bar+=start
	else	//if number of new bars is >1 or <0 then re-calculatge entire chart
	{
	bar = Bars;
	For i=1 to nBars
		{
		bar-=1;
		SetIndexValue(bar,0);
		};
	Value=0; Fish=0; Fish1=0;
	};

While bar>1
	{//per bar jobs
	bar -=1;
	
	//Fish formulae courtesy of:-
	//http://www.linnsoft.com/tour/techind/fish.htm

	Value1 = Value; Fish2 = Fish1; Fish1 = Fish; 
	
	MaxH=H[Highest(MODE_HIGH,bar+nBars-1,nBars)];
    MinL=L[Lowest(MODE_LOW,bar+nBars-1,nBars)]; 
	
	//MaxH=H[Highest(MODE_HIGH,bar+nBars,nBars)];
	//MinL=L[Lowest(MODE_LOW,bar+nBars,nBars)];	
	
	P=(H[bar]+L[bar])/2;
	Value = 0.33*2*((P-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;
	Value=Min(Max(Value,-0.999),0.999); //bounds checking
	Fish = 0.5*Log((1+Value)/(1-Value))+0.5*Fish1;
	

	SetIndexValue(bar, Fish);
		
	
	SetIndexValue2(bar, Fish1);
		
	If 	Mark>0 
	Then{
		If 	Fish<-1 & Fish>Fish1 & Fish1<=Fish2 Then SetArrow(Time[bar],L[bar],159,LIME);		
		If 	Fish>1 & Fish<Fish1 & Fish1>=Fish2 Then SetArrow(Time[bar],H[bar],159,RED);		
		}
	Else{
		DelArrow(Time[bar],L[bar]);		
		DelArrow(Time[bar],H[bar]);		
		};
	
	pFish = Fish;
	
	};

//per tick jobs 
//- we don't have any
//End;