TrendManagerOpen2 seperate window_v2

TrendManagerOpen2 seperate window_v2

The Trend Manager Open2 is a technical analysis tool designed to help traders visualize market direction by smoothing out price fluctuations and identifying the prevailing trend. Instead of looking at every minor price tick, this script analyzes broader price movements to provide a clearer picture of where the market is heading.

How the Logic Works

The tool operates by comparing two different "time windows" simultaneously. It calculates a specific price point for both a short-term perspective and a longer-term perspective. This dual-layered approach allows the indicator to recognize both immediate momentum and the broader underlying trend.

1. Identifying Key Price Points For each of the two time windows, the script looks back at a specific number of previous candles (defined by periods) and identifies the highest high and the lowest low within that range. It then calculates the "Middle Price"—essentially the mathematical midpoint between those extremes. This prevents "noise" from individual spikes in price from distorting the data.

2. Comparing Momentum The core logic relies on measuring how these middle prices change over time. The script looks at:

  • Short-term movement: Is the price moving up or down recently?
  • Longer-term movement: Is the price moving up or down over a larger stretch?

3. Visualizing the Trend The tool translates these movements into two distinct lines on your chart:

  • When Trends Align: If both the short-term and long-term movements are moving in the same direction (both up or both down), the script displays the price points clearly to confirm a strong, unified trend.
  • When Trends Conflict: If the short-term movement is moving in the opposite direction of the long-term movement (for example, the market is dipping slightly while the overall trend is still upward), the script adjusts the visual representation. This helps traders identify periods of hesitation or potential reversals where different forces are pulling the price in different directions.

Summary for the Trader

By using this logic, you can more easily distinguish between a temporary "pullback" in a healthy trend and an actual change in market direction. It provides a smoothed, balanced view of the market that helps filter out emotional trading based on minor fluctuations, focusing instead on the harmony (or lack thereof) between short-term momentum and long-term price action.

Miscellaneous
Implements a curve of type %1
9 Views
0 Downloads
0 Favorites
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));
  }
//+------------------------------------------------------------------+

Comments