попробуйте
//+------------------------------------------------------------------+ 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; }
попробуйте
Нужно не удалять, а проверять на существование. Если нету, то создавать. А уже потом задавать параметры.
Согласен
сначала find
но если объект удаляется и создется вновь на каждом тике с одним и тем же именем, поиск заведомо существующего объекта излишенТак, почему же заливка не слушается?
а если так (false --> true):
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, true); // не задается сразу
Не получается. Уже попробовал такую функцию
ObjectSet (obj_name1, OBJPROP_FILL, true | false);
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
Вообще такой код должен работать? Может это у меня в терминале глюк какой то?
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
Разумеется.
Детально сравните со своим кодом этот и поместите его в OnTimer(), т.к. тиков на выходных нет, либо временно запустите его в OnInit():
https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle
- www.mql5.com
я на основании этого примера и писал свой код. Только понять не могу в чем разница. Только в том, что там есть окно для входных параметров.
А если мне не нужно это окно? если я просто хочу создать объект уже с желаемыми параметрами. Такое возможно?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую , уважаемые программисты!
"Для терминала МТ4."
Хотелось бы получить от Вас подсказку. Наткнулся на такой ньюанс...
1. создаю объект прямоугольник - сработало:
2. задаю свойства:
- стиль - сработало;
- толщина линии - сработало;
- цвет - сработало;
- заливка - не хочет слушаться;
Ковырялся, ковырялся, в результате выяснил, что объект прямоугольник по умолчанию создается с установленной галочкой "Рисовать объект как фон". Пока эта галочка стоит прямоугольник не слушается команды из программы, а если вручную убрать эту галочку из свойств объекта, то потом из программки можно управлять заливкой.
Вопрос такой, почему объекту не задается свойство "заливка" сразу? Что я делаю не так и чего я не знаю?
Прошу помочь кто чем может!
ниже используемый код:
#property indicator_chart_window
int start()
{
long current_chart_id=ChartID();
//
string obj_name1="Rectangle1";
//
double Price_Level_1 = 1296; //котировки золота
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); // не задается сразу
return(0);