管理图表元素的可见性

枚举类型 ENUM_CHART_PROPERTY_INTEGER 中的大量特性用于控制图表元素的可见性。几乎所有这些特性均为布尔类型:true对应显示元素,false 对应隐藏元素。例外情况是 CHART_SHOW_VOLUMES,它使用 ENUM_CHART_VOLUME_MODE 枚举(见下文)。

标识符

说明

值类型

CHART_SHOW

常规价格图表显示。如果设置为 false,则将禁用所有价格图表特性的渲染,并移除图表边缘的所有填充内容:时间和价格刻度、快速导航栏、日历事件标记、交易图标、指标和柱线工具提示、指标子窗口、成交量直方图等。

bool

CHART_SHOW_TICKER

在左上角显示交易品种代码。禁用交易品种代码会自动禁用 OHLC(CHART_SHOW_OHLC)

bool

CHART_SHOW_OHLC

在左上角显示 OHLC 值。启用 OHLC 会自动启用交易品种代码(CHART_SHOW_TICKER)

bool

CHART_SHOW_BID_LINE

将买价显示为一条水平线

bool

CHART_SHOW_ASK_LINE

将卖价显示为一条水平线

bool

CHART_SHOW_LAST_LINE

将最新价显示为一条水平线

bool

CHART_SHOW_PERIOD_SEP

显示相邻周期之间的垂直分隔线

bool

CHART_SHOW_GRID

在图表上显示网格线

bool

CHART_SHOW_VOLUMES

在图表上显示成交量

ENUM_CHART_VOLUME_MODE

CHART_SHOW_OBJECT_DESCR

显示对象的文本描述(并非所有类型的对象都会显示描述)

bool

CHART_SHOW_TRADE_LEVELS

在图表上显示交易价位(开仓价位、止损位、止盈位和挂单价位)

bool

CHART_SHOW_DATE_SCALE

在图表上显示日期刻度

bool

CHART_SHOW_PRICE_SCALE

在图表上显示价格刻度

bool

CHART_SHOW_ONE_CLICK

在图表上显示快速交易面板(“一键交易”选项)

bool

在设置对话框中部分 ENUM_CHART_PROPERTY_INTEGER 特性的标志

在设置对话框中部分 ENUM_CHART_PROPERTY_INTEGER 特性的标志

对于其中部分特性,用户可通过图表上下文菜单使用,而一些特性只能通过设置对话框使用。还有一些设置只能在 MQL5 中更改,特别是垂直 (CHART_SHOW_DATE_SCALE) 刻度和水平 (CHART_SHOW_DATE_SCALE) 刻度的显示,以及整个图表的可见性 (CHART_SHOW)。最后一种情况尤其值得注意,因为关闭渲染功能是通过图形对象 图形资源图形对象创建自定义程序界面的理想解决方案,无论 CHART_SHOW 的值如何,这些对象始终会被渲染。

这本书附带脚本 ChartBlackout.mq5,该脚本每次运行时会将 CHART_SHOW 模式从当前状态切换为相反状态。

void OnStart()
{
   ChartSetInteger(0CHART_SHOW, !ChartGetInteger(0CHART_SHOW));
}

因此,你可以在常规图表上应用该脚本以完全清空窗口,然后再次应用它以恢复先前的外观。

上述 ENUM_CHART_VOLUME_MODE 枚举包含以下成员:

标识符

说明

CHART_VOLUME_HIDE

成交量已隐藏

0

CHART_VOLUME_TICK

分时报价成交量

1

CHART_VOLUME_REAL

交易成交量(如有)

2

与脚本 ChartMode.mq5类似,我们在脚本ChartElements.mq5 中实现了图表元素的可见性监控功能。主要区别在于所控制的标志集合不同。

void OnStart()
{
   int flags[] =
   {
      CHART_SHOW,
      CHART_SHOW_TICKERCHART_SHOW_OHLC,
      CHART_SHOW_BID_LINECHART_SHOW_ASK_LINECHART_SHOW_LAST_LINE,
      CHART_SHOW_PERIOD_SEPCHART_SHOW_GRID,
      CHART_SHOW_VOLUMES,
      CHART_SHOW_OBJECT_DESCR,
      CHART_SHOW_TRADE_LEVELS,
      CHART_SHOW_DATE_SCALECHART_SHOW_PRICE_SCALE,
      CHART_SHOW_ONE_CLICK
   };
   ...

此外,在创建设置备份后,我们会通过编程方式主动禁用时间刻度和价格刻度(当脚本结束时,会从备份中恢复这些设置)。

   ...
   m.backup();
   
   ChartSetInteger(0CHART_SHOW_DATE_SCALEfalse); 
   ChartSetInteger(0CHART_SHOW_PRICE_SCALEfalse);
   ... 
}

以下是日志片段,包含了关于所采取操作的注释。前两条记录的出现,正是因为在创建初始备份后,MQL 代码中禁用了刻度显示。

CHART_SHOW_DATE_SCALE 1 -> 0 // disabled the time scale in the MQL5 code
CHART_SHOW_PRICE_SCALE 1 -> 0 // disabled the price scale in the MQL5 code
CHART_SHOW_ONE_CLICK 0 -> 1 // disabled "One click trading"
CHART_SHOW_GRID 1 -> 0 // disable "Grid"
CHART_SHOW_VOLUMES 0 -> 2 // showed real "Volumes"
CHART_SHOW_VOLUMES 2 -> 1 // showed "Tick volumes"
CHART_SHOW_TRADE_LEVELS 1 -> 0 // disabled "Trade levels"