浇注物体

 

亲爱的程序员们,你们好!

"对于MT4终端。

我想从你那里得到一些提示。我遇到了以下的细微差别......

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);

 

尝试

//+------------------------------------------------------------------+
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); // не задается сразу
 

它不起作用,我已经试过了以下函数

对象集(obj_name1, OBJPROP_FILL, true | false)。

 
这段代码是否一定要工作?也许这是我的终端机的一个小故障?

ObjectSetInteger(current_chart_id, obj_name1, OBJPROP_FILL, false)。

 
5211845:
一般来说,这段代码应该可以工作?也 许这是我的终端机的一个小故障?

ObjectSetInteger(current_chart_id, obj_name1, OBJPROP_FILL, false)。

当然了。

将这段代码与你自己的代码进行详细比较,并将其放在OnTimer()中,因为没有输出点,或者暂时在OnInit()中运行。

https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
//| Cоздает прямоугольник по заданным координатам                    |               time1=0,                            price1=0,                         time2=0,                            price2=0,                        width=1,            //| Перемещает точку привязки прямоугольника                         |...
 

我的代码是基于这个例子。我只是搞不清楚有什么区别。只不过,有一个输入参数的窗口。

如果我不需要这个窗口呢? 如果我只想用我想要的参数来创建一个对象。这有可能吗?