鼠标和键盘控制
在本节中,我们将了解一组特性,这些特性会影响图表如何捕获特定鼠标和键盘操作,这些操作在默认情况下被视为控制操作。特别是,MetaTrader 5 用户都很清楚,图表可以通过鼠标滚动,还可以调用上下文菜单来执行最常用的命令。MQL5 允许完全或部分禁用图表的这种行为。需要注意的是,这只能通过编程方式实现:终端用户界面中没有类似选项。
需要注意的是,唯一的例外是 CHART_DRAG_TRADE_LEVELS 选项(见下表):终端设置的 Charts选项卡中提供了一个下拉列表,用于控制是否允许通过鼠标拖动交易水平线。
该组的所有特性均为布尔类型(true表示允许,false 表示禁用),且它们包含在 ENUM_CHART_PROPERTY_INTEGER 枚举中。
标识符 |
说明 |
|---|---|
CHART_CONTEXT_MENU |
通过按下鼠标右键启用/禁用对上下文菜单的访问。false值仅会禁用图表的上下文菜单,而图表上对象的上下文菜单仍可使用。默认值为 true。 |
CHART_CROSSHAIR_TOOL |
通过按下鼠标中键启用/禁用对十字准线工具的访问。默认值为 true。 |
CHART_MOUSE_SCROLL |
通过鼠标左键或滚轮滚动图表。当启用滚动时,这不仅适用于水平滚动,还适用于垂直滚动,但垂直滚动仅在设置固定比例时可用:即应用 CHART_SCALEFIX、CHART_SCALEFIX_11 或 CHART_SCALE_PT_PER_BAR 特性之一的情况下。默认值为 true。 |
CHART_KEYBOARD_CONTROL |
使用键盘管理图表的能力(通过 Home、End、PageUp/PageDown、+/-、上下箭头等按键)。设置为 false可禁用图表的滚动和缩放功能,但与此同时,仍可在 OnChartEvent中接收这些按键的击键事件。默认值为 true。 |
CHART_QUICK_NAVIGATION |
在图表中启用快速导航栏,当你双击鼠标或按下 Space或Input 键时,该导航栏会自动出现在时间轴左侧区域。使用该导航栏,你可以快速更改交易品种、时间范围或第一个可见柱线的日期。默认情况下,该特性设置为 true,即启用快速导航功能。 |
CHART_DRAG_TRADE_LEVELS |
允许通过鼠标在图表上拖动交易水平线的权限。默认情况下拖动模式处于启用状态 (true)。 |
在测试脚本ChartInputControl.mq5中,我们将为上述所有特性设置监控功能,并额外提供输入变量,供用户设置任意值。我们的脚本会在启动时保存设置的备份副本,因此当脚本结束时,所有已更改的特性都将恢复原状。
#property script_show_inputs
|
例如,当我们运行脚本时,可以将上下文菜单、十字准线工具、鼠标和键盘控制的权限重置为false。结果将如下日志所示。
Initial state:
|
在这种情况下,你将无法通过鼠标或键盘移动图表,甚至无法调用上下文菜单。因此,为了恢复图表的性能,你需要将在图表上运行相同或另一个脚本(请记住,单个图表只能运行一个脚本,当应用新脚本时,之前的脚本将被卸载)。只需拖放脚本的新实例,但无需运行(在用于提供输入变量的对话框中点击 Cancel即可)。