View Single Post
  #1 (permalink)  
Old 01-25-2007, 03:28 PM
mrb1234 mrb1234 is offline
Junior Member
 
Join Date: Jan 2007
Posts: 5
mrb1234 is on a distinguished road
Better Fisher EA? Is possible?

I really like this #BetterFisher_Yur4ik_2 indicator...I was wondering if its possible to code an EA from the code attached below:



#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_style2 STYLE_SOLID
#property indicator_style3 STYLE_SOLID
#property indicator_width2 3
#property indicator_width3 3
extern int period=19;

extern bool SendAlert = false;

double ExtBuffer0[];
double ExtBuffer1[];
double ExtBuffer2[];


int init()
{

SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexStyle(2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);

SetIndexBuffer(0,ExtBuffer0);
SetIndexBuffer(1,ExtBuffer1);
SetIndexBuffer(2,ExtBuffer2);

IndicatorShortName("Fisher_Yur4ik");
SetIndexLabel(1,NULL);
SetIndexLabel(2,NULL);

return(0);
}


int start()
{
//int period=19;
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<Bars; 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;

if(MaxH-MinL == 0) Value = 0.33*2*(0-0.5) + 0.67*Value1;
else Value = 0.33*2*((price-MinL)/(MaxH-MinL)-0.5) + 0.67*Value1;

Value=MathMin(MathMax(Value,-0.999),0.999);

if(1-Value == 0) ExtBuffer0[i]=0.5+0.5*Fish1;
else ExtBuffer0[i]=0.5*MathLog((1+Value)/(1-Value))+0.5*Fish1;

Value1=Value;
Fish1=ExtBuffer0[i];
}


bool up=true;
for(i=Bars; i>=0; i--)
{
current=ExtBuffer0[i];
prev=ExtBuffer0[i+1];
if(SendAlert) Alert("Look for Buying opportunity soon");
if (((current<0)&&(prev>0))||(current<0)) up= false;
Alert("Better Fisher ",Period()," ",Symbol()," BUY");

if (SendAlert)Alert("Look for Selling opportunity soon");
if (((current>0)&&(prev<0))||(current>0)) up= true;
Alert("Better Fisher ",Period()," ",Symbol()," SELL");
if(!up)
{
ExtBuffer2[i]=current;
ExtBuffer1[i]=0.0;
}

else
{
ExtBuffer1[i]=current;
ExtBuffer2[i]=0.0;
}
}

return(0);
}
Reply With Quote