18 MQL4图标对象创建

对于当前图表有关的图表物件的一组函数。

18.1 ObjectCreate(创建对象)

bool ObjectCreate(    string name, int type, int window, datetime time1, double price1, void time2, void price2, void time3, void price3)

物件创建的指定名称、类型和最初坐标的指定窗口。计数坐标与物件的关联可以是从1到3物件类型。 如果函数成功,返回值将是 TRUE,否则,它将是 FALSE。获得详细的错误信息, 查看 GetLastError()函数。 OBJ_LABEL类型的物件忽略坐标。 使用ObjectSet() 设定 OBJPROP_XDISTANCEOBJPROP_YDISTANCE 属性。
注解: 子窗口图表(如果子窗口带有指标)编号从1 开始。主窗口的存在的索引为零。
必须通过的坐标: 时间和价格。 例如, OBJ_VLINE只物件需要时间,但必须通过价格(任何值)。

参量:

name      –      物件唯一名称。

type      –      物件类型。它可以是物件类型列举的任意值。

window      –      件窗口将增加的索引。窗口索引必须多于或等于0并且小于 WindowsTotal()

time1      –      第一点的时间部分。

price1      –      第一点的值部分。

time2      –      第二点的时间部分。

price2      –      第二点的值部分。

time3      –      第三点的时间部分。

price3      –      第三点的值部分。

示例:

// 新文本物件

if(!ObjectCreate(“text_object”, OBJ_TEXT, 0, D’2004.02.20 12:30′, 1.0045))

