TrendManagerOpen2 seperate window_v2





//+------------------------------------------------------------------+
//|                 Trend Manager Open2                              |
//|                 Copyright © 2000-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
// Look & Feel based on indicator sold at traderstradingsystem.com
// No representation it is identical.
// This file is licensed under the terms of the GNU General Public License V2.
// (c) 2006 Matt Kennel (mbkennel@gmail.com) 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
//----
extern int TM_Period_1=7;
extern int TM_Shift_1=2;
extern int TM_Period_2=13;
extern int TM_Shift_2=1;
//----
int Max_Period;
int Max_Shift;
//----
double SpanA_Buffer[];
double SpanB_Buffer[];
int a_begin;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   Max_Shift=MathMax(TM_Shift_1,TM_Shift_2);
   Max_Period=MathMax(TM_Period_1,TM_Period_2);
   int b_begin=Max_Period+Max_Shift-1;
//----
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID);
   SetIndexBuffer(1,SpanB_Buffer);
   SetIndexDrawBegin(1,b_begin);
   SetIndexLabel(1,"TM_Period+");
   //
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID);
   SetIndexBuffer(0,SpanA_Buffer);
   SetIndexDrawBegin(0,b_begin);
   SetIndexLabel(0,"TM_Period");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int    i,k;
   int    counted_bars=IndicatorCounted();
   double high,low,price;
//----
   if(Bars<=Max_Period) return(0);
   if(counted_bars<1)
     {
      for(i=1;i<=Max_Period;i++)
        {
         SpanA_Buffer[Bars-i]=0;
         SpanB_Buffer[Bars-i]=0;
        }
     }
   i=Bars-Max_Period;
   if(counted_bars>Max_Period) i=Bars-counted_bars-1;
   while(i>=0)
     {
      double M1, M1b;
      double M2, M2b;
      //
      M1=MiddlePrice(TM_Period_1,i);
      M1b=MiddlePrice(TM_Period_1,i+TM_Shift_1);
      M2=MiddlePrice(TM_Period_2,i);
      M2b=MiddlePrice(TM_Period_2,i+TM_Shift_2);
      //
      double diff1=(M1-M1b); // up or down on short term;
      double diff2=(M2-M2b); // up or down on longer term.
      // each has three choices, hence six possibilities.
        if (diff1*diff2<=0.0) 
        { // opposite signs
         SpanA_Buffer[i]=(M1+M2)*0.5;
         SpanB_Buffer[i]= SpanA_Buffer[i]; //Blue bars
         }
          else 
         {
         SpanA_Buffer[i]=(M1+M2)*0.5;
         SpanB_Buffer[i]=(M1b+M2b)*0.5;
        }
      //   Comment(SpanB_Buffer[i],"\n",SpanA_Buffer[i] );
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  double MiddlePrice(int nback, int shift) 
  {
   double H=High[Highest(NULL,0,MODE_HIGH,nback,shift)];
   double L=Low[Lowest(NULL,0,MODE_LOW,nback,shift)];
//----   
   return( 0.5*(H+L));
  }
//+------------------------------------------------------------------+



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_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: