图表属性在MetaTrader 4(MT4)中发挥着重要的作用,它们控制着图表的外观、交互和功能。在MT4中,图表属性由枚举类型ENUM_CHART_PROPERTY_INTEGER、ENUM_CHART_PROPERTY_DOUBLE和ENUM_CHART_PROPERTY_STRING定义。可以使用ChartSetInteger()、ChartGetInteger()、ChartSetDouble()、ChartGetDouble()、ChartSetString()和ChartGetString()函数对这些属性进行操作。
1. 图表属性的种类
图表属性有许多种类,包括整数类型、双精度类型和字符串类型。以下是各种图表属性的描述:
1.1 整数属性
- CHART_BRING_TO_TOP:将图表置于其他图表的上方。
- CHART_MOUSE_SCROLL:通过鼠标左键横向滚动图表,如果启用CHART_SCALEFIX、CHART_SCALEFIX_11或CHART_SCALE_PT_PER_BAR属性,则还可以纵向滚动。
- CHART_EVENT_MOUSE_MOVE:向图表上的所有mql4程序发送鼠标移动和鼠标单击事件的通知。
- CHART_EVENT_OBJECT_CREATE:向图表上的所有mql4程序发送新对象创建事件的通知。
- CHART_EVENT_OBJECT_DELETE:向图表上的所有mql4程序发送对象删除事件的通知。
(注:以上属性仅为部分整数属性的简要描述,完整列表请参考相关文档。)
1.2 双精度属性
- CHART_SHIFT_SIZE:从右边界开始的零柱缩进大小(百分比)。
- CHART_FIXED_POSITION:图表从左边界固定的位置(百分比值)。
- CHART_FIXED_MAX:固定的图表最大值。
- CHART_FIXED_MIN:固定的图表最小值。
- CHART_POINTS_PER_BAR:每根柱子的点数比例。
1.3 字符串属性
- CHART_COMMENT:图表中的注释文本。
2. 图表属性的应用
以下示例代码展示了如何在MT4中使用图表属性:
int chartMode=ChartGetInteger(0,CHART_MODE);
switch(chartMode)
{
case(CHART_BARS): Print("CHART_BARS"); break;
case(CHART_CANDLES): Print("CHART_CANDLES");break;
default:Print("CHART_LINE");
}
bool shifted=ChartGetInteger(0,CHART_SHIFT);
if(shifted) Print("CHART_SHIFT = true");
else Print("CHART_SHIFT = false");
bool autoscroll=ChartGetInteger(0,CHART_AUTOSCROLL);
if(autoscroll) Print("CHART_AUTOSCROLL = true");
else Print("CHART_AUTOSCROLL = false");
int chartHandle=ChartGetInteger(0,CHART_WINDOW_HANDLE);
Print("CHART_WINDOW_HANDLE = ",chartHandle);
int windows=ChartGetInteger(0,CHART_WINDOWS_TOTAL);
Print("CHART_WINDOWS_TOTAL = ",windows);
if(windows>1)
{
for(int i=0;i<windows;i++)
{
int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,i);
double priceMin=ChartGetDouble(0,CHART_PRICE_MIN,i);
double priceMax=ChartGetDouble(0,CHART_PRICE_MAX,i);
Print(i+": CHART_HEIGHT_IN_PIXELS = ",height," pixels");
Print(i+": CHART_PRICE_MIN = ",priceMin);
Print(i+": CHART_PRICE_MAX = ",priceMax);
}
}
上述示例代码展示了如何使用图表属性函数获取和设置图表属性。通过合理地使用图表属性,我们可以更加灵活地控制MT4中的图表,从而更加高效地进行交易分析和策略制定。