跳至内容

图表角落

附加物件的图表角落

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

  • 标签 (OBJ_LABEL);
  • 按键 (OBJ_BUTTON);
  • 位图标签 (OBJ_BITMAP_LABEL);
  • 编辑(OBJ_EDIT)。
  • 矩形标签(OBJ_RECTANGLE_LABEL);
对象IDX/Y宽度/高度日期/价格OBJPROP_CORNEROBJPROP_ANCHOROBJPROP_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);
  }