Graphically display current trend for all time frames in one simple panel...

Графикалық бір қарапайым тақтасында барлық мерзімдерін ағымдағы тенденцияны көрсету – MetaTrader индикаторы 4

5331
0
ҮЛЕСІ

Put all your trends for multiple timeframes in a single panel. Declutter and gain focus.

This is a graphical indicator based on slope-direction-trend indicator that has been published under several other forms.

There has been several versions of this indicator published already but none that displayed all time frames in a single graphical panel on your screen.

One can search https://www.mql5.com/en/search#!keyword=slope%20direction%20line to see multiple results.

I have taken this indicator and made it into a graphical panel displaying all time frames and made a few slight modifications to the original code. One of them is that it allows the user to select the second moving average method used for smoothing. The original code used Linear Weighted for its second pass on the numbers whereas I give the user the option to choose the method for smoothing. When using Linear Weighted for both calculations, it makes the indicator too responsive and thus possibly giving false readings on the current trend. If we use Simple as the second averaging method we get a trend that is more indicative of where the price is going.

Another change that I have made is the ability to not only get the direction of the trend (up, down or flat) but also get its value. I will talk about this in another article I plan on publishing shortly on how to use a double SlopeDirection indicator and create a Expert Advisor with it.

But for now, let’s take a quick look at the code. I first define all the object names I will use. The reason why this is good practice to do is that each time you put an object name between quotes, it allocates space in the program for it. So it they are defined once (by using a define statement) you only use up the space in your code once.

// Define trend directions

#define UPTREND 1

#define DOWNTREND -1

#define FLATTREND 0

 

// Define Objectcs

#define TrendPanelTrendPanel

#define InfoLine1InfoLine1

#define InfoLine2InfoLine2

#define TrendLabel “Trend: M1 M5 M15 M30 H1 H4 D1 W1 MN

#define TrendUp “233”

#define TrendDown “234”

#define TrendFlat “232”

#define TrendUnknown “251”

#define StatObjectError “%с(%D) Failed to create ‘%s’. Error = %d

Next, I define two arrays. One with the pixel position for each of the 9 time frames and the second with the time frames. These are defined as global variables.

// Define global variables

int TrendPosition[] = { 44, 64, 88, 114, 136, 156, 174, 194, 216 };

int TrendPeriods[] = { PERIOD_M1, PERIOD_M5, PERIOD_M15, PERIOD_M30, PERIOD_H1, PERIOD_H4, PERIOD_D1, PERIOD_W1, PERIOD_MN1 };

Our indicator OnInit() function calls a function to create the panel and the objects within the panel. It also does a quickDumn Dumncheck on the bars used to calculate the trend. Less than 3 is kind of pointless.

//+——————————————————————+

//| Custom indicator initialization function |

//+——————————————————————+

int OnInit()

{

// Go create objects for indicator panel

егер(Create_Panel() && BarCount >= 3)

return(INIT_SUCCEEDED);

else

return(INIT_FAILED);

}

I will not get into details on how the GetTrend() function really works, there’s already good documentation on this site for that. We’ll just take a look at the graphical DisplayTrend() function.

//+——————————————————————+

//| Display the current trend for all timeframes

//+——————————————————————+

void DisplayTrend(void)

{

int i, cntr, Trend, LastTrend;

string str;

 

үшін(i=1; мен<10; Мен ++)

{

str = “Trend” + DoubleToStr(мен, 0);

Trend = (int)GetTrend(TrendPeriods[і-1], BarCount, әдіс);

егер(Trend == FLATTREND)

{

// I’m flat, find the last trend direction

cntr = 1;

do

{

LastTrend = (int)GetTrend(TrendPeriods[і-1], BarCount, әдіс, жалған, cntr++);

} уақыт(LastTrend == Trend);

ObjectSetText(str, TrendFlat, 8, “WingDings”, (LastTrend == UPTREND ? жасыл : қызыл));

ObjectSetInteger(0, str, OBJPROP_YDISTANCE, 6);

}

else

{

ObjectSetText(str, (Trend == UPTREND ? TrendUp : TrendDown), 8, “WingDings”, (Trend == UPTREND ? жасыл : қызыл));

ObjectSetInteger(0, str, OBJPROP_YDISTANCE, 5 + (Trend == UPTREND ? 1 : -1));

}

}

}

негізінде, we simply loop thru the TrendPeriods[] array (to get all time frames) and set the trend arrow according to that time frame’s trend direction. If the trend is flat, we find the first direction that is not flat to know where the trend was coming from in order to display the side arrow in the color of that direction.

