Stodiv_v2





//+------------------------------------------------------------------+
//|                                                       Stodiv.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005-2006, RickD"
#property link      "http://e2e-fx.net"
//----
#property indicator_chart_window
#property indicator_buffers 2
//----
#property indicator_color1 Crimson
#property indicator_color2 DodgerBlue
//----
extern int MaxBars=300;
extern int dx=30;
extern int dy=20;
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//----
double buf1[];
double buf2[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void init() 
  {
   SetIndexBuffer(0, buf1);
   SetIndexBuffer(1, buf2);
   //
   SetIndexStyle(0, DRAW_ARROW, EMPTY, 2);
   SetIndexArrow(0, 234);
   //
   SetIndexStyle(1, DRAW_ARROW, EMPTY, 2);
   SetIndexArrow(1, 233);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void start() 
  {
   double fr0, fr1;
   double sto0, sto1;
//----
   int counted=IndicatorCounted();
   if (counted < 0) return(-1);
   if (counted > 0) counted--;
   int limit=Bars-counted;
   limit=MathMin(limit, Bars-dx);
   limit=MathMin(limit, MaxBars);
     for(int i=0; i < limit; i++) 
     {
      buf1[i]=0;
      fr0=iFractals(NULL, 0, MODE_UPPER, i+2);
      if (fr0==0) continue;
        for(int j=i+1; j < i+dx; j++) 
        {
         fr1=iFractals(NULL, 0, MODE_UPPER, j+2);
         if (fr1==0) continue;
           if (fr0 > fr1+dy*Point) 
           {
            sto0=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, i+2);
            sto1=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, j+2);
              if (sto0 < sto1) 
              {
               buf1[i]=High[i] + 20*Point;
               break;
              }
           }
        }
     }
     for(i=0; i < limit; i++) 
     {
      buf2[i]=0;
      fr0=iFractals(NULL, 0, MODE_LOWER, i+2);
      if (fr0==0) continue;
        for(j=i+1; j < i+dx; j++) 
        {
         fr1=iFractals(NULL, 0, MODE_LOWER, j+2);
         if (fr1==0) continue;
           if (fr0 < fr1-dy*Point) 
           {
            sto0=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, i+2);
            sto1=iStochastic(NULL, 0, KPeriod, DPeriod, Slowing, MODE_SMA, 0, MODE_MAIN, j+2);
              if (sto0 > sto1) 
              {
               buf2[i]=Low[i] - 20*Point;
               break;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

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


Indicator Curves created:


Implements a curve of type DRAW_ARROW

Indicators Used:

Fractals
Stochastic oscillator


Custom Indicators Used:

Order Management characteristics:

Other Features: