Lavoro terminato
Specifiche
I have a job i need done .Its very simple. I need Sound/Email and SMS alert options. I also need 2 things done to the indicator. I want a GREEN DOT when the solid grey line moves up across the dashed yellow lines. Vice versa i want a RED DOT on top of the cross on the way down. So when the grey line crosses the yellow dashed lines. The dot cannot touch the lines i want it just on top of the cross. I just want to be able to see the cross. The second thing i need is i just need you to make a little distance between the two lines. Right now they are coded too close to each other. Could you ad an option so i can change the distance between the two lines? Its just hard to see it nicely.
I need the indicator also as a histogram. Green bars for "long" and Red bars for "short". I also need Sound/Email and SMS notifications. So thats 2 indicators.
Heres the code for the indicator it is the Fisher Transform. ABSOLUTELY NOTHING ELSE SHOULD BE DONE TO THE INDICATOR BESIDES THE FOR-MENTIONED.
Fisher Transform:
//+----------------------------------------------------------+
//| Ehlers fisher transform.mq4 |
//| mladen |
//+----------------------------------------------------------+
#property copyright "mladen"
#property link "mladenfx@gmail.com"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DimGray
#property indicator_color2 YellowGreen
#property indicator_width1 2
#property indicator_style2 STYLE_DOT
//
//
//
//
//
extern int period = 10;
extern int PriceType = PRICE_MEDIAN;
extern bool showSignalLine = true;
//
//
//
//
//
double buffer1[];
double buffer2[];
double Prices[];
double Values[];
//+----------------------------------------------------------+
//| |
//+----------------------------------------------------------+
//
//
//
//
//
int init()
{
IndicatorBuffers(4);
SetIndexBuffer(0,buffer1);
SetIndexBuffer(1,buffer2);
SetIndexBuffer(2,Prices);
SetIndexBuffer(3,Values);
IndicatorShortName("Ehlers\' Fisher transform ("+period+")");
return(0);
}
//+----------------------------------------------------------+
//| |
//+----------------------------------------------------------+
//
//
//
//
//
int start()
{
int counted_bars=IndicatorCounted();
int i,limit;
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = Bars-counted_bars;
//
//
//
//
//
for(i=limit; i>=0; i--)
{
Prices[i] = iMA(NULL,0,1,0,MODE_SMA,PriceType,i);
//
//
//
//
//
double MaxH = Prices[ArrayMaximum(Prices,period,i)];
double MinL = Prices[ArrayMinimum(Prices,period,i)];
if (MaxH!=MinL)
Values[i] = 0.33*2*((Prices[i]-MinL)/(MaxH-MinL)-0.5)+0.67*Values[i+1];
else Values[i] = 0.00;
Values[i] = MathMin(MathMax(Values[i],-0.999),0.999);
//
//
//
//
//
buffer1[i] = 0.5*MathLog((1+Values[i])/(1-Values[i]))+0.5*buffer1[i+1];
if (showSignalLine)
buffer2[i] = buffer1[i+1];
}
return(0);
}