ToR_1.20_v1
Download scriptThis 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.
//+------------------------------------------------------------------+
//| 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