跳至内容

对象可见性

对象可见性

对象组合可见标记决定图表时间表,该对象是明显的,为了建立或者得到OBJPROP_TIMEFRAMES类型值,可以使用 ObjectSetInteger()/ObjectGetInteger() 函数。

ID描述
OBJ_NO_PERIODS0时间表中不引用对象
OBJ_PERIOD_M10x000000011分钟图表显示
OBJ_PERIOD_M20x000000022分钟图表显示
OBJ_PERIOD_M30x000000043分钟图表显示
OBJ_PERIOD_M40x000000084分钟图表显示
OBJ_PERIOD_M50x000000105分钟图表显示
OBJ_PERIOD_M60x000000206分钟图表显示
OBJ_PERIOD_M100x0000004010分钟图表显示
OBJ_PERIOD_M120x0000008012分钟图表显示
OBJ_PERIOD_M150x0000010015分钟图表显示
OBJ_PERIOD_M200x0000020020分钟图表显示
OBJ_PERIOD_M300x0000040030分钟图表显示
OBJ_PERIOD_H10x000008001小时图表显示
OBJ_PERIOD_H20x000010002小时图表显示
OBJ_PERIOD_H30x000020003小时图表显示
OBJ_PERIOD_H40x000040004小时图表显示
OBJ_PERIOD_H60x000080006小时图表显示
OBJ_PERIOD_H80x000100008小时图表显示
OBJ_PERIOD_H120x0002000012小时图表显示
OBJ_PERIOD_D10x00040000以天为单位的图表显示
OBJ_PERIOD_W10x00080000以周为单位的图表显示
OBJ_PERIOD_MN10x00100000以月为单位的图表显示
OBJ_ALL_PERIODS0x001fffff所有时间表对象显示

可见性标记可以通过使用符号"|“来建立,例如,标记组合OBJ_PERIOD_M10|OBJ_PERIOD_H4 表示该对象在10分钟到4小时这个时间段内可见

示例:

void OnStart()
  {
//---
   string highlevel="PreviousDayHigh";
   string lowlevel="PreviousDayLow";
   double prevHigh;           // 前一天最高价
   double prevLow;            // 前一天最低价
   double highs[],lows[];     // 最高和最低价数组

//--- 重置上一个错误
   ResetLastError();
//--- 获得日常时间表最近的2个最高值
   int highsgot=CopyHigh(Symbol(),PERIOD_D1,0,2,highs);
   if(highsgot>0) // 如果复制成功
     {
      Print("High prices for the last 2 days were obtained successfully");
      prevHigh=highs[0]; // 前一天最高价
      Print("prevHigh = ",prevHigh);
      if(ObjectFind(0,highlevel)<0) // 没有找到名为highlevel物件
        {
         ObjectCreate(0,highlevel,OBJ_HLINE,0,0,0); // 创建水平线物件
        }
      //--- 为高位线价格平面设置值
      ObjectSetDouble(0,highlevel,OBJPROP_PRICE,0,prevHigh);
      //--- 仅设置PERIOD_M10和PERIOD_H4的可见性
      ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
     }
   else
     {
      Print("Could not get High prices over the past 2 days, Error = ",GetLastError());
     }

//--- 重置上一个错误
   ResetLastError();
//--- 获得日常时间表最近的2个最低值
   int lowsgot=CopyLow(Symbol(),PERIOD_D1,0,2,lows);
   if(lowsgot>0) // 如果复制成功
     {
      Print("Low prices for the last 2 days were obtained successfully");
      prevLow=lows[0]; // 前一天最低价
      Print("prevLow = ",prevLow);
      if(ObjectFind(0,lowlevel)<0) // 没有找到名为lowlevel物件
        {
         ObjectCreate(0,lowlevel,OBJ_HLINE,0,0,0); // 创建水平线物件
        }
      //--- 为低位线价格平面设置值
      ObjectSetDouble(0,lowlevel,OBJPROP_PRICE,0,prevLow);
      //--- 仅设置PERIOD_M10和PERIOD_H4的可见性
      ObjectSetInteger(0,lowlevel,OBJPROP_TIMEFRAMES,OBJ_PERIOD_M10|OBJ_PERIOD_H4);
     }
   else Print("Could not get Low prices for the last 2 days, Error = ",GetLastError());

   ChartRedraw(0); // 强制重画图表
  }

另见

秒周期周期图表时间表日期和时间