对象获取和对象获取的移位问题

 

嗨,谁能帮帮我。我有一个从水平线 或趋势线获取价格值的EA。然而,我有如下代码,但它不会获取任何一个值。如果我去掉Objectgetvaluebyshift,它就会获取水平线的价格,反之亦然。但我需要它能识别这两种情况,并从我的图表上的任何一条线(无论是三角线还是h_line)上获取数值。也许有人会贴出一些代码,这样我就能明白该怎么做了。

谢谢。

tp =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1))||(ObjectGet( TP_P, OBJPROP_PRICE1))。

 

通过移位获取对象值( string name, int shift)

OBJPROP_PRICE1不是 "转变"...Shift是你要取值的条数 -- 适用于趋势线和类似对象

double tp = ObjectGetValueByShift( TP_P, 0); // 假设TP_P是一个包含对象名称的字符串变量,而你想要的是当前小节处的线的值

 
phy:

通过移位获取对象值( string name, int shift)

OBJPROP_PRICE1不是 "转变"...Shift是你要取值的条数 -- 适用于趋势线和类似对象

double tp = ObjectGetValueByShift( TP_P, 0); // 假设TP_P是一个包含对象名称的字符串变量,而你想要的是当前小节处的线的值


我已经尝试了你所阐述的方法。它似乎不起作用。任何其他信息都将是巨大的。
 

gavin:

I have tried what you have explianed. It doesnt seen to work. Any other info would be great.

你所解释的是否从趋势线或h_line中获得了vaule,无论我当时在图表上加载的是什么?

 

发布你的代码,我们不知道你做了什么。

 

这就是我的情况。

--------------------------------------------------------

字符串TP_P。
如果(OrderType()==OP_BUY)TP_P = BTP。
如果(OrderType()==OP_SELL) TP_P = STP;

double tp;

tp =(ObjectGetValueByShift( TP_P, OBJPROP_PRICE1))||(ObjectGet( TP_P, OBJPROP_PRICE1))。

-----------------------------------------------------------------------------------------------------------------

然后我把这句话改成了,你说的是什么呀?

----------------------------------------------------------

tp = ObjectGetValueByShift( TP_P,0)。

 

有什么帮手吗?

 
if (ObjectType(TP_P) == OBJ_TREND) tp = ObjectGetValueByShift(TP_P, shift);
else                               tp = ObjectGEt(TP_P, OBJPROP_PRICE1)
 
WHRoeder:


现在我已经看到它了,非常简单。谢谢你的帮助,伙计。这正是我想要的结果。干杯....
 

你好。

我有以下代码用于从趋势线获取价格。它不工作。请提供帮助。

int obj_total = ObjectsTotal()。
字符串名称。
for(int j = 0; j<obj_total; j++)
{
name = ObjectName(j);
Print(j, "Object - ", name);
}
如果(ObjectType(name) ==OBJ_TREND&& name == "Trendline1-m30")
{
price1 = ObjectGetValueByShift(name, 0);
}

如果(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
{
price2 = ObjectGetValueByShift(name, 0);
}

 

你好,在发布代码时请使用SRC 按钮。

所有黄色 的代码都是在'for'循环之外的。

所以'name'的值总是最终对象的名称。

int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
   {
   name = ObjectName(j);
   Print(j, "Object - ", name);
   }
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
      {
       price1 = ObjectGetValueByShift(name, 0);
      }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
      {
       price2 = ObjectGetValueByShift(name, 0);
      }


也许可以这样试试(假设price1和price2已经在其他地方声明了)。

   int obj_total = ObjectsTotal();
   string name;
   for(int j = 0; j<obj_total; j++)
     {
      name = ObjectName(j);
      Print(j, "Object - ", name);
      if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
        {
         price1 = ObjectGetValueByShift(name, 0);
        }

      if(ObjectType(name) == OBJ_TREND && name == "Trendline2-m30")
        {
         price2 = ObjectGetValueByShift(name, 0);
        }
     }