Veterros: Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
si no, añadir después de la llave de cierre, o dentro de esta llave mover los operadores de modificación del objeto.
Veterros: ¿Pueden ustedes decirme por qué el 4202 se da por vencido (el objeto no existe)? ¡Correcto, no existe, debe ser creado, pero yo (no existe)! ¿Qué se puede hacer con él? ¿O he metido la pata en otra parte?
He probado apresuradamente tu versión como script, sustituyendo la hora y las marcas y comprobando los objetos, pero no devuelve errores.
¿Tal vez, para ahorrarse la molestia, intentar formar objetos flecha teniendo en cuenta el nuevo lenguaje MQL4?
Aquí está el "cuerpo" del script que crea los objetos-flecha que has especificado, teniendo en cuenta el nuevo lenguaje (los tiempos y las marcas son arbitrarios, en lugar de SignalBarsTime, Hi2, SignalBarsTime, Lo2, que sólo conoces hasta ahora):
//+------------------------------------------------------------------+//| 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.: Corregida la línea de mi post anterior, sustituyendo ANCHOR_BOTTOM por ANCHOR_TOP:
Muchas gracias, muy útil. Todavía me gustaría encontrar una manera de hacer que los nombres de los objetos se asignen automáticamente, tengo que redibujarlos cada vez. ¿Quizás aconsejar dónde aprender sobre ello y en qué área buscar?
Veterros: Muchas gracias, es muy útil. Me gustaría saber cómo nombrar los objetos automáticamente, porque tengo que redibujarlos cada vez. ¿Quizás puedas decirme dónde encontrarlo y dónde buscarlo?
Ahora no se me ocurre dónde exactamente se puede buscar en la ayuda o buscar en el sitio, pero el tutorial me recordó esta página: https://book.mql4.com/ru/functions/strings
Allí puede encontrar información y un ejemplo de código. Sólo tiene que utilizar TimeToString en lugar de TimeToStr. Sin embargo, puede ser de gran ayuda para dominar el nuevo lenguaje MQL4. También en combinación con la ayuda para el lenguaje actualizado.
Sí. El nombre individual puede escribirse de diferentes maneras.
Por ejemplo, la función para formar los nombres individuales de los objetos puede tener este aspecto:
Y en el cuerpo del programa puede salir así (habiendo escrito antes en condiciones lo que servirá de prefijo):
Además, para un objeto recién creado podría ser así
Ahora no se me ocurre dónde exactamente se puede buscar en la ayuda o buscar en el sitio, pero el tutorial me recordó esta página: https://book.mql4.com/ru/functions/strings
Allí puede encontrar información y un ejemplo de código. Sólo tiene que utilizar TimeToString en lugar de TimeToStr. Sin embargo, puede ser de gran ayuda para dominar el nuevo lenguaje MQL4. También en combinación con la ayuda para el lenguaje actualizado.
Hola, cariño ;) Imagínate, cuánto tiempo llevo escribiendo código para diferentes objetos y nunca se me ha ocurrido hacer una función aparte para crear nombres, siempre lo he hecho directamente en el código. He estado trabajando demasiado. Gracias por el consejo. Y en cualquier otro lugar, donde sea relevante, para la compacidad, escribo las funciones, pero aquí algo atormentado todo el tiempo.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Veterros:
Ребят подскажите, почему 4202 выдаёт (Объект не существует). Правильно что не существует его создать надо, а он мне (не существует)! Чего можно с ним сделать? Или я где-то опять накосячил?
si no, añadir después de la llave de cierre, o dentro de esta llave mover los operadores de modificación del objeto.
Gracias, pero el problema no ha desaparecido.
¿Puede alguien sugerir si estas expresiones son equivalentes o no?
¿Pueden ustedes decirme por qué el 4202 se da por vencido (el objeto no existe)? ¡Correcto, no existe, debe ser creado, pero yo (no existe)! ¿Qué se puede hacer con él? ¿O he metido la pata en otra parte?
He probado apresuradamente tu versión como script, sustituyendo la hora y las marcas y comprobando los objetos, pero no devuelve errores.
¿Tal vez, para ahorrarse la molestia, intentar formar objetos flecha teniendo en cuenta el nuevo lenguaje MQL4?
Aquí está el "cuerpo" del script que crea los objetos-flecha que has especificado, teniendo en cuenta el nuevo lenguaje (los tiempos y las marcas son arbitrarios, en lugar de SignalBarsTime, Hi2, SignalBarsTime, Lo2, que sólo conoces hasta ahora):
P./S.: Corregida la línea de mi post anterior, sustituyendo ANCHOR_BOTTOM por ANCHOR_TOP:
Muchas gracias, es muy útil. Me gustaría saber cómo nombrar los objetos automáticamente, porque tengo que redibujarlos cada vez. ¿Quizás puedas decirme dónde encontrarlo y dónde buscarlo?
Sí. El nombre individual puede escribirse de diferentes maneras.
Por ejemplo, la función para formar los nombres individuales de los objetos puede tener este aspecto:
Y en el cuerpo del programa puede salir así (habiendo escrito antes en condiciones lo que servirá de prefijo):
... string nameobj=nameNi(prefixX,timeX);Además, para un objeto recién creado podría ser así
Ahora no se me ocurre dónde exactamente se puede buscar en la ayuda o buscar en el sitio, pero el tutorial me recordó esta página: https://book.mql4.com/ru/functions/strings
Allí puede encontrar información y un ejemplo de código. Sólo tiene que utilizar TimeToString en lugar de TimeToStr. Sin embargo, puede ser de gran ayuda para dominar el nuevo lenguaje MQL4. También en combinación con la ayuda para el lenguaje actualizado.
Añade la hora al nombre del objeto.
Sí. El nombre individual puede escribirse de diferentes maneras.
Por ejemplo, la función para formar los nombres individuales de los objetos puede tener este aspecto:
Y en el cuerpo del programa puede salir así (habiendo escrito antes en condiciones lo que servirá de prefijo):
Además, para un objeto recién creado podría ser así
Ahora no se me ocurre dónde exactamente se puede buscar en la ayuda o buscar en el sitio, pero el tutorial me recordó esta página: https://book.mql4.com/ru/functions/strings
Allí puede encontrar información y un ejemplo de código. Sólo tiene que utilizar TimeToString en lugar de TimeToStr. Sin embargo, puede ser de gran ayuda para dominar el nuevo lenguaje MQL4. También en combinación con la ayuda para el lenguaje actualizado.
Hola, cariño ;) Imagínate, cuánto tiempo llevo escribiendo código para diferentes objetos y nunca se me ha ocurrido hacer una función aparte para crear nombres, siempre lo he hecho directamente en el código. He estado trabajando demasiado. Gracias por el consejo. Y en cualquier otro lugar, donde sea relevante, para la compacidad, escribo las funciones, pero aquí algo atormentado todo el tiempo.
ZS. Ahí has dicho hola Lyov ;).