附加物件的图表角落

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

  • 标签 (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);

  }