Prueba con
//+------------------------------------------------------------------+ void Prn_Rect_Label(string Name, int X, int Y, int width, int height, color CLR, int Corner, bool back) { ObjectDelete(0,Name); ObjectCreate(0,Name,OBJ_RECTANGLE_LABEL,0,0,0); ObjectSetInteger(0,Name,OBJPROP_XDISTANCE,X); ObjectSetInteger(0,Name,OBJPROP_YDISTANCE,Y); ObjectSetInteger(0,Name,OBJPROP_XSIZE,width); ObjectSetInteger(0,Name,OBJPROP_YSIZE,height); ObjectSetInteger(0,Name,OBJPROP_BGCOLOR,CLR); ObjectSetInteger(0,Name,OBJPROP_CORNER,Corner); ObjectSetInteger(0,Name,OBJPROP_BACK,back); return; }
Prueba con
No hay que borrarlo, hay que comprobar si existe. Si no existe, créalo. Y a continuación, establecer los parámetros.
De acuerdo
encontrar primero.
Pero si el objeto se borra y se vuelve a crear en cada tic con el mismo nombre, la búsqueda de un objeto ya conocido es innecesariaNo funciona. Ya he probado la siguiente función
ObjectSet (obj_name1, OBJPROP_FILL, true | false);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
En general, este código debería funcionar? ¿Tal vez sea un fallo en mi terminal?
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
Por supuesto.
Compare este código con su propio código en detalle y colóquelo en OnTimer(), ya que no hay ticks de salida, o ejecútelo temporalmente en OnInit():
https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle
- www.mql5.com
He basado mi código en este ejemplo. No puedo entender cuál es la diferencia. Sólo que hay una ventana para los parámetros de entrada.
¿Y si no necesito esta ventana? Si sólo quiero crear un objeto con los parámetros que quiero. ¿Es esto posible?
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
¡Saludos, queridos programadores!
" Para el terminal MT4.
Me gustaría que me dierais algunos consejos. Me he encontrado con el siguiente matiz...
1. Creo un objeto rectángulo - funciona:
2. Configuro las propiedades:
- estilo - funcionó;
- ancho de línea - trabajado;
- color - trabajado;
- llenar - no quiere escuchar;
He trasteado y trasteado y he descubierto que el objeto rectángulo se crea con la opción "Dibujar objeto como fondo" marcada por defecto. Mientras esta casilla esté marcada, el rectángulo no escucha los comandos del programa, y si se elimina manualmente esta casilla de las propiedades del objeto, entonces el programa puede controlar el relleno.
La pregunta es ¿por qué el objeto no se pone en la propiedad "fill" de inmediato? ¿Qué hago mal y qué no sé?
¡Por favor, ayude a quien pueda!
A continuación se muestra el código utilizado:
#propiedad ventana_del_gráfica_del_indicador
int inicio()
{
long current_chart_id=ChartID();
//
string obj_name1="Rectángulo1";
//
double Nivel_de_precio_1 = 1296; // precio del oro
double Nivel_de_precio_2 = 1293;
//
datetime Lado_Izquierdo_1 = Tiempo[9];
// datetime Right_Side_1 = Time[0] + PeriodSeconds() * 7;
//
const color clr = clrBeige;
const ENUM_LINE_STYLE estilo = STYLE_DASH;
const int anchura = 1;
const bool fill = false;
//
ObjectCreate (current_chart_id, obj_name1, OBJ_RECTANGLE, 0, Left_Side_1, Price_Level_1, Right_Side_1, Price_Level_2);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_COLOR, clr);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_STYLE, style);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_WIDTH, width);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false); // no se establece inmediatamente
return(0);