#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#define OBJ_NAME "TestObjectSetString" // 对象名称
//+------------------------------------------------------------------+
//| 脚本程序起始函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 当前图表 ID 和交易品种, 用于显示对象描述的标志
long chart_id= ChartID();
string symbol = ChartSymbol(chart_id);
bool descript= ChartGetInteger(chart_id, CHART_SHOW_OBJECT_DESCR);
//--- 设置图表上显示对象描述
ChartSetInteger(chart_id, CHART_SHOW_OBJECT_DESCR, true);
//--- 取得当前出价
double bid=0;;
ResetLastError();
if(!SymbolInfoDouble(symbol, SYMBOL_BID, bid))
{
Print("SymbolInfoDouble() failed. Error ", GetLastError());
return;
}
//--- 在当前出价上创建"水平线"图形对象
if(!ObjectCreate(chart_id, OBJ_NAME, OBJ_HLINE, 0, 0, bid))
{
Print("ObjectCreate() failed. Error ", GetLastError());
return;
}
//--- 在对象描述中输入对象名称+描述
if(!ObjectSetString(chart_id, OBJ_NAME, OBJPROP_TEXT, "Bid: "+DoubleToString(bid, (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS))))
{
Print("ObjectSetString() failed. Error ", GetLastError());
return;
}
//--- 更新图表以立即反映变化
ChartRedraw(chart_id);
//--- 取得对象描述
string string_var="";
if(!ObjectGetString(chart_id, OBJ_NAME, OBJPROP_TEXT, 0, string_var))
{
Print("ObjectGetInteger() failed. Error ", GetLastError());
return;
}
//--- 取得对象名称
string obj_name=ObjectGetString(chart_id, OBJ_NAME, OBJPROP_NAME);
//--- 取得对象类型
ENUM_OBJECT object_type=(ENUM_OBJECT)ObjectGetInteger(chart_id, OBJ_NAME, OBJPROP_TYPE);
//--- 在日志中显示对象类型, 它的名称和描述
PrintFormat("The %s object named \"%s\" has the description \"%s\"",EnumToString(object_type), obj_name, string_var);
//--- 等待两秒再删除所创建的对象
Sleep(2000);
ObjectDelete(chart_id, OBJ_NAME);
//--- 返回在图表上显示对象描述的初始标志
ChartSetInteger(chart_id, CHART_SHOW_OBJECT_DESCR, descript);
ChartRedraw(chart_id);
/*
结果:
The OBJ_HLINE object named "TestObjectSetString" has the description "Bid: 0.62096"
*/
}
|