//+------------------------------------------------------------------+ //| Fisher_org_v1.1.mq4 | //| Copyright © 2006, Forex-TSD.com | //| Written by IgorAD | //| http://finance.groups.yahoo.com/group/TrendLaboratory | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, Forex-TSD.com " #property link "http://www.forex-tsd.com/" #property indicator_separate_window #property indicator_maximum 3.0 #property indicator_minimum -3.0 #property indicator_buffers 6 #property indicator_color1 LightBlue #property indicator_color2 Tomato #property indicator_color3 Gray #property indicator_color4 Gray #property indicator_color5 Gray #property indicator_color6 Gray //---- input parameters extern int Length=10; // Period of Fisher Transform extern int Price=4; // 0-Close;1-Open;2-High;3-Low;4-median;5-typical;6-weighted extern int CalcBars=100; // Number of Last Bars extern int NumBars=0; // Number of Bars on the Chart extern int Offset=70; // Offset for lines //---- buffers double Fisher[]; double Buffer[]; double UpLine1[]; double DnLine1[]; double UpLine2[]; double DnLine2[]; double Value []; int init() { IndicatorBuffers(7); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); SetIndexStyle(1,DRAW_LINE,STYLE_DOT,1); SetIndexStyle(2,DRAW_LINE,STYLE_DOT,0); SetIndexStyle(3,DRAW_LINE,STYLE_DOT,0); SetIndexStyle(4,DRAW_LINE,STYLE_DOT,0); SetIndexStyle(5,DRAW_LINE,STYLE_DOT,0); SetIndexBuffer(0,Fisher); SetIndexBuffer(1,Buffer); SetIndexBuffer(2,UpLine1); SetIndexBuffer(3,DnLine1); SetIndexBuffer(4,UpLine2); SetIndexBuffer(5,DnLine2); SetIndexBuffer(6,Value); IndicatorShortName ("Fisher Transform"); SetIndexLabel (0, "Fish"); SetIndexLabel (1, "Trigger"); SetIndexDrawBegin(0,Length); SetIndexDrawBegin(1,Length); SetIndexDrawBegin(2,Length); SetIndexDrawBegin(3,Length); SetIndexDrawBegin(4,Length); SetIndexDrawBegin(5,Length); SetIndexShift( 2, Offset); SetIndexShift( 3, Offset); SetIndexShift( 4, Offset); SetIndexShift( 5, Offset); return(0); } //+------------------------------------------------------------------+ //| Fisher_org_v1.1 | //+------------------------------------------------------------------+ int start() { int shift; double smin=0,smax=0,maxfish=-1000000,minfish=1000000; if (NumBars>0) int NBars=NumBars; else NBars=Bars; if (CalcBars>0) int CBars=CalcBars; else CBars=NBars; for(shift=NBars;shift>=0;shift--) { Buffer[shift]=0.0; Value [shift]=0.0; Fisher[shift]=0.0; } for(shift=NBars-2-Length;shift>=0;shift--) { smax = High[Highest(NULL,0,MODE_HIGH,Length,shift)]; smin = Low[Lowest(NULL,0,MODE_LOW,Length,shift)]; double price = iMA(NULL,0,1,0,0,Price,shift); if (smax-smin < Point) smax=smin+Point; double wpr=(price-smin)/(smax-smin); Value[shift] = 0.33*2*(wpr-0.5) + 0.67*Value[shift+1]; if (Value[shift]> 0.99) Value[shift]= 0.999; if (Value[shift]<-0.99) Value[shift]=-0.999; Fisher[shift] = 0.5*MathLog((1.0+Value[shift])/(1.0-Value[shift]))+0.5*Fisher[shift+1]; Buffer[shift] = Fisher [shift+1]; if (shift<=CBars-1) { maxfish=MathMax(maxfish,Fisher[shift]); minfish=MathMin(minfish,Fisher[shift]); } } Comment ( " MaxFish= ",maxfish, " MinFish= ",minfish); double fishlevel = NormalizeDouble(MathMax(maxfish,MathAbs(minfish)),2); for(shift=NBars-2-Length;shift>=0;shift--) { UpLine1[shift]=fishlevel; UpLine2[shift]=0.5*fishlevel; DnLine1[shift]=-fishlevel; DnLine2[shift]=-0.5*fishlevel; } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Implements a curve of type DRAW_LINE
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Other Features: