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