노력하다
//+------------------------------------------------------------------+ 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 ; }
그리고 요점이 무엇입니까? 추가 조작 없이 개체가 채우기에 응답하지 않는 이유는 무엇입니까?
Renat Akhtyamov :
삭제가 아니라 존재 여부를 확인하는 것이 필요합니다. 그렇지 않은 경우 생성하십시오. 그런 다음 매개변수를 설정합니다.
노력하다
그렇다면 채우기가 순종하지 않는 이유는 무엇입니까?
Artyom Trishkin :
삭제가 아니라 존재 여부를 확인하는 것이 필요합니다. 그렇지 않은 경우 생성하십시오. 그런 다음 매개변수를 설정합니다.
삭제가 아니라 존재 여부를 확인하는 것이 필요합니다. 그렇지 않은 경우 생성하십시오. 그런 다음 매개변수를 설정합니다.
동의한다
먼저 찾기
그러나 객체가 삭제되고 같은 이름으로 매 틱마다 다시 생성되면 알려진 객체에 대한 검색이 중복됩니다.5211845 :
그렇다면 채우기가 순종하지 않는 이유는 무엇입니까?
그렇다면 채우기가 순종하지 않는 이유는 무엇입니까?
그렇다면 (거짓 --> 참):
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL , true ); // не задается сразу
작동하지 않습니다. 이미 이 기능을 시도했습니다.
ObjectSet(obj_name1, OBJPROP_FILL, 참 | 거짓);
이 코드가 작동해야 합니까? 아마도 내 터미널의 결함입니까?
ObjectSetInteger (current_chart_id, obj_name1, OBJPROP_FILL, false);
5211845 :
이 코드가 작동해야 합니까? 아마도 내 터미널의 결함입니까?
이 코드가 작동해야 합니까? 아마도 내 터미널의 결함입니까?
ObjectSetInteger(current_chart_id, obj_name1, OBJPROP_FILL, 거짓);
당연하지.
이것을 코드와 자세히 비교하고 OnTimer()에 배치하십시오. 주말에는 틱이 없거나 OnInit()에서 일시적으로 시작합니다.
https://www.mql5.com/en/docs/constants/objectconstants/enum_object/obj_rectangle

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
- www.mql5.com
//| Cоздает прямоугольник по заданным координатам | time1=0, price1=0, time2=0, price2=0, width=1, //| Перемещает точку привязки прямоугольника |...
이 예제를 기반으로 코드를 작성했습니다. 차이점이 무엇인지 이해할 수 없습니다. 입력 매개변수를 위한 창이 있다는 것뿐입니다.
이 창이 필요하지 않으면 어떻게 합니까? 원하는 매개변수로 이미 객체를 생성하려는 경우. 그게 가능한가요?
안녕하세요, 친애하는 프로그래머!
"MT4 터미널용."
나는 당신에게서 약간의 조언을 얻고 싶습니다. 이 뉘앙스를 알게되었습니다 ...
1. 직사각형 개체를 만듭니다. 작동했습니다.
2. 속성 설정:
- 스타일 - 일했습니다.
- 선 두께 - 작동됨;
- 색상 - 작동했습니다.
- 채우기 - 순종하기를 원하지 않습니다.
나는 땜질하고 땜질했고 결과적으로 사각형 개체가 기본적으로 "배경으로 개체 그리기" 확인란이 선택된 상태로 생성된다는 것을 알았습니다. 이 확인란이 켜져 있는 동안 사각형은 프로그램의 명령을 따르지 않으며 개체 속성 에서 이 확인란을 수동으로 선택 취소하면 프로그램에서 채우기를 제어할 수 있습니다.
문제는 "채우기" 속성이 한 번에 개체에 설정되지 않은 이유는 무엇입니까? 내가 무엇을 잘못하고 있고 무엇을 모르고 있습니까?
가능하신 분 도와주세요!
아래는 사용된 코드입니다.
#속성 표시기_차트_창
정수 시작()
{
긴 current_chart_id=ChartID();
//
string obj_name1="사각형1";
//
두 배 Price_Level_1 = 1296; // 금 따옴표
두 배 Price_Level_2 = 1293;
//
날짜/시간 Left_Side_1 = 시간[9];
datetime Right_Side_1 = 시간[0] + PeriodSeconds() * 7;
//
const 색상 clr = clrBeige;
const ENUM_LINE_STYLE 스타일 = STYLE_DASH;
상수 정수 너비 = 1;
const 부울 채우기 = 거짓;
//
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, 스타일);
ObjectSetInteger(current_chart_id, obj_name1, OBJPROP_WIDTH, 너비);
ObjectSetInteger(current_chart_id, obj_name1, OBJPROP_FILL, 거짓); // 즉시 설정되지 않음
리턴(0);