Андрей, спасибо за проделанную работу!
1. Вы можете сделать, чтобы сетка была динамическая и двигалась за ценой?
2. Если не трудно, сделайте пожалуйста, чтобы на графике не отображались стрелки, чтобы были видны только ордера.
//---
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);
}
//+------------------------------------------------------------------+
Спасибо, с кодом заработало!
Сейчас следующая ситуация, я закидываю индикатор на график Д1 и на нем ставлю уровни.
1. При удалении уровней с графика Д1, на меньших ТФ уровни не удаляются.
2. На графике Н1 уровни вообще не отображаются.
3. Закидываю уровни на график евро доллар, но они отображаются на графике евро франк.
И сделай пожалуйста, чтоб уровень был привязан к инструменту. А то индюк из маркета на всех парах отображает уровни, где цена одинаковая и получается неразбериха.
cmillion.ru/setka-polzuchka-cm_ea_trailingstoporders-3r/
Wizas