Veterros: Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
//+------------------------------------------------------------------+//| 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);
}
//+------------------------------------------------------------------+
Veterros:
Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
否则在闭合的大括号后添加,或在此括号内移动对象的修改运算符。
谢谢你,但问题并没有消失。
谁能建议这些表达方式是否等同?
你们能不能告诉我,为什么4202号文件发出来了(对象不存在)。正确,它不存在,它必须被创造出来,但它我(不存在)!可以用它来做什么?还是我在别的地方搞砸了?
我匆匆忙忙地试了一下你的版本,作为一个脚本,替换了时间和标记,并检查了对象,但它没有返回错误。
也许,为了节省麻烦,考虑到新的MQL4语言,尝试形成箭头对象?
这里是创建你指定的箭头对象的脚本的 "主体",考虑到新的语言(时间和标记是任意的,而不是你到目前为止才知道的SignalBarsTime, Hi2, SignalBarsTime, Lo2)。
P./S.: 现在纠正了我上面帖子中的一行,将ANCHOR_BOTTOM 改为ANCHOR_TOP。
非常感谢你,非常有帮助。我想知道如何自动命名对象,因为我每次都要重新绘制它们。也许你能告诉我在哪里可以找到它,在哪里可以找到?
是的,个人的名字可以有不同的拼写方式。
例如,为对象形成单独名称的函数可以是这样的。
在程序的主体中,它可以这样输出(事先在条件中写好作为前缀的内容)。
... string nameobj=nameNi(prefixX,timeX);
此外,对于一个新创建的对象,它可能看起来像这样
现在我想不起来你到底在哪里可以在帮助中或在网站上搜索到它,但这个教程让我想起了这个页面:https://book.mql4.com/ru/functions/strings
在那里你可以找到信息和代码样本。只需使用TimeToString 而不是TimeToStr。然而,在掌握新的MQL4语言时,它可以起到很大的帮助作用。同时结合更新语言的帮助。
将时间添加到对象的名称中。
是的,个人的名字可以有不同的拼写方式。
例如,为对象形成单独名称的函数可以是这样的。
而在程序的主体中,它可以这样输出(事先在条件中写好作为前缀的内容)。
此外,对于一个新创建的对象,它可能看起来像这样
现在我想不起来你到底在哪里可以在帮助中或在网站上搜索到它,但这个教程让我想起了这个页面:https://book.mql4.com/ru/functions/strings
在那里你可以找到信息和代码样本。只需使用TimeToString而不是TimeToStr。然而,在掌握新的MQL4语言时,它可以起到很大的帮助作用。同时结合更新语言的帮助。
嗨,亲爱的;)想象一下,我为不同的对象写了多久的代码,我从来没有想过要做一个单独的函数来创建名字--我总是直接在代码中完成它。我一直在努力工作。谢谢你的提示。而在其他地方,在相关的地方,为了紧凑起见,我写的是函数,但这里的东西一直在折磨着我。
ZS.你已经向Lyov问好了;)。