对象可见性

对象组合可见标记决定图表时间表,该对象是明显的,为了建立或者得到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); // 强制重画图表
  }

另见

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