MAcross_Rsi_Sto_Macd_Fx10SetupTM





//+------------------------------------------------------------------+
//|                                                     Fx10 setup   |
//|                 Copyright © 2000-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
//revised:  Tartan
//mod2008tsd ki
#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; // multiply the standard parameters by this scale factor

extern int fastMA=5;
extern int fastMAmode=3;
extern int fastMAprice=0;

extern int slowMA=10;
extern int slowMAmode=3;
extern int slowMAprice=0;

extern int RSIperiod=14;

extern int StoK=5;
extern int StoD=3;
extern int StoSl=3;


extern int MacdFastMA=12;
extern int MacdSlowMA=26;
extern int MacdSigMA=9;

extern double del=30;

extern string  note_Price_ = "0C,1O 2H3L,4Md 5Tp 6WghC: Md(HL/2)4,Tp(HLC/3)5,Wgh(HLCC/4)6";
extern string  note_MAmode =  "SMA0 EMA1 SMMA2 LWMA3";

//----
int shift,ks,kl;
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,241);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,242);
   //
   IndicatorDigits(1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   if (prevbars==Bars)
      return(0);
   // check for additional bars loading or total reloading
   if ((Bars < prevbars) || (Bars - prevbars > 1))
      first=true;
//----
   prevbars=Bars;
   if (first)
     {
         int limit= MathMax(fastMA,slowMA);
             limit= MathMax(limit,MacdSlowMA);
         if (Bars<=limit * ParmMult)
    
//      if (Bars<=26 * ParmMult)
         return(0);
      first=false;
     }
   shift=Bars;
   while(shift>=0)
     {
      signal_long[shift]=0.0;
      signal_short[shift]=0.0;
//----

      double fast_MA=iMA(NULL, 0, fastMA * ParmMult, 0, fastMAmode, fastMAprice, shift);
      double slow_MA=iMA(NULL, 0, slowMA * ParmMult, 0, slowMAmode, slowMAprice, shift);
//----
      if (fast_MA > slow_MA && kl==0)
        {
         RsiUp=iRSI(NULL, 0, RSIperiod * ParmMult, PRICE_CLOSE, shift)>=55.0;
         //and iRSI(p1, 1) > iRSI(p1, 2)
         double Stoch0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift);
         // double Stoch1 = iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift + 1);
         double StochSig0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_SIGNAL, shift);
         bool StochUp=(Stoch0 > StochSig0);
         //and Stoch0 > Stoch1
         //and Stoch0 >= StochHigh
         double MacdCurrent=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_MAIN, shift);
         // double MacdPrevious = iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_MAIN, shift + 1);
         double MacdSig0=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_SIGNAL, shift);
         bool MacdUp=(MacdCurrent > MacdSig0);
         //and  MacdCurrent > MacdPrevious
         //and MacdCurrent > 50
             if (StochUp && RsiUp && MacdUp)
          {  kl=1;ks=0;
             signal_long[shift]=Low[shift] - del*Point;
          }  else kl=0; 
        }
      else if (fastMA < slowMA && ks==0)
           {
            RsiDown=iRSI(NULL, 0, RSIperiod * ParmMult, PRICE_CLOSE, shift)<=45.0;
            //and iRSI(p1, 2) > iRSI(p1, 1)
            Stoch0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift);
            // double Stoch1 = iStochastic(NULL, 0, 5*ParmMult, 3*ParmMult, 3*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_MAIN, shift + 1);
            StochSig0=iStochastic(NULL, 0, StoK*ParmMult, StoD*ParmMult, StoSl*ParmMult, MODE_SMA, PRICE_CLOSE, MODE_SIGNAL, shift);
            bool StochDown=(Stoch0 < StochSig0);
            //and Stoch0 < Stoch1
            //and Stoch0 <= StochLow
            MacdCurrent=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_MAIN, shift);
            // double MacdPrevious = iMACD(NULL, 0, 12*ParmMult, 26*ParmMult, 9*ParmMult, PRICE_CLOSE, MODE_MAIN, shift + 1);
            MacdSig0=iMACD(NULL, 0, MacdFastMA*ParmMult, MacdSlowMA*ParmMult, MacdSigMA*ParmMult, PRICE_CLOSE, MODE_SIGNAL, shift);
            bool MacdDown=(MacdCurrent < MacdSig0);
            //and  MacdCurrent < MacdPrevious
            //and MacdCurrent < 50
            if (StochDown && RsiDown && MacdDown)
             {  ks=1;kl=0;
                signal_short[shift]=High[shift] + del*Point;
             }  else ks=0;  
           }
      shift--;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar


Indicator Curves created:


Implements a curve of type DRAW_ARROW

Indicators Used:

Moving average indicator
Relative strength index
Stochastic oscillator
MACD Histogram


Custom Indicators Used:

Order Management characteristics:

Other Features: