对象可见性

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

ID 描述
OBJ_NO_PERIODS 0 时间表中不引用对象
OBJ_PERIOD_M1 0x00000001 1分钟图表显示
OBJ_PERIOD_M2 0x00000002 2分钟图表显示
OBJ_PERIOD_M3 0x00000004 3分钟图表显示
OBJ_PERIOD_M4 0x00000008 4分钟图表显示
OBJ_PERIOD_M5 0x00000010 5分钟图表显示
OBJ_PERIOD_M6 0x00000020 6分钟图表显示
OBJ_PERIOD_M10 0x00000040 10分钟图表显示
OBJ_PERIOD_M12 0x00000080 12分钟图表显示
OBJ_PERIOD_M15 0x00000100 15分钟图表显示
OBJ_PERIOD_M20 0x00000200 20分钟图表显示
OBJ_PERIOD_M30 0x00000400 30分钟图表显示
OBJ_PERIOD_H1 0x00000800 1小时图表显示
OBJ_PERIOD_H2 0x00001000 2小时图表显示
OBJ_PERIOD_H3 0x00002000 3小时图表显示
OBJ_PERIOD_H4 0x00004000 4小时图表显示
OBJ_PERIOD_H6 0x00008000 6小时图表显示
OBJ_PERIOD_H8 0x00010000 8小时图表显示
OBJ_PERIOD_H12 0x00020000 12小时图表显示
OBJ_PERIOD_D1 0x00040000 以天为单位的图表显示
OBJ_PERIOD_W1 0x00080000 以周为单位的图表显示
OBJ_PERIOD_MN1 0x00100000 以月为单位的图表显示
OBJ_ALL_PERIODS 0x001fffff 所有时间表对象显示

可见性标记可以通过使用符号"|"来建立,例如,标记组合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); // 强制重画图表

  }

另见

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