ChartSetInteger
ChartSetInteger
设置指定图表相关属性值。图表属性必须是日期时间,整型,颜色,布尔型或者字符型。该命令添加到图表信息队列并且将在处理完之前所有命令后开始执行。
bool ChartSetInteger(
long chart_id, // 图表 ID
ENUM_CHART_PROPERTY_DOUBLE prop_id, // 属性 ID
long value // 值
);bool ChartSetInteger(
long chart_id, // 图表 ID
ENUM_CHART_PROPERTY_DOUBLE prop_id, // 属性 ID
int sub_window, // 子窗口号
long value // 值
);参量
- chart_id
[in] 图表 ID. 0 意味着当前图表。
- prop_id
[in] 图表属性ID. 可以是ENUM_CHART_PROPERTY_INTEGER值中的一个(除了只读属性)。
- sub_window
[in] 图表子窗口数。对于第一种情况,默认值为0(图表主窗口)。属性大部分情况不需要子窗口数。
- 值
[in] 属性值。
返回值
如果该命令已添加到图表队列则返回true,否则false。若获得额外错误信息,需要调用函数GetLastError()。
注意
该函数为异步函数,这意味着该函数不等待执行已成功添加到指定图表队列的命令。相反,而是立即返回控制。该属性将只会在处理图表队列的对应命令之后更改。若要立即执行来自图表队列的命令,请调用ChartRedraw函数。
如果您想立即改变多个图表属性,那么应该在一个代码框中执行对应的函数(ChartSetString, ChartSetDouble,ChartSetString),在此之后您应该马上调用ChartRedraw。
若要检查命令执行的结果,您可以使用一个函数,请求指定的图表属性(ChartGetInteger,ChartGetDouble, ChartSetString)。然而,请注意,这些都是同步函数,等待执行结果。
例如:
//+------------------------------------------------------------------+
//| EA交易初始化函数 |
//+------------------------------------------------------------------+
void OnInit()
{
//--- 在图表窗口中启用鼠标移动的事件
ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
//--- 强制更新图表属性确保做好事件处理的准备
ChartRedraw();
}
//+------------------------------------------------------------------+
//| 鼠标点选位置 |
//+------------------------------------------------------------------+
string MouseState(uint state)
{
string res;
res+="\nML: " +(((state& 1)== 1)?"DN":"UP"); // 鼠标左移
res+="\nMR: " +(((state& 2)== 2)?"DN":"UP"); // 鼠标右移
res+="\nMM: " +(((state&16)==16)?"DN":"UP"); // 鼠标居中
res+="\nMX: " +(((state&32)==32)?"DN":"UP"); // 鼠标点选第一个X键
res+="\nMY: " +(((state&64)==64)?"DN":"UP"); // 鼠标点选第二个 X 键
res+="\nSHIFT: "+(((state& 4)== 4)?"DN":"UP"); // 移位键
res+="\nCTRL: " +(((state& 8)== 8)?"DN":"UP"); // 控制键
return(res);
}
//+------------------------------------------------------------------+
//| ChartEvent 函数 |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
if(id==CHARTEVENT_MOUSE_MOVE)
Comment("POINT: ",(int)lparam,",",(int)dparam,"\n",MouseState((uint)sparam));
}