#property copyright "palanka"
#property link ""
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 LimeGreen
#property indicator_color2 Red
extern double ParmMult=2.0;
int shift=0;
bool first=true;
int prevbars=0;
bool RsiUp=false, RsiDown=false;
double signal_long[];
double signal_short[];
bool up=false;
bool down=false;
int init()
{
SetIndexBuffer(0,signal_long);
SetIndexBuffer(1,signal_short);
IndicatorShortName("Fx10Setup");
SetIndexEmptyValue(0, 0.0) ;
SetIndexEmptyValue(1, 0.0) ;
//
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
//
IndicatorDigits(1);
return(0);
}
int deinit()
{
return(0);
}
int start()
{
if (prevbars==Bars)
return(0);
if ((Bars < prevbars) || (Bars - prevbars > 1))
first=true;
prevbars=Bars;
if (first)
{
if (Bars<=26 * ParmMult)
return(0);
first=false;
}
shift=Bars;
while(shift>=0)
{
signal_long[shift]=0.0;
signal_short[shift]=0.0;
double fastMA=iMA(NULL, 0, 5 * ParmMult, 0, MODE_LWMA, PRICE_CLOSE, shift);
double slowMA=iMA(NULL, 0, 10 * ParmMult, 0, MODE_SMA, PRICE_CLOSE, shift);
if (fastMA > slowMA)
{
RsiUp=iRSI(NULL, 0, 14 * ParmMult, PRICE_CLOSE, shift)>=55.0;
double Stoch0=iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift);
double StochSig0=iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_SIGNAL, shift);
bool StochUp=(Stoch0 > StochSig0);
double MacdCurrent=iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_MAIN, shift);
double MacdSig0=iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_SIGNAL, shift);
bool MacdUp=(MacdCurrent > MacdSig0);
if (StochUp && RsiUp && MacdUp)
signal_long[shift]=High[shift] + 0.3/MathPow(10.0, Digits - 1);
}
else if (fastMA < slowMA)
{
RsiDown=iRSI(NULL, 0, 14 * ParmMult, PRICE_CLOSE, shift)<=45.0;
Stoch0=iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift);
StochSig0=iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_SIGNAL, shift);
bool StochDown=(Stoch0 < StochSig0);
MacdCurrent=iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_MAIN, shift);
MacdSig0=iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_SIGNAL, shift);
bool MacdDown=(MacdCurrent < MacdSig0);
if (StochDown && RsiDown && MacdDown)
signal_short[shift]=Low[shift] - 0.3/MathPow(10.0, Digits - 1);
}
shift--;
}
return(0);
}