图表角落
附加物件的图表角落
这里有大量的图形对象 ,为此您可以设置一个图表角落,相对于它指定像素坐标。以下是对象类型(括号中是指定的对象类型标识符):
- 标签 (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);
}