The Create_Panel() function in our OnInit() creates the objects anchored to the bottom left of the screens and uses TrendPosition[] to place the arrows in the right place.

//+——————————————————————+

//| Create the trend panel in the bottom left of the screen

//+——————————————————————+

bool Create_Panel(void)

{

int i;

string str;

// Create the trend indicator window

егер(ObjectCreate(TrendPanel, OBJ_RECTANGLE_LABEL, 0, 0, 0))

{

ObjectSetInteger(0, TrendPanel, OBJPROP_XDISTANCE, 1);

ObjectSetInteger(0, TrendPanel, OBJPROP_YDISTANCE, 29);

ObjectSetInteger(0, TrendPanel, OBJPROP_XSIZE, 240);

ObjectSetInteger(0, TrendPanel, OBJPROP_YSIZE, 26);

ObjectSetInteger(0, TrendPanel, OBJPROP_BGCOLOR, White);

ObjectSetInteger(0, TrendPanel, OBJPROP_BORDER_TYPE, 0);

ObjectSetInteger(0, TrendPanel, OBJPROP_CORNER, CORNER_LEFT_LOWER);

ObjectSetInteger(0, TrendPanel, OBJPROP_COLOR, қызыл);

ObjectSetInteger(0, TrendPanel, OBJPROP_STYLE, STYLE_SOLID);

ObjectSetInteger(0, TrendPanel, OBJPROP_WIDTH, 2);

ObjectSetInteger(0, TrendPanel, OBJPROP_BACK, жалған);

ObjectSetInteger(0, TrendPanel, OBJPROP_SELECTABLE, жалған);

ObjectSetInteger(0, TrendPanel, OBJPROP_SELECTED, жалған);

ObjectSetInteger(0, TrendPanel, OBJPROP_HIDDEN, шынайы);

ObjectSetString(0, TrendPanel, OBJPROP_TOOLTIP, “N”);

}

else

{ PrintFormat(StatObjectError, __FUNCTION__, __LINE__, TrendPanel, GetLastError()); return(жалған); }

егер(ObjectCreate(InfoLine1, OBJ_LABEL, 0, 0, 0))

{

ObjectSet(InfoLine1, OBJPROP_CORNER, CORNER_LEFT_LOWER);

ObjectSet(InfoLine1, OBJPROP_XDISTANCE, 6);

ObjectSet(InfoLine1, OBJPROP_YDISTANCE, 15);

ObjectSetInteger(0, InfoLine1, OBJPROP_SELECTABLE, жалған);

ObjectSetInteger(0, InfoLine1, OBJPROP_HIDDEN, шынайы);

ObjectSetString(0, InfoLine1, OBJPROP_TOOLTIP, “N”);

ObjectSetText(InfoLine1, TrendLabel, 8, “Arial”, Black);

}

else

{ PrintFormat(StatObjectError, __FUNCTION__, __LINE__, InfoLine1, GetLastError()); return(жалған); }

 

егер(ObjectCreate(InfoLine2, OBJ_LABEL, 0, 0, 0))

{

ObjectSet(InfoLine2, OBJPROP_CORNER, CORNER_LEFT_LOWER);

ObjectSet(InfoLine2, OBJPROP_XDISTANCE, 6);

ObjectSet(InfoLine2, OBJPROP_YDISTANCE, 5);

ObjectSetInteger(0, InfoLine2, OBJPROP_SELECTABLE, жалған);

ObjectSetInteger(0, InfoLine2, OBJPROP_HIDDEN, шынайы);

ObjectSetString(0, InfoLine2, OBJPROP_TOOLTIP, “N”);

ObjectSetText(InfoLine2, ” ” + DoubleToStr(BarCount, 0) + ” / ” + DoubleToStr(әдіс, 0), 8, “Arial”, Black);

}

else

{ PrintFormat(StatObjectError, __FUNCTION__, __LINE__, InfoLine2, GetLastError()); return(жалған); }

// Create trend object and display current trend

үшін(i=1; мен<10; Мен ++)

{

str = “Trend” + DoubleToStr(мен, 0);

егер(ObjectCreate(str, OBJ_LABEL, 0, 0, 0))

{

ObjectSet(str, OBJPROP_CORNER, CORNER_LEFT_LOWER);

ObjectSet(str, OBJPROP_XDISTANCE, TrendPosition[і-1]);

ObjectSet(str, OBJPROP_YDISTANCE, 5);

ObjectSetInteger(0, str, OBJPROP_SELECTABLE, жалған);

ObjectSetInteger(0, str, OBJPROP_HIDDEN, шынайы);

ObjectSetString(0, str, OBJPROP_TOOLTIP, “N”);

}

else

{ PrintFormat(StatObjectError, __FUNCTION__, __LINE__, str, GetLastError()); return(жалған); }

}

// Go display current trend

DisplayTrend();

// All good

return(шынайы);

}

