55 lines
2.5 KiB
MQL5
55 lines
2.5 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| ObjectTimeframes.mq5 |
|
||
|
//| Copyright 2021, MetaQuotes Ltd. |
|
||
|
//| https://www.mql5.com |
|
||
|
//| |
|
||
|
//| The script creates labels for all timeframes, |
|
||
|
//| each one is visible on its own timeframe. |
|
||
|
//+------------------------------------------------------------------+
|
||
|
#include "ObjectPrefix.mqh"
|
||
|
#include "..\..\Include\EnumToArray.mqh"
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Get brief name of timeframe (drop PERIOD_ prefix) |
|
||
|
//+------------------------------------------------------------------+
|
||
|
string GetPeriodName(const int tf)
|
||
|
{
|
||
|
const static int PERIOD_ = StringLen("PERIOD_");
|
||
|
return StringSubstr(EnumToString((ENUM_TIMEFRAMES)tf), PERIOD_);
|
||
|
}
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Script program start function |
|
||
|
//+------------------------------------------------------------------+
|
||
|
void OnStart()
|
||
|
{
|
||
|
// obtain full list of all timeframes
|
||
|
ENUM_TIMEFRAMES tf = 0;
|
||
|
int values[];
|
||
|
const int n = EnumToArray(tf, values, 0, USHORT_MAX);
|
||
|
|
||
|
// find center of the window
|
||
|
const int centerX = (int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) / 2;
|
||
|
const int centerY = (int)ChartGetInteger(0, CHART_HEIGHT_IN_PIXELS) / 2;
|
||
|
|
||
|
// loop through all timeframes
|
||
|
for(int i = 1; i < n; ++i)
|
||
|
{
|
||
|
// create and setup text label for each timeframe
|
||
|
const string name = ObjNamePrefix + (string)i;
|
||
|
ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
|
||
|
ObjectSetInteger(0, name, OBJPROP_XDISTANCE, centerX);
|
||
|
ObjectSetInteger(0, name, OBJPROP_YDISTANCE, centerY);
|
||
|
ObjectSetInteger(0, name, OBJPROP_ANCHOR, ANCHOR_CENTER);
|
||
|
ObjectSetString(0, name, OBJPROP_TEXT, GetPeriodName(values[i]));
|
||
|
ObjectSetInteger(0, name, OBJPROP_FONTSIZE, fmin(centerY, centerX));
|
||
|
ObjectSetInteger(0, name, OBJPROP_COLOR, clrLightGray);
|
||
|
ObjectSetInteger(0, name, OBJPROP_BACK, true);
|
||
|
|
||
|
// calculate the flag of i-th timeframe visibility
|
||
|
const int flag = 1 << (i - 1);
|
||
|
ObjectSetInteger(0, name, OBJPROP_TIMEFRAMES, flag);
|
||
|
}
|
||
|
}
|
||
|
//+------------------------------------------------------------------+
|