Jump to content

fisher indicator


Recommended Posts

Re: fisher indicator

 

maybe you can test this..

I hope no repaint againt..

-----------------------------------

.......

bool up=true;

for(i=limit-2; i>=0; i--) -> Original

for(i=limit+1; i>=0; i--) -> Repro by me

.......

-----------------------------------

 

The source code :

#property  copyright "Copyright © 2006, Winning Solution Repro SEFC"
#property  link      "Repro...."
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Black
#property  indicator_color2  Lime
#property  indicator_color3  Red
#property indicator_level1 0
#property indicator_levelcolor Yellow
#property indicator_levelwidth 2
extern int period=10;
double ExtBuffer0[];double  ExtBuffer1[];double ExtBuffer2[];
int init()  {
  SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,1,Red);
  SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1,Lime);
  SetIndexStyle(2,DRAW_HISTOGRAM);
  IndicatorDigits(Digits+1);
  SetIndexBuffer(0,ExtBuffer0);
  SetIndexBuffer(1,ExtBuffer1);
  SetIndexBuffer(2,ExtBuffer2);
  IndicatorShortName("Winning Solution - Fisher ");
  SetIndexLabel(1,NULL);
  SetIndexLabel(2,NULL);
  return(0);  }
int start()  {
  int    limit;
  int    counted_bars=IndicatorCounted();
  double prev,current,old;
  double Value=0,Value1=0,Value2=0,Fish=0,Fish1=0,Fish2=0;
  double price;
  double MinL=0;
  double MaxH=0;  
  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars;
  for(int i=0; i<limit; i++)
   {  MaxH = High[Highest(NULL,0,MODE_HIGH,period,i)];
      MinL = Low[Lowest(NULL,0,MODE_LOW,period,i)];
     price = (High[i]+Low[i])/2;
     Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;     
     Value=MathMin(MathMax(Value,-0.999),0.999); 
     ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;
     Value1=Value;
     Fish1=ExtBuffer0[i]; }
  bool up=true;
  for(i=limit+1; i>=0; i--)  {
     current=ExtBuffer0[i];
     prev=ExtBuffer0[i+1];
     if (((current<0)&&(prev>0))||(current<0))   up= false;    
     if (((current>0)&&(prev<0))||(current>0))   up= true;
     if(!up) {
        ExtBuffer2[i]=current;
        ExtBuffer1[i]=0.0; }
      else {
         ExtBuffer1[i]=current;
         ExtBuffer2[i]=0.0;}
    }
  return(0);  }

 

Sorry .... saya belum test lho.. mungkin bisa dicoba aja dulu..

Thanks..

SEFC Mode= Red light ...(off) ..

"Indonesia Forex Community"

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...