Prova
//+------------------------------------------------------------------+ 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; }
Prova
Non devi cancellarlo, devi controllarlo per vedere se esiste. Se non esiste, allora createlo. E poi impostare i parametri.
D'accordo
trovare prima.
Ma se l'oggetto viene cancellato e ricreato ad ogni tick con lo stesso nome, la ricerca di un oggetto conosciuto ed esistente non è necessariaAllora, perché il riempimento non ascolta?
e se sì (falso --> vero):
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, true); // не задается сразу
Non funziona, ho già provato la seguente funzione
ObjectSet (obj_name1, OBJPROP_FILL, true | false);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
In generale, questo codice dovrebbe funzionare? Forse è un difetto del mio terminale?
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
Naturalmente.
Confrontate questo codice con il vostro codice in dettaglio e mettetelo in OnTimer(), dato che non ci sono ticchettii in uscita, o eseguitelo temporaneamente in OnInit():
https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle

- www.mql5.com
Ho basato il mio codice su questo esempio. Non riesco a capire quale sia la differenza. Solo che c'è una finestra per i parametri di input.
E se non ho bisogno di questa finestra? Se voglio solo creare un oggetto con i parametri che voglio. È possibile?

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Saluti, cari programmatori!
"Per il terminale MT4.
Mi piacerebbe ricevere qualche consiglio da voi. Mi sono imbattuto nella seguente sfumatura...
1. Creo un oggetto rettangolo - funziona:
2. Ho impostato le proprietà:
- stile - ha funzionato;
- larghezza della linea - ha funzionato;
- colore - ha funzionato;
- riempire - non vuole ascoltare;
Ho pasticciato e pasticciato e ho scoperto che l'oggetto rettangolo viene creato con "Draw object as background" selezionato per default. Finché questa casella è selezionata, il rettangolo non ascolta i comandi del programma, e se si rimuove manualmente questa casella dalle proprietà dell'oggetto, allora il programma può controllare il riempimento.
La domanda è perché l'oggetto non è impostato subito sulla proprietà "fill"? Cosa faccio di sbagliato e cosa non so?
Per favore aiutate chi può!
Di seguito è riportato il codice utilizzato:
#proprietà indicator_chart_window
int start()
{
long current_chart_id=ChartID();
//
stringa obj_name1="Rectangle1";
//
double Price_Level_1 = 1296; // prezzo dell'oro
double Price_Level_2 = 1293;
//
datetime Left_Side_1 = Time[9];
// datetime Right_Side_1 = Time[0] + PeriodSeconds() * 7;
//
const color clr = clrBeige;
const ENUM_LINE_STYLE style = STYLE_DASH;
const int width = 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); // non impostato immediatamente
ritorno(0);