两种指标类型:主窗口指标与子窗口指标
如你所知,MetaTrader 5 中的指标可以在两个位置显示其线条:在主图表窗口的报价数据上方,或在价格图表下方创建的单独窗口中。这两种模式互斥:每个指标只能用于主窗口或子窗口,无法同时兼用两种模式。
当程序需要在两个窗口中同时可视化数据时,有几种替代解决方案。例如,项目可以通过两个相互交互的指标来实现(交互的技术实现方式不受限制,包括: 资源、 文件、 DBMS或通过 DLL 访问的共享内存)。另一种方法是在其中一个窗口(例如底部面板)中使用指标缓冲区,并通过 图形对象在主图表上执行可视化。
主窗口和子窗口中均可应用多个指标。如果指标设计为在独立窗口中运行,则从导航器中用鼠标将其拖到主窗口时,系统会自动为该指标创建一个新窗口。然而,如果该窗口已经有一个包含其他指标的子窗口,则可以将新指标拖到同一位置,从而使两个或多个指标在同一个子窗口中对齐。在这种情况下,同一个窗口中可存在多种指标缩放模式。默认情况下,每个指标的图形会自动独立缩放,并自适应填充面板的整个高度,但这一行为可以进行修改(请参阅 键盘事件章节中的示例 SubScaler.mq5)
指标的显示窗口通过以下两个编译指令之一进行选择。
#property indicator_chart_window // display the indicator in the chart window
|
指标开发者应在源代码起始位置插入其中一个指令。如果两个指令均未出现,系统将默认输出至主窗口,但编译器会生成警告提示。我们在上一节中已经了解了这一点。在以下示例中,我们一定会注明 #property indicator_chart_window或 #property indicator_separate_window。
第二个编译警告IndStub.mq5与缺少缓冲区和图表设置有关。我们将在下一节中讨论这些问题。
指标设置中 Apply to下拉列表的操作取决于该指标设计的目标窗口。
为独立窗口设计的指标可以 Applied子窗口中的指标,但不能应用于主窗口中的指标。
但为主窗口设计的指标可以 Applied to任何指标,包括主窗口中的指标和子窗口中的指标。