ToR_1.20_v1

Download script
Author: Copyright � 2007-2008 Tom Balfe
ToR_1.20_v1

This script functions as a comprehensive market environment dashboard designed to help traders distinguish between two primary market states: Trending (where the price moves consistently in one direction) and Ranging (where the price fluctuates within a horizontal boundary).

By analyzing multiple timeframes simultaneously, the tool provides a multi-layered view of market dynamics, allowing you to see how various periods—from short-term scalping windows to long-term trends—behave at a single glance.

Core Logic and Mechanics

The script operates using three primary layers of logic to provide a complete picture of the market:

1. Trend Strength Detection (ADX Analysis)

The tool uses the Average Directional Index (ADX) across six different timeframes (1 min, 5 min, 15 min, 30 min, 1 hour, and 4 hours). It evaluates these values to categorize the market into three states:

  • Ranging: If the ADX value is below a specific threshold, the tool identifies the market as "sideways" or non-trending.
  • Stronger: If the trend is established and the current intensity is increasing compared to the previous period.
  • Weaker: If a trend exists but is currently losing momentum or cooling off.

The script also utilizes directional indicators (DI+ and DI-) to determine the specific direction of these trends, assigning visual cues like colors and arrows to indicate "Uphill" (bullish) or "Downhill" (bearish) movements.

2. Momentum and Entry Tracking (CCI Analysis)

To complement the trend analysis, the script incorporates the Commodity Channel Index (CCI) for specific timeframes. This allows the user to see:

  • Momentum Direction: It identifies whether short-term price action is moving up or down relative to its average.
  • Entry Sentiment: By comparing different CCI periods, it helps traders visualize the "heading" of the market—essentially showing if the immediate price movement aligns with the broader momentum.

3. Execution Environment (Spread Monitoring)

Beyond just direction and strength, the script monitors the Spread (the difference between the bid and ask prices). It acts as a safety filter by highlighting the current spread in real-time. If the spread exceeds a pre-defined threshold, it changes color to alert the trader of high transaction costs, which is vital for maintaining profitability during volatile conditions or low-liquidity sessions.

Visual Feedback System

The logic is translated into a clean on-screen dashboard using several visual indicators:

  • Color Coding: Dynamic colors shift based on whether the market is trending (Green/Red) or ranging (Blue/Grey).
  • Directional Icons: Specialized symbols (Arrows and Squiggles) provide an instant shorthand for trend strength and direction.
  • Textual Labels: Explicit labels like "STRONGER," "WEAKER," or "RANGING" remove ambiguity, providing a clear text-based status for every timeframe monitored.