This function will return TRUE if it succeeded in creating all the objects, or return FALSE if an error occurred creating an object. The nice thing is that the indicator will display in the EXPERT tab of your console the error code and the line number of the code where the error occurred.

We also need to update the trend indicator for each new tick we receive. This is done by calling DisplayTrend() in our start() function.

//+——————————————————————+

//| Custom indicator iteration function |

//+——————————————————————+

int start()

{

// Display current trend for all timeframes

DisplayTrend();

return(0);

}

Lastly, we destroy all objects created by the indicator when we close the indicator.

//+——————————————————————+

//| Deinitialization function |

//+——————————————————————+

voidOnDeinit(constint reason)

{

// Delete indicator’s objects

егер(ObjectFind(TrendPanel) >= 0) ObjectDelete(TrendPanel);

егер(ObjectFind(InfoLine1) >= 0) ObjectDelete(InfoLine1);

егер(ObjectFind(InfoLine2) >= 0) ObjectDelete(InfoLine2);

үшін(I = 1 INT; мен<10; Мен ++)

егер(ObjectFind(“Trend”+DoubleToStr(мен, 0)) >= 0) ObjectDelete(“Trend”+DoubleToStr(мен, 0));

}

That’s basically it. You now have a nice indicator panel showing the current trend for all time frames in the lower left of your screen.

MT4 көрсеткіштері – Жүктеу нұсқаулары

Графикалық бір қарапайым тақтасында барлық мерзімдерін ағымдағы тенденцияны көрсету – MetaTrader индикаторы 4 бұл Metatrader табылады 4 (MT4) индикатор және форекс индикаторы мәні жинақталған тарихы деректерді өзгертуді болып табылады.

Графикалық бір қарапайым тақтасында барлық мерзімдерін ағымдағы тенденцияны көрсету – MetaTrader индикаторы 4 көзбен көрінбейтін бағасы динамикасының түрлі ерекшеліктер мен үлгілерін анықтау үшін мүмкіндігі қарастырылған.

Осы ақпарат негізінде, трейдерлер тиісінше одан әрі баға қозғалысын болжауға және олардың стратегиясын реттеуге болады.

How to install Graphically display current trend for all time frames in one simple panel – MetaTrader 4.mq4 индикаторы?

  • Download Graphically display current trend for all time frames in one simple panel – MetaTrader 4.mq4 индикаторы
  • Copy Graphically display current trend for all time frames in one simple panel – Сіздің Metatrader Directory үшін MetaTrader 4.mq4 үшін көрсеткіш / сарапшылар / көрсеткіштері /
  • Егер Metatrader Client бастаңыз немесе қайта іске қосыңыз
  • Диаграмманы таңдаңыз және Сіз өз көрсеткішін тексеру үшін келеді мерзімі
  • Іздеу “Custom көрсеткіштері” Сіздің Navigator негізінен сіздің Metatrader Клиенттің қалды
  • Right click on Graphically display current trend for all time frames in one simple panel – MetaTrader 4.mq4 индикаторы
  • Диаграмма бекітіңіз
  • Параметрлерін немесе ОК түймесін басыңыз өзгерту
  • Indicator Graphically display current trend for all time frames in one simple panel – MetaTrader 4.mq4 индикаторы сіздің диаграммада қол жетімді

How to remove Graphically display current trend for all time frames in one simple panel – Сіздің Metatrader бастап MetaTrader 4.mq4 үшін көрсеткіш 4 Кесте?

  • Индикатор Сіздің Metatrader тұтынғышында Диаграмма таңдаңыз
  • Диаграмма тінтуірдің оң жақ түймешігін басыңыз
  • “Индикаторлар тізімі”
  • Көрсеткішті таңдаңыз және жою

XM-жоқ-депозиттік-бонус
MT4 көрсеткіштері төменде көшіріп алу:

Графикалық бір қарапайым тақтасында барлық мерзімдерін ағымдағы тенденцияны көрсету – MetaTrader индикаторы 4

ТҮСІНДІРМЕСІЗ

ПІКІР ҚАЛДЫРУ