Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Поставить в таймер проверку общего количества объектов. Как только что-то изменилось пересматриваем последние n-объектов.
Немного разобраться в логике индексирования может помочь этот советник
{
ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true);
ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true);
}
string ObjectsToString( const int Type = -1, const long chartID = 0, const int SubWindow = -1 )
{
const int Total = ObjectsTotal(chartID, SubWindow, Type);
string Str = "Objects " + ((Type == -1) ? "Any" : EnumToString((ENUM_OBJECT)Type)) + " type:";
for (int i = 0; i < Total; i++)
{
const string Name = ObjectName(chartID, i, SubWindow, Type);
Str += "\n" + (string)i + " " + Name + " " + EnumToString((ENUM_OBJECT)ObjectGetInteger(chartID, Name, OBJPROP_TYPE)) +
" " + (string)(datetime)ObjectGetInteger(chartID, Name, OBJPROP_CREATETIME);
}
return(Str);
}
void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam )
{
if ((id == CHARTEVENT_OBJECT_CREATE) || (id == CHARTEVENT_OBJECT_DELETE))
Comment(ObjectsToString() + ((id == CHARTEVENT_OBJECT_CREATE) ? "\n\n" + ObjectsToString((int)ObjectGetInteger(0, sparam, OBJPROP_TYPE)): ""));
}
Немного разобраться в логике индексирования может помочь этот советник
{
ChartSetInteger(0, CHART_EVENT_OBJECT_CREATE, true);
ChartSetInteger(0, CHART_EVENT_OBJECT_DELETE, true);
}
string ObjectsToString( const int Type = -1, const long chartID = 0, const int SubWindow = -1 )
{
const int Total = ObjectsTotal(chartID, SubWindow, Type);
string Str = "Objects " + ((Type == -1) ? "Any" : EnumToString((ENUM_OBJECT)Type)) + " type:";
for (int i = 0; i < Total; i++)
{
const string Name = ObjectName(chartID, i, SubWindow, Type);
Str += "\n" + (string)i + " " + Name + " " + EnumToString((ENUM_OBJECT)ObjectGetInteger(chartID, Name, OBJPROP_TYPE)) +
" " + (string)(datetime)ObjectGetInteger(chartID, Name, OBJPROP_CREATETIME);
}
return(Str);
}
void OnChartEvent( const int id, const long &lparam, const double &dparam, const string &sparam )
{
if ((id == CHARTEVENT_OBJECT_CREATE) || (id == CHARTEVENT_OBJECT_DELETE))
Comment(ObjectsToString() + ((id == CHARTEVENT_OBJECT_CREATE) ? "\n\n" + ObjectsToString((int)ObjectGetInteger(0, sparam, OBJPROP_TYPE)): ""));
}
Желательно в цикл добавить строку
а то весь экран забит в пятёрке
Если бы узнать зачем? Тогда бы можно было что-то придумать.
Есть графический индикатор, который я хочу перевести на буферный индикатор)
Если вы хотите избавиться от графики в индикаторе, то зачем тогда отлавливаете появление граф.объектов?
Графика сохраняется... просто через буфер легче производить потом вычисления чем работать с графикой в советнике. Во всяком случае так это вижу я))
Бардак.
Если у вас есть исходник, то создайте буфер, и там, где в коде прописан вывод объекта, заполняйте буфер значениями этого объекта - ценой и временем пересчитанным в нужный бар.
Бардак.
Если у вас есть исходник, то создайте буфер, и там, где в коде прописан вывод объекта, заполняйте буфер значениями этого объекта - ценой и временем пересчитанным в нужный бар.
в том то и проблема что исходника нет!
Вот здесь действительно работает!!! Спасибо огромное! Но работает когда накидываешь индикатор на график, тогда обьекты подхватывает а если вызываешь пользовательский индикатор через свой индикатор через iCustom - то обьекты не видит...может не правильно вызываю...буду разбираться.. Спасибо еще раз!!!!