Indicators Used
Movement directional indexCommodity channel index
17 Views
0 Downloads
0 Favorites
ToR_1.20_v1
//+------------------------------------------------------------------+
//|                                             Trending or Ranging? |
//|                                                     ToR_1.20.mq4 |
//|                                       Copyright © 2008 Tom Balfe |
//|                                                                  |
//| This indicator shows you whether a pair is trending or ranging.  | 
//| For trending markets use moving averages and for ranging         |
//| market use oscillators.                                          |
//|                                                                  |
//| Best of luck in all your trades...                               |
//| Special thanks to whereswaldo!                                   |
//|                                                                  |
//| Version: 1.12                                                    |
//|                                                                  |
//| Changelog:                                                       |
//|     1.20 - added CCI                                             |
//|     1.12 - made color assignment more efficient, made arrow      |
//|            assignment more efficient                             |
//|     1.11 - adjusted fonts, spacing, added ranging, text broken   |
//|     1.10 - added ADX increasing and decreasing notice            |
//|     1.03 - adjusted spacing, fonts, unreleased                   |
//|     1.02 - added arrows, ranging icon, no zero space state       |
//|            for icons/arrows, spacing got messed up, now          | 
//|            fixed                                                 |
//|     1.01 - unreleased, Reduced number of colors, functional      |
//|     1.0  - unreleased, too many colors for ADX values            |
//|                                                                  |
//|                   http://www.forex-tsd.com/members/nittany1.html |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007-2008 Tom Balfe"
#property link      "http://www.forex-tsd.com/members/nittany1.html"
#property link      "redcarsarasota@yahoo.com"
//----
#property indicator_separate_window
//----
int spread;
//---- user selectable stuff
extern int     SpreadThreshold     =6;
extern string  ADX_Settings        ="=== ADX Settings ===";
extern int     ADX_trend_level     =23;
extern int     ADX_trend_strong    =28;
extern string  CCI_Settings        ="=== CCI Settings ===";
extern int     M1_EntryCCI_Period  =14;
extern int     M1_TrendCCI_Period  =50;
extern int     M5_EntryCCI_Period  =14;
extern int     M5_TrendCCI_Period  =34;
extern int     M15_EntryCCI_Period =6;
extern int     M15_TrendCCI_Period =14;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicator short name
   IndicatorShortName("ToR 1.20 ");
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- need to delete objects should user remove indicator
   ObjectsDeleteAll(0,OBJ_LABEL);
   ObjectDelete("ToR120-1");ObjectDelete("ToR120-2");ObjectDelete("ToR120-3");
   ObjectDelete("ToR120-3a");ObjectDelete("ToR120-4");ObjectDelete("ToR120-4a");
   ObjectDelete("ToR120-4d");ObjectDelete("ToR120-5");ObjectDelete("ToR120-6");
   ObjectDelete("ToR120-6a");ObjectDelete("ToR120-6d");ObjectDelete("ToR120-7");
   ObjectDelete("ToR120-8");ObjectDelete("ToR120-8a");ObjectDelete("ToR120-8d");
   ObjectDelete("ToR120-9");ObjectDelete("ToR120-10");ObjectDelete("ToR120-10a");
   ObjectDelete("ToR120-10d");ObjectDelete("ToR120-11");ObjectDelete("ToR120-12");
   ObjectDelete("ToR120-12a");ObjectDelete("ToR120-13");ObjectDelete("ToR120-12d");
   ObjectDelete("ToR120-14");ObjectDelete("ToR120-15");ObjectDelete("ToR120-18d");
   ObjectDelete("ToR120-cci1");ObjectDelete("ToR120-cci2");ObjectDelete("ToR120-cci3");
   ObjectDelete("ToR120-cci4");ObjectDelete("ToR120-cci1a");ObjectDelete("ToR120-cci1b");
   ObjectDelete("ToR120-cci1c");ObjectDelete("ToR120-cci5");ObjectDelete("ToR120-cci6");
   ObjectDelete("ToR120-cci7");ObjectDelete("ToR120-cci8");ObjectDelete("ToR120-cci5b");
   ObjectDelete("ToR120-cci5c");ObjectDelete("ToR120-cci9");ObjectDelete("ToR120-cci10");
   ObjectDelete("ToR120-cci11");ObjectDelete("ToR120-cci12");ObjectDelete("ToR120-9b");
   ObjectDelete("ToR120-cci9c");
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
//---- let's define some stuff 
   // M1 ADX data
   double adx_m1=iADX(NULL,1,14,PRICE_CLOSE,0,0); // ADX 1 min
   double adx_1ago_m1=iADX(NULL,1,14,PRICE_CLOSE,0,1); // ADX 1 min 1 bar ago
   double di_p_m1=iADX(NULL,1,14,PRICE_CLOSE,1,0); // DI+ 1 min
   double di_m_m1=iADX(NULL,1,14,PRICE_CLOSE,2,0); // DI- 1 min
   // M5 ADX data
   double adx_m5=iADX(NULL,5,14,PRICE_CLOSE,0,0); // ADX 5 min
   double adx_1ago_m5=iADX(NULL,5,14,PRICE_CLOSE,0,1); // ADX 5 min 1 bar ago
   double di_p_m5=iADX(NULL,5,14,PRICE_CLOSE,1,0); // DI+ 5 min
   double di_m_m5=iADX(NULL,5,14,PRICE_CLOSE,2,0); // DI- 5 min
   // M15 ADX data
   double adx_m15=iADX(NULL,15,14,PRICE_CLOSE,0,0); // ADX 15 min
   double adx_1ago_m15=iADX(NULL,15,14,PRICE_CLOSE,0,1); // ADX 15 min 1 bar ago
   double di_p_m15=iADX(NULL,15,14,PRICE_CLOSE,1,0); // DI+ 15 min
   double di_m_m15=iADX(NULL,15,14,PRICE_CLOSE,2,0); // DI- 15 min
   // M30 ADX data
   double adx_m30=iADX(NULL,30,14,PRICE_CLOSE,0,0); // ADX 30 min
   double adx_1ago_m30=iADX(NULL,30,14,PRICE_CLOSE,0,1); // ADX 30 min 1 bar ago
   double di_p_m30=iADX(NULL,30,14,PRICE_CLOSE,1,0); // DI+ 30 min
   double di_m_m30=iADX(NULL,30,14,PRICE_CLOSE,2,0); // DI- 30 min
   // h1 ADX data
   double adx_h1=iADX(NULL,60,14,PRICE_CLOSE,0,0); // ADX 1 hour
   double adx_1ago_h1=iADX(NULL,60,14,PRICE_CLOSE,0,1); // ADX 1 hr 1 bar ago
   double di_p_h1=iADX(NULL,60,14,PRICE_CLOSE,1,0); // DI+ 1 hour
   double di_m_h1=iADX(NULL,60,14,PRICE_CLOSE,2,0); // DI- 1 hour
   // h4 ADX data
   double adx_h4=iADX(NULL,240,14,PRICE_CLOSE,0,0); // ADX 4 hour
   double adx_1ago_h4=iADX(NULL,240,14,PRICE_CLOSE,0,1); // ADX 4 hr 1 bar ago
   double di_p_h4=iADX(NULL,240,14,PRICE_CLOSE,1,0); // DI+ 4 hour
   double di_m_h4=iADX(NULL,240,14,PRICE_CLOSE,2,0); // DI- 4 hour
   // M1 CCI data
   double cci_entry_m1=iCCI(NULL,1,M1_EntryCCI_Period,PRICE_TYPICAL,0);
   double cci_trend_m1=iCCI(NULL,1,M1_TrendCCI_Period,PRICE_TYPICAL,0);
   double cci_entry_1ago_m1=iCCI(NULL,1,M1_EntryCCI_Period,PRICE_TYPICAL,1);
   double cci_trend_1ago_m1=iCCI(NULL,1,M1_TrendCCI_Period,PRICE_TYPICAL,1);
   // M5 CCI data
   double cci_entry_m5=iCCI(NULL,5,M5_EntryCCI_Period,PRICE_TYPICAL,0);
   double cci_trend_m5=iCCI(NULL,5,M5_TrendCCI_Period,PRICE_TYPICAL,0);
   double cci_entry_1ago_m5=iCCI(NULL,5,M5_EntryCCI_Period,PRICE_TYPICAL,1);
   double cci_trend_1ago_m5=iCCI(NULL,5,M5_TrendCCI_Period,PRICE_TYPICAL,1);
   // M15 CCI data
   double cci_entry_m15=iCCI(NULL,15,M15_EntryCCI_Period,PRICE_TYPICAL,0);
   double cci_trend_m15=iCCI(NULL,15,M15_TrendCCI_Period,PRICE_TYPICAL,0);
   double cci_entry_1ago_m15=iCCI(NULL,15,M15_EntryCCI_Period,PRICE_TYPICAL,1);
   double cci_trend_1ago_m15=iCCI(NULL,15,M15_TrendCCI_Period,PRICE_TYPICAL,1);
