二十三(八)ObjectMove移动物件
ObjectMove
该函数用于改变指定图表中物件的指定锚点的坐标。该函数现有两个版本:
bool ObjectMove(
string object_name, //物件名
int point_index, //锚点号
datetime time, //时间
double price //价格
);
该函数更改对象的指定锚点的坐标。
bool ObjectMove(
string object_name, //物件名
int point_index, //锚点号
datetime time, //时间
double price //价格
);
参数
object_name
物件名。
point_index
锚点索引。锚点的数量取决于对象的类型。
time
[in]选定锚点的时间坐标。
price
[in]所选锚点的价格坐标。
返回值
如果成功,返回true,否则返回false。有关错误调用GetLastError()的更多信息。
请注意
该函数移动图表中的对象坐标。根据对象的类型,物件可以有1到3个坐标。坐标编号从0开始。
当没有指定图表ID的情况下使用该函数时,该函数应该与它直接访问的当前图表一起工作。在下面例子中,返回值表示函数执行结果。
如果指定了非当前图表外的图表的ID,则返回值仅告知命令是否已添加到此图表的队列中。在这种情况下使用异步调用,意味着函数不等待已添加到另一个图表队列的命令的执行。相反,它立即返回控制权。
要检查当前图表之外的命令执行结果,可以使用检查指定对象属性的函数。但是应注意,这些函数被添加到图表队列的末尾,并等待执行结果,因此会很耗时。在处理的图表上有大量物件时,应该考虑到这个特性。
例子:
/ -----------脚本程序启动函数------------ +
int start()
{
string 物件名="趋势线";
long current_chart_id=ChartID();
//---
datetime t1=Time[0];
double p1=Close[0];
//---
datetime t2=Time[1];
double p2=Close[1];
//--- 创建趋势线对象
if(!ObjectCreate(物件名,OBJ_TREND,0,t1,p1,t2,p2)) {
Print("错误:不能创建趋势线!”代码#",GetLastError());
return(0);
}
//---设置颜色为红色
ObjectSetInteger(current_chart_id,物件名,OBJPROP_COLOR,clrRed);
//---趋势线的移动
for(int i=1; i<200; i++){
t2= Time[i];
p2= Close[i];
//---移动趋势线的第二个锚点
ObjectMove(物件名,1,t2,p2);
//---强制图表重绘
ChartRedraw(current_chart_id);
Sleep(100);
}
//--- sleep to see the object
Sleep(3000);
//---删除物件
ObjectDelete(物件名);
return(0);
}