附加物件的图表角落

这里有大量的图形对象 ,为此您可以设置一个图表角落,相对于它指定像素坐标。以下是对象类型(括号中是指定的对象类型标识符):

  • 标签 (OBJ_LABEL);
  • 按键 (OBJ_BUTTON);
  • 位图标签 (OBJ_BITMAP_LABEL);
  • 编辑(OBJ_EDIT)。
  • 矩形标签(OBJ_RECTANGLE_LABEL);

对象

ID

X/Y

宽度/高度

日期/价格

OBJPROP_CORNER

OBJPROP_ANCHOR

OBJPROP_ANGLE

文本

OBJ_TEXT

是的

是的

是的

标签

OBJ_LABEL

是的

是的(只读)

是的

是的

是的

按键

OBJ_BUTTON

是的

是的

是的

位图

OBJ_BITMAP

是的(只读)

是的

是的

位图标签

OBJ_BITMAP_LABEL

是的

是的(只读)

是的

是的

编辑

OBJ_EDIT

是的

是的

是的

矩形标签

OBJ_RECTANGLE_LABEL

是的

是的

是的

以下命名使用在表格中:

  • X/Y – 相对于图表角落,以像素指定的定位点坐标;
  • 宽度/高度 – 对象有宽度和高度。对于“只读”,只有对象呈现在图表上时才会计算宽度和高度值;
  • 日期/价格 – 使用日期和价格值指定定位点坐标;
  • OBJPROP_CORNER – 定义了指定定位点坐标相对的图表角落。可以是4个ENUM_BASE_CORNER 枚举值中的一个;
  • OBJPROP_ANCHOR – 定义了对象本身的定位点,可以是9个 ENUM_ANCHOR_POINT 枚举值中的一个。从这个点到选定的图表角指定像素坐标;
  • OBJPROP_ANGLE – 定义逆时针对象旋转角度。

为了指定图表内角,X和Y坐标都要测量像素,使用ObjectSetInteger(chartID,name,OBJPROP_CORNER,chart_corner):

  • 图表ID- 图表标识符;
  • 名字 – 图解对象名称;
  • OBJPROP_CORNER – 为捆绑指定一角的性质ID ;
  • chart_corner – 目标图表,可以是 ENUM_BASE_CORNER 计算式中的一个。

ENUM_BASE_CORNER

ID

描述

CORNER_LEFT_UPPER

中央坐标在图表左上角

CORNER_LEFT_LOWER

中央左边在图表左下角

CORNER_RIGHT_LOWER

中央坐标在图表右下角

CORNER_RIGHT_UPPER

中央左边在图表右上角

示例:

void CreateLabel(long   chart_id,
                 string name,
                 int    chart_corner,
                 int    anchor_point,
                 string text_label,
                 int    x_ord,
                 int    y_ord)
  {
//---
   if(ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0))
     {
      ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner);
      ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,anchor_point);
      ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord);
      ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord);
      ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label);
     }
   else
      Print("Failed to create the object OBJ_LABEL ",name,", Error code = "GetLastError());
  }
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
   int width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);
   string arrows[4]={"LEFT_UPPER","RIGHT_UPPER","RIGHT_LOWER","LEFT_LOWER"};
   CreateLabel(0,arrows[0],CORNER_LEFT_UPPER,ANCHOR_LEFT_UPPER,arrows[0],50,50);
   CreateLabel(0,arrows[1],CORNER_RIGHT_UPPER,ANCHOR_RIGHT_UPPER,arrows[1],50,50);
   CreateLabel(0,arrows[2],CORNER_RIGHT_LOWER,ANCHOR_RIGHT_LOWER,arrows[2],50,50);
   CreateLabel(0,arrows[3],CORNER_LEFT_LOWER,ANCHOR_LEFT_LOWER,arrows[3],50,50);
  }