Здравствуйте, нужен индикатор для мт 5 (5 знак)
Синхронизация горизонтальных уровней на выбранных таймфреймах.
1. На дневной график накидываю индикатор, выбираю тфы на которых будут отображаться уровни.
Индикатор находится на одном графике, а уровни синхронно отображаются на всех выбранных тф.
2. Уровень привязан к инструменту. Нужно сделать так, чтобы уровень не отображался на другом инструменте с такой же ценой.
В индикаторе с маркета отображается вот так:
prnt.sc/14lgfuu
Куча уровней с разных инструментов, лишние уровни очень мешают и отвлекают.
Заранее благодарю!
Комментарии (15)
9 Wizas Автор Сообщений: 146
35 AM2 Сообщений: 16250 - Андрей
9 Wizas Автор Сообщений: 146
35 AM2 Сообщений: 16250 - Андрей
9 Wizas Автор Сообщений: 146
35 AM2 Сообщений: 16250 - Андрей
35 AM2 Сообщений: 16250 - Андрей
9 Wizas Автор Сообщений: 146
9 Wizas Автор Сообщений: 146
35 AM2 Сообщений: 16250 - Андрей
35 AM2 Сообщений: 16250 - Андрей
9 Wizas Автор Сообщений: 146
//+------------------------------------------------------------------+
//| ChartLevels.mq5 |
//| Copyright 2021, AM2 |
//| www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright «Copyright 2021, AM2»
#property link «www.forexsystems.biz»
#property version «1.00»
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Горизонтальная линия |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,color clr=Red,long id=0)
{
ObjectDelete(id,name);
ObjectCreate(id,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
ObjectSetInteger(id,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
ObjectSetInteger(id,name,OBJPROP_WIDTH,1);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger(id,name,OBJPROP_HIDDEN,0);
//--- включим (true) или отключим (false) режим перемещения линии мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
ObjectSetInteger(id,name,OBJPROP_SELECTABLE,1);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
for(int i=0; i<ObjectsTotal(0,0,OBJ_HLINE); i++)
{
string nm=ObjectName(0,i,0);
double pr=ObjectGetDouble(0,nm,OBJPROP_PRICE);
//--- переменные для идентификаторов графиков
long currChart,prevChart=ChartFirst();
int j=0;
while(j<111)// у нас наверняка не больше 100 открытых графиков
{
currChart=ChartNext(prevChart); // на основании предыдущего получим новый график
if(currChart<0)
break; // достигли конца списка графиков
if(ChartSymbol(currChart)==_Symbol)
{
PutHLine(nm,pr,Blue,currChart);
}
prevChart=currChart;// запомним идентификатор текущего графика для ChartNext()
j++;// не забудем увеличить счетчик
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
9 Wizas Автор Сообщений: 146
35 AM2 Сообщений: 16250 - Андрей
35 AM2 Сообщений: 16250 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий