Veterros: Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
На скорую руку попробовала ваш вариант в виде скрипта, заменив время и отметки и прописав проверку на наличие объектов, но ошибок он у меня не выдал.
Может, чтобы не мучиться, попробуете воспользоваться формированием arrow объектов уже с учётом нового языка MQL4?
Здесь "тело" для скрипта, создающего обозначенные вами arrow-объекты уже с учётом нового языка (время и отметки проставлены произвольно, вместо пока только вам известных SignalBarsTime, Hi2, SignalBarsTime, Lo2):
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---if(ObjectFind(0,"Продажа")<0)
{
ArrowDownCreate(0,"Продажа",0,Time[2],High[2],
ANCHOR_BOTTOM,clrRed,STYLE_SOLID,5,false,false,true,0);
}
if(ObjectFind(0,"Покупка")<0)
{
ArrowUpCreate(0,"Покупка",0,Time[1],Low[1],
ANCHOR_TOP,clrGreen,STYLE_SOLID,5,false,false,true,0);
}
}
//+------------------------------------------------------------------+//| Создает знак "Стрелка вниз" https://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_arrow_down//+------------------------------------------------------------------+bool ArrowDownCreate(constlong chart_ID=0, // ID графикаconststring name="ArrowDown", // имя знакаconstint sub_window=0, // номер подокнаdatetime time=0, // время точки привязкиdouble price=0, // цена точки привязкиconstENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // способ привязкиconstcolor clr=clrRed, // цвет знакаconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль окаймляющей линииconstint width=3, // размер знакаconstbool back=false, // на заднем планеconstbool selection=true, // выделить для перемещенийconstbool hidden=true, // скрыт в списке объектовconstlong z_order=0) // приоритет на нажатие мышью
{
//--- установим координаты точки привязки, если они не заданы//ChangeArrowEmptyPoint(time,price);//--- сбросим значение ошибкиResetLastError();
//--- создадим знакif(!ObjectCreate(chart_ID,name,OBJ_ARROW_DOWN,sub_window,time,price))
{
Print(__FUNCTION__,
": не удалось создать знак \"Стрелка вниз\"! Код ошибки = ",GetLastError());
return(false);
}
//--- способ привязкиObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- установим цвет знакаObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линииObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер знакаObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнениеreturn(true);
}
//+------------------------------------------------------------------+//| Создает знак "Стрелка вверх" https://docs.mql4.com/ru/constants/objectconstants/enum_object/obj_arrow_up//+------------------------------------------------------------------+bool ArrowUpCreate(constlong chart_ID=0, // ID графикаconststring name="ArrowUp", // имя знакаconstint sub_window=0, // номер подокнаdatetime time=0, // время точки привязкиdouble price=0, // цена точки привязкиconstENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // способ привязкиconstcolor clr=clrRed, // цвет знакаconstENUM_LINE_STYLE style=STYLE_SOLID, // стиль окаймляющей линииconstint width=3, // размер знакаconstbool back=false, // на заднем планеconstbool selection=true, // выделить для перемещенийconstbool hidden=true, // скрыт в списке объектовconstlong z_order=0) // приоритет на нажатие мышью
{
//--- установим координаты точки привязки, если они не заданы//ChangeArrowEmptyPoint(time,price);//--- сбросим значение ошибкиResetLastError();
//--- создадим знакif(!ObjectCreate(chart_ID,name,OBJ_ARROW_UP,sub_window,time,price))
{
Print(__FUNCTION__,
": не удалось создать знак \"Стрелка вверх\"! Код ошибки = ",GetLastError());
return(false);
}
//--- установим способ привязкиObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- установим цвет знакаObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линииObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер знакаObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) планеObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения знака мышью//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection//--- по умолчанию равен true, что позволяет выделять и перемещать этот объектObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектовObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графикеObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнениеreturn(true);
}
//+------------------------------------------------------------------+
DiPach: P./S.: Поправила сейчас в своём посте выше строку, заменив ANCHOR_BOTTOM на ANCHOR_TOP:
Спасибо большое, очень помогли. Ещё бы найти как сделать, что бы имена объектам присваивать автоматом, а то приходится перерисовывать каждый раз. Может подскажите, где про это узнать и в какую область смотреть?
Veterros: Спасибо большое, очень помогли. Ещё бы найти как сделать, что бы имена объектам присваивать автоматом, а то приходится перерисовывать каждый раз. Может подскажите, где про это узнать и в какую область смотреть?
Сейчас не соображу где конкретно можно посмотреть это в справке или как лучше задать в поиске по сайту, но в учебнике вспомнилась эта страница: https://book.mql4.com/ru/functions/strings
Там есть инфа и пример кода. Просто вместо TimeToStr можно воспользоваться TimeToString. Учебник написан по прежнему языку MQL4, но, тем не менее, с моей точки зрения может хорошо помогать при осваивании и нового языка МQL4. В том числе, в сочетании со справкой к обновлённому языку.
Да. Индивидуальное имя можно по разному прописать.
К примеру, функция для формирования индивидуальных имён объектам может выглядеть как-то так:
А в теле программы её можно выводить как-то так (прописав до этого заранее в условиях то, что будет служить префиксом):
Далее, для вновь создаваемого объекта это может выглядеть, к примеру, так:
Сейчас не соображу где конкретно можно посмотреть это в справке или как лучше задать в поиске по сайту, но в учебнике вспомнилась эта страница: https://book.mql4.com/ru/functions/strings
Там есть инфа и пример кода. Просто вместо TimeToStr можно воспользоваться TimeToString. Учебник написан по прежнему языку MQL4, но, тем не менее, с моей точки зрения может хорошо помогать при осваивании и нового языка МQL4. В том числе, в сочетании со справкой к обновлённому языку.
Привет, дорогая ;) Представляешь, сколько пишу кода для всяческих объектов, ни разу в голову не пришло сделать отдельную ф-цию для создания имени - всегда это сразу в коде прописывал. Вот ведь заработался. Спасибо за наводку. А то везде, где актуально, для компактности пишу функциями, а вот тут что-то мучался всё время.
Опять здравствуйте. Вопрос у меня возник такой, какая характеристика компа влияет на время оптимизации советника? Уж очень долго собрался оптиму проводить, параметров не мало и время для прогонки большое. Кто знает?
Подскажите, кто как думает, равноценны ли эти выражения:
Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
На скорую руку попробовала ваш вариант в виде скрипта, заменив время и отметки и прописав проверку на наличие объектов, но ошибок он у меня не выдал.
Может, чтобы не мучиться, попробуете воспользоваться формированием arrow объектов уже с учётом нового языка MQL4?
Здесь "тело" для скрипта, создающего обозначенные вами arrow-объекты уже с учётом нового языка (время и отметки проставлены произвольно, вместо пока только вам известных SignalBarsTime, Hi2, SignalBarsTime, Lo2):
P./S.: Поправила сейчас в своём посте выше строку, заменив ANCHOR_BOTTOM на ANCHOR_TOP:
Спасибо большое, очень помогли. Ещё бы найти как сделать, что бы имена объектам присваивать автоматом, а то приходится перерисовывать каждый раз. Может подскажите, где про это узнать и в какую область смотреть?
Да. Индивидуальное имя можно по разному прописать.
К примеру, функция для формирования индивидуальных имён объектам может выглядеть как-то так:
А в теле программы её можно выводить как-то так (прописав до этого заранее в условиях то, что будет служить префиксом):
... string nameobj=nameNi(prefixX,timeX);Далее, для вновь создаваемого объекта это может выглядеть, к примеру, так:
Сейчас не соображу где конкретно можно посмотреть это в справке или как лучше задать в поиске по сайту, но в учебнике вспомнилась эта страница: https://book.mql4.com/ru/functions/strings
Там есть инфа и пример кода. Просто вместо TimeToStr можно воспользоваться TimeToString. Учебник написан по прежнему языку MQL4, но, тем не менее, с моей точки зрения может хорошо помогать при осваивании и нового языка МQL4. В том числе, в сочетании со справкой к обновлённому языку.
Добавляйте к имени обьекта время.
Да. Индивидуальное имя можно по разному прописать.
К примеру, функция для формирования индивидуальных имён объектам может выглядеть как-то так:
А в теле программы её можно выводить как-то так (прописав до этого заранее в условиях то, что будет служить префиксом):
Далее, для вновь создаваемого объекта это может выглядеть, к примеру, так:
Сейчас не соображу где конкретно можно посмотреть это в справке или как лучше задать в поиске по сайту, но в учебнике вспомнилась эта страница: https://book.mql4.com/ru/functions/strings
Там есть инфа и пример кода. Просто вместо TimeToStr можно воспользоваться TimeToString. Учебник написан по прежнему языку MQL4, но, тем не менее, с моей точки зрения может хорошо помогать при осваивании и нового языка МQL4. В том числе, в сочетании со справкой к обновлённому языку.
Привет, дорогая ;) Представляешь, сколько пишу кода для всяческих объектов, ни разу в голову не пришло сделать отдельную ф-цию для создания имени - всегда это сразу в коде прописывал. Вот ведь заработался. Спасибо за наводку. А то везде, где актуально, для компактности пишу функциями, а вот тут что-то мучался всё время.
ЗЫ. Там тебе Лёва привет передал ;)
Артём, ты снова на сайте!!! Ура!!! Безумно рада тебя здесь видеть!!! )))
Щас пойду привет от Лёвы смотреть! )))