//---- define colors and arrows 
   color adx_color_m1,adx_color_m5,adx_color_m15,adx_color_m30,adx_color_h1,adx_color_h4,
   cci_color_entry_m1,cci_color_entry_m5,cci_color_entry_m15, cci_color_trend_m1,
   cci_color_trend_m5,cci_color_trend_m15;
//----   
   string  adx_arrow_m1,adx_arrow_m5,adx_arrow_m15,adx_arrow_m30,adx_arrow_h1,adx_arrow_h4;
//----- Assign colors
   adx_color_m1=assigncolor(adx_m1,ADX_trend_level,di_p_m1, di_m_m1);
   adx_color_m5=assigncolor(adx_m5,ADX_trend_level,di_p_m5, di_m_m5);
   adx_color_m15=assigncolor(adx_m15,ADX_trend_level,di_p_m15, di_m_m15);
   adx_color_m30=assigncolor(adx_m30,ADX_trend_level,di_p_m30, di_m_m30);
   adx_color_h1=assigncolor(adx_h1,ADX_trend_level,di_p_h1, di_m_h1);
   adx_color_h4=assigncolor(adx_h4,ADX_trend_level,di_p_h4, di_m_h4);
//----
   cci_color_entry_m1=assignCCIcolor (cci_entry_m1);
   cci_color_entry_m5=assignCCIcolor (cci_entry_m5);
   cci_color_entry_m15=assignCCIcolor (cci_entry_m15);
   cci_color_trend_m1=assignCCIcolor (cci_trend_m1);
   cci_color_trend_m5=assignCCIcolor (cci_trend_m5);
   cci_color_trend_m15=assignCCIcolor (cci_trend_m15);
//---- feed all the ADX values into strings      
   string adx_value_m1=adx_m1;
   string adx_value_m5=adx_m5;
   string adx_value_m15=adx_m15;
   string adx_value_m30=adx_m30;
   string adx_value_h1=adx_h1;
   string adx_value_h4=adx_h4;