{

Print(“错误:不能创建文本! 代码 #”,GetLastError());

return(0);

}

// 新文本标签

if(!ObjectCreate(“label_object”, OBJ_LABEL, 0, 0, 0))

{

Print(“错误:不能创建文本! 代码 #”,GetLastError());

return(0);

}

ObjectSet(“label_object”, OBJPROP_XDISTANCE, 200);

ObjectSet(“label_object”, OBJPROP_YDISTANCE, 100);

18.2 ObjectDelete(删除对象)

bool ObjectDelete(    string name)

删除物件已有的指定名称。 如果函数成功,返回值将是TRUE,否则,它将是 FALSE。
获得详细的错误信息, 查看GetLastError() 函数。

参量:

name      –      被删除的物件名称。

示例:

ObjectDelete(“text_object”);

18.3 ObjectDescription(对象描述)

string ObjectDescription(    string name)

返回物件描述。 对于OBJ_TEXT和OBJ_LABEL类型物件,这些物件文本将返回。
获得详细的错误信息,查看GetLastError() 函数。
参见 ObjectSetText() 函数。

参量:

name      –      物件名称。

示例:

// 对于文件写下图表物件

int handle, total;

string obj_name,fname;

// 文件名称

fname=”objlist_”+Symbol();

handle=FileOpen(fname,FILE_CSV|FILE_WRITE);

if(handle!=false)

{

total=ObjectsTotal();

for(int i=-;i<total;i++)

{

obj_name=ObjectName(i);

FileWrite(handle,”Object “+obj_name+” description= “+ObjectDescription(obj_name));

}

FileClose(handle);

}

18.4 ObjectFind(查找对象)

int ObjectFind(    string name)

查找指定的物件名称。窗口的索引包含所找到的物件。如果它失败, 返回值将是-1 。获得详细的错误信息, 查看 GetLastError() 函数。子窗口图表(如果子窗口带有指标)编号从1 开始。主窗口的索引为零。

参量:

name      –      查找的物件名称。

示例:

if(ObjectFind(“line_object2”)!=win_idx) return(0);

18.5 ObjectGet(获取对象属性)

double ObjectGet(    string name, int index)

函数返回指定物件的属性。检查错误,查看 GetLastError() 函数。
参见 ObjectSet()函数。

参量:

name      –      物件名称。

index      –      物件属性索引。它可以是物件属性列举值的任意。

示例:

color oldColor=ObjectGet(“hline12”, OBJPROP_COLOR);

18.6 ObjectGetFiboDescription(获取斐波那契描述)

string ObjectGetFiboDescription(    string name, int index)

函数返回对斐波纳契物件的平实描述。相当数量斐波纳契水平取决于物件类型。 最大斐波纳契水平是32。
获得详细的错误信息,查看 GetLastError()
参见 ObjectSetFiboDescription() 函数。

参量:

name      –      斐波纳契物件名称。

index      –      斐波纳契索引水平(0-31)。

示例:

#include <stdlib.mqh>


string text;

for(int i=0;i<32;i++)

{

text=ObjectGetFiboDescription(MyObjectName,i);

//—- 检查物件少于32水平线

if(GetLastError()!=ERR_NO_ERROR) break;

Print(MyObjectName,”水平: “,i,” description: “,text);

}

18.7 ObjectGetShiftByValue(计算索引柱值)

int ObjectGetShiftByValue(    string name, double value)

函数计算并返回索引柱(移动当前相关的柱)给出的值。 索引柱由第一和第二坐标应用线性方程计算。 适用于趋势线和相似的物件。获得详细的错误信息, 查看 GetLastError() 函数。
参见 ObjectGetValueByShift() 函数。

参量:

name      –      物件名称。

value      –      价格值。

示例:

int shift=ObjectGetShiftByValue(“MyTrendLine#123”, 1.34);

18.8 ObjectGetValueByShift(计算返回K柱号)

double ObjectGetValueByShift(    string name, int shift)

函数计算并返回指定柱的值(转移当前相关的柱)。索引柱由第一和第二坐标应用线性方程计算。 适用于趋势线和相似的物件。获得详细的错误信息, 查看 GetLastError() 函数。
参见 ObjectGetShiftByValue() 函数。

参量:

name      –      物件名称。

shift      –      柱索引。

示例:

double price=ObjectGetValueByShift(“MyTrendLine#123”, 11);

18.9 ObjectMove(移动对象)

bool ObjectMove(    string name, int point, datetime time1, double price1)

函数在图移动一个物件座标。 物件可能根据他们的 类型 有一个到三个座标。 如果函数成功 ,返回值将是 TRUE, 否则,它将是FALSE。获得详细的错误信息, 查看 GetLastError() 函数。物件坐标的开始数字必须是0。

参量:

name      –      物件名称。

point      –      坐标索引(0-2)。

time1      –      新时间值。

price1      –      新值。

示例:

ObjectMove(“MyTrend”, 1, D’2005.02.25 12:30′, 1.2345);

18.10 ObjectName(对象名)

string ObjectName(    int index)

在物件列表中用它的索引函数返回物件名称。获得详细的错误信息, 查看 GetLastError() 函数。

参量:

index      –      在物件列表中的物件索引。物件索引必须超过或等于0并且小于ObjectsTotal()

示例:

int obj_total=ObjectsTotal();

string name;

for(int i=0;i<obj_total;i++)

{

name=ObjectName(i);

Print(i,”物件名称为 ” + name);

}

18.11 ObjectsDeleteAll(删除所有对象)

int ObjectsDeleteAll(    void window, void type)

在图表的子窗口删除全部类型物件。函数返回删除物件数。获得详细的错误信息, 查看 GetLastError() 函数。
注解: 子窗口图表(如果子窗口带有指标)编号从1 开始。主窗口的存在的索引为零。如果窗口索引错误或值为-1,物件 会从现有的图表中删除。
如果类型 值等与-1 或这个参量是错误的,在子窗口的全部指定物件将被删除。

参量:

window      –      选择参量。 物件的索引窗口将被删除。 必须超过或等于 -1 (EMPTY为默认值)并且小于 WindowsTotal()

type      –      选择参量。被删除的物件类型。它可以是 任意列举值的物件类型或EMPTY常数删除所有物件类型。

示例:

ObjectsDeleteAll(2, OBJ_HLINE); // 从第二子窗口移除全部水平线。

ObjectsDeleteAll(2); // 从第二子窗口移除全部物件。

ObjectsDeleteAll(); //从图表中移除全部物件

18.12 ObjectSet(设置对象属性)

bool ObjectSet(    string name, int index, double value)

改变指定物件属性的值。如果函数成功, 返回值将是 TRUE。否则, 它将是FALSE. 获得详细的错误信息, 查看 GetLastError() 函数。
参见 ObjectGet() 函数。

参量:

name      –      物件名称。

index      –      物件索引值。 它可以是列举的任意物件属性值。

value      –      新的属性值。

示例:

// moving the first coord to the last bar time

ObjectSet(“MyTrend”, OBJPROP_TIME1, Time[0]);

// setting the second fibo level

ObjectSet(“MyFibo”, OBJPROP_FIRSTLEVEL+1, 1.234);

// setting object visibility. object will be shown only on 15 minute and 1 hour charts

ObjectSet(“MyObject”, OBJPROP_TIMEFRAMES, OBJ_PERIOD_M15 | OBJ_PERIOD_H1);

18.13 ObjectSetFiboDescription(设置斐波那契描述)

bool ObjectSetFiboDescription(    string name, int index, string text)

函数分配一个新的描述到斐波纳契物件的水平。 相当数量斐波纳契水平取决于物件类型。 最大金额斐波纳契水平是32。
获得详细的错误信息,查看 GetLastError() 函数。

参量:

name      –      物件名称。

index      –      斐波纳契索引水平(0-31)。

text      –      新的水平描述

示例:

ObjectSetFiboDescription(“MyFiboObject”,2,”Second line”);

18.14 ObjectSetText(设置对象文字)

bool ObjectSetText(    string name, string text, int font_size, void font, void text_color)

改变物件描述。对于OBJ_TEXT 和OBJ_LABEL物件的描述作为图表的文本显示。如果函数成功, 返回的值将是TRUE。 否则, 它是FALSE。获得详细的错误信息, 查看GetLastError() 函数。
只有字体大小,字体名称和文本颜色参量使用为 font_size, font_name和 text_color 物件。为其它类型
物件, 这些参量被忽略。
参见 ObjectDescription() 函数。

参量:

name      –      物件名称。

text      –      描述物件文本。

font_size      –      字体大小点数。

font      –      字体名称。

text_color      –      文本颜色。

示例:

ObjectSetText(“text_object”, “Hello world!”, 10, “Times New Roman”, Green);

18.15 ObjectsTotal(对象总数)

int ObjectsTotal(    void type)

在图表中返回指定物件类型总量。

参量:

type      –      选择参量。将计数的物件类型。 它可以是 物件类型列举的任意值或EMPTY常数计算全部类型物件。

示例:

int obj_total=ObjectsTotal();

string name;

for(int i=0;i<obj_total;i++)

{

name=ObjectName(i);

Print(i,”对于 #的物件名称”,i,” is ” + name);

}

18.16 ObjectType(对象类型)

int ObjectType(    string name)

函数返回 物件类型值。获得详细的错误信息, 查看 GetLastError() 函数。

参量:

name      –      物件名称。

示例:

if(ObjectType(“line_object2”)!=OBJ_HLINE) return(0);