直线对象体的射线特性

在图形对象中,有多种类型的对象,其锚点之间的线条可显示为线段(即严格限定在两点之间),或显示为向某个方向无限延伸的直线,贯穿整个窗口可见区域。这类对象有:

  • 趋势线
  • 按角度绘制的趋势线
  • 所有类型的通道(等距通道、标准差通道、回归通道、Andrews 分叉线)
  • Gann 线
  • Fibonacci 线
  • Fibonacci 通道
  • Fibonacci 扩展

对于这些对象,你可以分别使用 OBJPROP_RAY_LEFT 和 OBJPROP_RAY_RIGHT 特性来单独启用向左或向右的线条延伸。此外,对于垂直线,你可以指定其是绘制在所有图表子窗口中还是仅绘制在当前子窗口中(锚点所在位置):这一功能由 OBJPROP_RAY 特性控制。所有特性均为布尔值,这意味着它们可以被启用 (true) 或禁用 (false)。

标识符

说明

OBJPROP_RAY_LEFT

射线向左延伸

OBJPROP_RAY_RIGHT

射线向右延伸

OBJPROP_RAY

垂直线延伸到所有图表窗口

你可以使用ObjectRays.mq5脚本来检查射线的运行效果。该脚本会创建 3 个具有不同射线设置的标准差通道。

特定对象通过辅助函数SetupChannel创建并配置。通过其参数,可以设置通道长度(以柱线为单位)、通道宽度(偏差),以及左右射线的显示选项和颜色。

#include "ObjectPrefix.mqh"
   
void SetupChannel(const int lengthconst double deviation = 1.0,
   const bool right = falseconst bool left = false,
   const color clr = clrRed)
{
   const string name = ObjNamePrefix + "Channel"
      + (right ? "R" : "") + (left ? "L" : "");
   // NB: Anchor point 0 must have an earlier time than anchor point 1,
   // otherwise the channel will degenerate
   ObjectCreate(0nameOBJ_STDDEVCHANNEL0iTime(NULL0length), 0);
   ObjectSetInteger(0nameOBJPROP_TIME1iTime(NULL00));
   // deviation
   ObjectSetDouble(0nameOBJPROP_DEVIATIONdeviation);
   // color and description
   ObjectSetInteger(0nameOBJPROP_COLORclr);
   ObjectSetString(0nameOBJPROP_TEXTStringFormat("%2.1"deviation)
      + ((!right && !left) ? " NO RAYS" : "")
      + (right ? " RIGHT RAY" : "") + (left ? " LEFT RAY" : ""));
   // properties of rays
   ObjectSetInteger(0nameOBJPROP_RAY_RIGHTright);
   ObjectSetInteger(0nameOBJPROP_RAY_LEFTleft);
   // lighting up objects by highlighting
   // (besides, it's easier for the user to remove them)
   ObjectSetInteger(0nameOBJPROP_SELECTABLEtrue);
   ObjectSetInteger(0nameOBJPROP_SELECTEDtrue);
}

OnStart函数中,我们针对 3 个不同的通道调用 SetupChannel 函数。

void OnStart()
{
   SetupChannel(241.0true);
   SetupChannel(482.0falsetrueclrBlue);
   SetupChannel(363.0falsefalseclrGreen);
}

结果,我们得到了以下形式的图表。

具有不同 OBJPROP_RAY_LEFT 和 OBJPROP_RAY_RIGHT 特性设置的通道

具有不同 OBJPROP_RAY_LEFT 和 OBJPROP_RAY_RIGHT 特性设置的通道

当启用射线功能后,可以通过我们将在 获取线条上给定点的时间或价格 章节中说明的函数,请求对象外推计算时间和价格值。