//---- feed all the CCI values into strings 
   string cci_value_entry_m1=cci_entry_m1;
   string cci_value_trend_m1=cci_trend_m1;
   string cci_value_e1ago_m1=cci_entry_1ago_m1;
   string cci_value_t1ago_m1=cci_entry_1ago_m1;
   string cci_value_entry_m5=cci_entry_m5;
   string cci_value_trend_m5=cci_trend_m5;
   string cci_value_e1ago_m5=cci_entry_1ago_m5;
   string cci_value_t1ago_m5=cci_entry_1ago_m5;
   string cci_value_entry_m15=cci_entry_m15;
   string cci_value_trend_m15=cci_trend_m15;
   string cci_value_e1ago_m15=cci_entry_1ago_m15;
   string cci_value_t1ago_m15=cci_entry_1ago_m15;
//----- Assign Arrows
   adx_arrow_m1=AssignArrow(adx_m1,di_p_m1,di_m_m1);
   adx_arrow_m5=AssignArrow(adx_m5,di_p_m5,di_m_m5);
   adx_arrow_m15= AssignArrow(adx_m15,di_p_m15,di_m_m15);
   adx_arrow_m30= AssignArrow(adx_m30,di_p_m30,di_m_m30);
   adx_arrow_h1=AssignArrow(adx_h1,di_p_h1,di_m_h1);
   adx_arrow_h4=AssignArrow(adx_h4,di_p_h4,di_m_h4);
//---- defines what spread is 
   spread=MarketInfo(Symbol(),MODE_SPREAD);
//+------------------------------------------------------------------+
//|  Spread                                                          |
//+------------------------------------------------------------------+
   ObjectCreate("ToR120-1", OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-1","SPREAD:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-1", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-1", OBJPROP_XDISTANCE, 65);
   ObjectSet("ToR120-1", OBJPROP_YDISTANCE, 2);
//---- creates spread number, Lime if less than threshold, Red if above it
   ObjectCreate("ToR120-2", OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   if (spread<=SpreadThreshold)
     {
      ObjectSetText("ToR120-2",DoubleToStr(spread ,0),10, "Arial Bold", Lime);
     }
   else
      ObjectSetText("ToR120-2",DoubleToStr(spread ,0),10, "Arial Bold", Red);
   ObjectSet("ToR120-2", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-2", OBJPROP_XDISTANCE, 115);
   ObjectSet("ToR120-2", OBJPROP_YDISTANCE, 2);
//+------------------------------------------------------------------+
//|  1 MIN                                                           |
//+------------------------------------------------------------------+ 
   ObjectCreate("ToR120-3",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-3","1 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-3", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-3", OBJPROP_XDISTANCE, 150);
   ObjectSet("ToR120-3", OBJPROP_YDISTANCE, 2);
//---- create text "Getting: "
   ObjectCreate("ToR120-3a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-3a","CHANGE:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-3a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-3a", OBJPROP_XDISTANCE, 135);
   ObjectSet("ToR120-3a", OBJPROP_YDISTANCE, 17);
//---- create 1 min value
   ObjectCreate("ToR120-4",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-4", " ADX "+StringSubstr(adx_value_m1,0,5)+" ",9, "Arial Bold",adx_color_m1);
   ObjectSet("ToR120-4", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-4", OBJPROP_XDISTANCE, 185);
   ObjectSet("ToR120-4", OBJPROP_YDISTANCE, 2);
//---- create 1 min arrow, squiggle if ranging
   ObjectCreate("ToR120-4a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-4a",adx_arrow_m1,9, "Wingdings",adx_color_m1);
   ObjectSet("ToR120-4a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-4a", OBJPROP_XDISTANCE, 250);
   ObjectSet("ToR120-4a", OBJPROP_YDISTANCE, 2);
//----create 1 min Strong/Weaker/Ranging
   ObjectCreate("ToR120-4d",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-4d", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-4d", OBJPROP_XDISTANCE, 190);
   ObjectSet("ToR120-4d", OBJPROP_YDISTANCE, 17);
   if (adx_m1 < ADX_trend_level)
     {
      ObjectSetText("ToR120-4d", " RANGING ",8, "Arial Bold",Silver);
     } 
      else if (adx_m1 > adx_1ago_m1)
        {
         ObjectSetText("ToR120-4d", " STRONGER ",8, "Arial Bold",Silver);
        } 
         else
     {
      ObjectSetText("ToR120-4d", " WEAKER ",8, "Arial Bold",Silver);
     }
//---- CCI stuff ---- :)~~~
//---- 1st "1 MIN:"
   ObjectCreate("ToR120-cci1",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci1","1 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci1", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci1", OBJPROP_XDISTANCE, 125);
   ObjectSet("ToR120-cci1", OBJPROP_YDISTANCE, 35);
//---- create 1 min cci entry value
   ObjectCreate("ToR120-cci2",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci2", " CCI(" + M1_EntryCCI_Period + ") "+StringSubstr(cci_value_entry_m1,0,6)+" ",9, "Arial Bold",cci_color_entry_m1);
   ObjectSet("ToR120-cci2", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci2", OBJPROP_XDISTANCE, 160);
   ObjectSet("ToR120-cci2", OBJPROP_YDISTANCE, 35);
//---- 2nd "1 MIN:"
   ObjectCreate("ToR120-cci3",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci3","1 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci3", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci3", OBJPROP_XDISTANCE, 250);
   ObjectSet("ToR120-cci3", OBJPROP_YDISTANCE, 35);
//---- creat 1 min cci trend value
   ObjectCreate("ToR120-cci4",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci4", " CCI(" + M1_TrendCCI_Period + ") "+StringSubstr(cci_value_trend_m1,0,6)+" ",9, "Arial Bold",cci_color_trend_m1);
   ObjectSet("ToR120-cci4", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci4", OBJPROP_XDISTANCE, 290);
   ObjectSet("ToR120-cci4", OBJPROP_YDISTANCE, 35);
//---- create text "Heading: "
   ObjectCreate("ToR120-cci1a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci1a","HEADING:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci1a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci1a", OBJPROP_XDISTANCE, 105);
   ObjectSet("ToR120-cci1a", OBJPROP_YDISTANCE, 50);
//---- create 1 min entry CCI direction
   ObjectCreate("ToR120-cci1b",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-cci1b", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci1b", OBJPROP_XDISTANCE, 180);
   ObjectSet("ToR120-cci1b", OBJPROP_YDISTANCE, 50);
   if (cci_entry_m1 > cci_entry_1ago_m1)
     {
      ObjectSetText("ToR120-cci1b", " UPHILL ",8, "Arial Bold",Silver);
     }
      else
     {
      ObjectSetText("ToR120-cci1b", " DOWNHILL ",8, "Arial Bold",Silver);
     }
//---- create 1 min trend cci direction
   ObjectCreate("ToR120-cci1c",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-cci1c", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci1c", OBJPROP_XDISTANCE, 310);
   ObjectSet("ToR120-cci1c", OBJPROP_YDISTANCE, 50);
   if (cci_trend_m1 > cci_trend_1ago_m1)
     {
      ObjectSetText("ToR120-cci1c", " UPHILL ",8, "Arial Bold",Silver);
     }
      else
     {
      ObjectSetText("ToR120-cci1c", " DOWNHILL ",8, "Arial Bold",Silver);
     }
//+------------------------------------------------------------------+
//|  5 MIN                                                           |
//+------------------------------------------------------------------+
   ObjectCreate("ToR120-5",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-5","5 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-5", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-5", OBJPROP_XDISTANCE, 270);
   ObjectSet("ToR120-5", OBJPROP_YDISTANCE, 2);
//---- create 5 min value
   ObjectCreate("ToR120-6",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-6", " ADX "+StringSubstr(adx_value_m5,0,5)+" ",9, "Arial Bold",adx_color_m5);
   ObjectSet("ToR120-6", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-6", OBJPROP_XDISTANCE, 305);
   ObjectSet("ToR120-6", OBJPROP_YDISTANCE, 2);
//---- create 5 min arrow, squiggle if ranging
   ObjectCreate("ToR120-6a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-6a",adx_arrow_m5,9, "Wingdings",adx_color_m5);
   ObjectSet("ToR120-6a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-6a", OBJPROP_XDISTANCE, 370);
   ObjectSet("ToR120-6a", OBJPROP_YDISTANCE, 2);
//---- create 5 min Strong/Weaker/Ranging
   ObjectCreate("ToR120-6d",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-6d", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-6d", OBJPROP_XDISTANCE, 310);
   ObjectSet("ToR120-6d", OBJPROP_YDISTANCE, 17);
   if (adx_m5 < ADX_trend_level)
     {
      ObjectSetText("ToR120-6d", " RANGING ",8, "Arial Bold",Silver);
     }
      else if (adx_m5 > adx_1ago_m5)
        {
         ObjectSetText("ToR120-6d", " STRONGER ",8, "Arial Bold",Silver);
        }
         else
     {
      ObjectSetText("ToR120-6d", " WEAKER ",8, "Arial Bold",Silver);
     }
//---- CCI stuff ---- :)~~~
//---- 1st "5 MIN:"
   ObjectCreate("ToR120-cci5",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci5","5 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci5", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci5", OBJPROP_XDISTANCE, 380);
   ObjectSet("ToR120-cci5", OBJPROP_YDISTANCE, 35);
//---- create 5 min cci entry value
   ObjectCreate("ToR120-cci6",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci6", " CCI(" + M5_EntryCCI_Period + ") "+StringSubstr(cci_value_entry_m5,0,6)+" ",9, "Arial Bold",cci_color_entry_m5);
   ObjectSet("ToR120-cci6", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci6", OBJPROP_XDISTANCE, 415);
   ObjectSet("ToR120-cci6", OBJPROP_YDISTANCE, 35);
//---- 2nd "5 MIN:"
   ObjectCreate("ToR120-cci7",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci7","5 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci7", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci7", OBJPROP_XDISTANCE, 510);
   ObjectSet("ToR120-cci7", OBJPROP_YDISTANCE, 35);
//---- creat 5 min cci trend value
   ObjectCreate("ToR120-cci8",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci8", " CCI(" + M5_TrendCCI_Period + ") "+StringSubstr(cci_value_trend_m5,0,6)+" ",9, "Arial Bold",cci_color_trend_m5);
   ObjectSet("ToR120-cci8", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci8", OBJPROP_XDISTANCE, 545);
   ObjectSet("ToR120-cci8", OBJPROP_YDISTANCE, 35);
//---- create 5 min entry CCI direction
   ObjectCreate("ToR120-cci5b",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-cci5b", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci5b", OBJPROP_XDISTANCE, 430);
   ObjectSet("ToR120-cci5b", OBJPROP_YDISTANCE, 50);
   if (cci_entry_m5 > cci_entry_1ago_m5)
     {
      ObjectSetText("ToR120-cci5b", " UPHILL ",8, "Arial Bold",Silver);
     }
      else
     {
      ObjectSetText("ToR120-cci5b", " DOWNHILL ",8, "Arial Bold",Silver);
     }
//---- create 5 min trend CCI direction
   ObjectCreate("ToR120-cci5c",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-cci5c", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci5c", OBJPROP_XDISTANCE, 560);
   ObjectSet("ToR120-cci5c", OBJPROP_YDISTANCE, 50);
   if (cci_trend_m5 > cci_trend_1ago_m5)
     {
      ObjectSetText("ToR120-cci5c", " UPHILL ",8, "Arial Bold",Silver);
     }
      else
     {
      ObjectSetText("ToR120-cci5c", " DOWNHILL ",8, "Arial Bold",Silver);
     }
//+------------------------------------------------------------------+
//|  15 MIN                                                          |
//+------------------------------------------------------------------+
   ObjectCreate("ToR120-7",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-7","15 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-7", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-7", OBJPROP_XDISTANCE, 390);
   ObjectSet("ToR120-7", OBJPROP_YDISTANCE, 2);
//---- create 15 min value
   ObjectCreate("ToR120-8",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-8", " ADX "+StringSubstr(adx_value_m15,0,5)+" ",9, "Arial Bold",adx_color_m15);
   ObjectSet("ToR120-8", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-8", OBJPROP_XDISTANCE, 430);
   ObjectSet("ToR120-8", OBJPROP_YDISTANCE, 2);
//---- create 15 min arrow, squiggle if ranging
   ObjectCreate("ToR120-8a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-8a",adx_arrow_m15,9, "Wingdings",adx_color_m15);
   ObjectSet("ToR120-8a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-8a", OBJPROP_XDISTANCE, 495);
   ObjectSet("ToR120-8a", OBJPROP_YDISTANCE, 2);
//----create 15 min Strong/Weaker/Ranging
   ObjectCreate("ToR120-8d",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-8d", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-8d", OBJPROP_XDISTANCE, 435);
   ObjectSet("ToR120-8d", OBJPROP_YDISTANCE, 17);
   if (adx_m15 < ADX_trend_level)
     {
      ObjectSetText("ToR120-8d", " RANGING ",8, "Arial Bold",Silver);
     }
      else if (adx_m15 > adx_1ago_m15)
        {
         ObjectSetText("ToR120-8d", " STRONGER ",8, "Arial Bold",Silver);
        }
         else
     {
      ObjectSetText("ToR120-8d", " WEAKER ",8, "Arial Bold",Silver);
     }
//---- CCI stuff ---- :)~~~
//---- 1st "15 MIN:"
   ObjectCreate("ToR120-cci9",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci9","15 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci9", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci9", OBJPROP_XDISTANCE, 635);
   ObjectSet("ToR120-cci9", OBJPROP_YDISTANCE, 35);
//---- create 15 min cci entry value
   ObjectCreate("ToR120-cci10",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci10", " CCI(" + M15_EntryCCI_Period + ") "+StringSubstr(cci_value_entry_m15,0,6)+" ",9, "Arial Bold",cci_color_entry_m15);
   ObjectSet("ToR120-cci10", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci10", OBJPROP_XDISTANCE, 675);
   ObjectSet("ToR120-cci10", OBJPROP_YDISTANCE, 35);
//---- 2nd "15 MIN:"
   ObjectCreate("ToR120-cci11",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci11","15 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-cci11", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci11", OBJPROP_XDISTANCE, 755);
   ObjectSet("ToR120-cci11", OBJPROP_YDISTANCE, 35);
//---- create 15 min cci trend value
   ObjectCreate("ToR120-cci12",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-cci12", " CCI(" + M15_TrendCCI_Period + ") "+StringSubstr(cci_value_trend_m15,0,6)+" ",9, "Arial Bold",cci_color_trend_m15);
   ObjectSet("ToR120-cci12", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci12", OBJPROP_XDISTANCE, 795);
   ObjectSet("ToR120-cci12", OBJPROP_YDISTANCE, 35);
//---- create 15 min entry CCI direction
   ObjectCreate("ToR120-cci9b",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-cci9b", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci9b", OBJPROP_XDISTANCE, 690);
   ObjectSet("ToR120-cci9b", OBJPROP_YDISTANCE, 50);
   if (cci_entry_m15 > cci_entry_1ago_m15)
     {
      ObjectSetText("ToR120-cci9b", " UPHILL ",8, "Arial Bold",Silver);
     }
      else
     {
      ObjectSetText("ToR120-cci9b", " DOWNHILL ",8, "Arial Bold",Silver);
     }
//---- create 15 min trend CCI direction
   ObjectCreate("ToR120-cci9c",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-cci9c", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-cci9c", OBJPROP_XDISTANCE, 810);
   ObjectSet("ToR120-cci9c", OBJPROP_YDISTANCE, 50);
   if (cci_trend_m15 > cci_trend_1ago_m15)
     {
      ObjectSetText("ToR120-cci9c", " UPHILL ",8, "Arial Bold",Silver);
     }
      else
     {
      ObjectSetText("ToR120-cci9c", " DOWNHILL ",8, "Arial Bold",Silver);
     }
//+------------------------------------------------------------------+
//|  30 MIN                                                          |
//+------------------------------------------------------------------+
   ObjectCreate("ToR120-9",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-9","30 MIN:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-9", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-9", OBJPROP_XDISTANCE, 515);
   ObjectSet("ToR120-9", OBJPROP_YDISTANCE, 2);
//---- create 30 min value
   ObjectCreate("ToR120-10",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-10", " ADX "+StringSubstr(adx_value_m30,0,5)+" ",9, "Arial Bold",adx_color_m30);
   ObjectSet("ToR120-10", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-10", OBJPROP_XDISTANCE, 555);
   ObjectSet("ToR120-10", OBJPROP_YDISTANCE, 2);
//---- create 30 min arrow, squiggle if ranging
   ObjectCreate("ToR120-10a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-10a",adx_arrow_m30,9, "Wingdings",adx_color_m30);
   ObjectSet("ToR120-10a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-10a", OBJPROP_XDISTANCE, 620);
   ObjectSet("ToR120-10a", OBJPROP_YDISTANCE, 2);
//---- create 30 min Strong/Weaker/Ranging
   ObjectCreate("ToR120-10d",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-10d", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-10d", OBJPROP_XDISTANCE, 560);
   ObjectSet("ToR120-10d", OBJPROP_YDISTANCE, 17);
   if (adx_m30 < ADX_trend_level)
     {
      ObjectSetText("ToR120-10d", " RANGING ",8, "Arial Bold",Silver);
     }
      else if (adx_m30 > adx_1ago_m30)
        {
         ObjectSetText("ToR120-10d", " STRONGER ",8, "Arial Bold",Silver);
        }
         else
     {
      ObjectSetText("ToR120-10d", " WEAKER ",8, "Arial Bold",Silver);
     }
//+------------------------------------------------------------------+
//|  1 HOUR                                                          |
//+------------------------------------------------------------------+
   ObjectCreate("ToR120-11",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-11","1 HR:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-11", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-11", OBJPROP_XDISTANCE, 640);
   ObjectSet("ToR120-11", OBJPROP_YDISTANCE, 2);
//---- create 15 min value
   ObjectCreate("ToR120-12",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-12", " ADX "+StringSubstr(adx_value_h1,0,5)+" ",9, "Arial Bold",adx_color_h1);
   ObjectSet("ToR120-12", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-12", OBJPROP_XDISTANCE, 670);
   ObjectSet("ToR120-12", OBJPROP_YDISTANCE, 2);
   ObjectCreate("ToR120-12a",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-12a",adx_arrow_h1,9, "Wingdings",adx_color_h1);
   ObjectSet("ToR120-12a", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-12a", OBJPROP_XDISTANCE, 735);
   ObjectSet("ToR120-12a", OBJPROP_YDISTANCE, 2);
//----create hour min Strong/Weaker/Ranging
   ObjectCreate("ToR120-12d",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-12d", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-12d", OBJPROP_XDISTANCE, 675);
   ObjectSet("ToR120-12d", OBJPROP_YDISTANCE, 17);
   if (adx_h1 < ADX_trend_level)
     {
      ObjectSetText("ToR120-12d", " RANGING ",8, "Arial Bold",Silver);
     }
      else if (adx_h1 > adx_1ago_h1)
        {
         ObjectSetText("ToR120-12d", " STRONGER ",8, "Arial Bold",Silver);
        }
         else
     {
      ObjectSetText("ToR120-12d", " WEAKER ",8, "Arial Bold",Silver);
     }
//+------------------------------------------------------------------+
//|  4 HOUR                                                          |
//+------------------------------------------------------------------+
   ObjectCreate("ToR120-13",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-13","4 HR:", 8, "Arial Bold", LightSteelBlue);
   ObjectSet("ToR120-13", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-13", OBJPROP_XDISTANCE, 760);
   ObjectSet("ToR120-13", OBJPROP_YDISTANCE, 2);
//---- create 15 min value
   ObjectCreate("ToR120-14",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-14", " ADX "+StringSubstr(adx_value_h4,0,5)+" ",9, "Arial Bold",adx_color_h4);
   ObjectSet("ToR120-14", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-14", OBJPROP_XDISTANCE, 790);
   ObjectSet("ToR120-14", OBJPROP_YDISTANCE, 2);
   ObjectCreate("ToR120-15",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSetText("ToR120-15",adx_arrow_h4,9, "Wingdings",adx_color_h4);
   ObjectSet("ToR120-15", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-15", OBJPROP_XDISTANCE, 855);
   ObjectSet("ToR120-15", OBJPROP_YDISTANCE, 2);
//---- create 4hour min Strong/Weaker/Ranging
   ObjectCreate("ToR120-18d",OBJ_LABEL, WindowFind("ToR 1.20 "), 0, 0);
   ObjectSet("ToR120-18d", OBJPROP_CORNER, 0);
   ObjectSet("ToR120-18d", OBJPROP_XDISTANCE, 795);
   ObjectSet("ToR120-18d", OBJPROP_YDISTANCE, 17);
   if (adx_h4 < ADX_trend_level)
     {
      ObjectSetText("ToR120-18d", " RANGING ",8, "Arial Bold",Silver);
     }
      else if (adx_h4 > adx_1ago_h4)
        {
         ObjectSetText("ToR120-18d", " STRONGER ",8, "Arial Bold",Silver);
        }
         else
     {
      ObjectSetText("ToR120-18d", " WEAKER ",8, "Arial Bold",Silver);
     }
//----
   return(0);
  } //---- end of main loop
//+------------------------------------------------------------------+
//|  Common Functions                                                |
//+------------------------------------------------------------------+
   color assigncolor(double adx_time,double ADX_trend_level,double di_p_time,double di_m_time)
  {
   if (adx_time < ADX_trend_level) 
    {
     return(LightSkyBlue); 
    }
     else if (di_p_time > di_m_time) 
    {
     return(Lime); 
    }
     else 
      {
       return(Red); 
      }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   color assignCCIcolor(double cci_time)
  {
   if (cci_time > 0) 
   {
    return(Lime); 
   }
   else 
   {
   return(Red); 
   }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   string AssignArrow (double adx_time, double di_p_time, double di_m_time)
  {
   if ((adx_time < ADX_trend_level) && (adx_time!=0))
     {
      return("h");
     }
   else if (adx_time < ADX_trend_strong )
        {
         if (di_p_time > di_m_time)
           {
            return("ì");
           }
         else
           {
            return("î");
           }
        } else
     {
      if (di_p_time > di_m_time)
        {
         return("é");
        }
         else
        {
         return("ê");
        }
     }
  } //End Function
//+------------------------------------------------------------------+

Comments