Objectget ve objectgetvaluebyshift sorusu

 

Merhaba bu konuda yardımcı olabilecek varmı. Yatay bir çizgiden veya trend çizgisinden fiyat değeri alan bir adetim var. Ancak aşağıdaki gibi kodum var ama her iki değeri de almayacak. Objectgetvaluebyshift öğesini kaldırırsam, Yatay satır fiyatını alır ve bunun tersi de geçerlidir. Ama her ikisini de tanımam ve grafiğimde sahip olduğum her çizgiden (bir trand veya h_line) değeri elde etmem gerekiyor. Belki birileri biraz kod gönderir, böylece ne yapacağımı anlayabilirim.

Teşekkürler.

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

 

ObjectGetValueByShift ( dize adı, int shift)

OBJPROP_PRICE1 "shift" değil... Shift, değeri almak istediğiniz çubuk numarasıdır -- trend çizgisi ve benzer nesneler için geçerlidir

double tp = ObjectGetValueByShift(TP_P, 0); // TP_P'nin nesnenin adını içeren bir dize değişkeni olduğunu ve geçerli çubukta satırın değerini istediğinizi varsayarsak

 
phy :

ObjectGetValueByShift ( dize adı, int shift)

OBJPROP_PRICE1 "shift" değil... Shift, değeri almak istediğiniz çubuk numarasıdır -- trend çizgisi ve benzer nesneler için geçerlidir

double tp = ObjectGetValueByShift(TP_P, 0); // TP_P'nin nesnenin adını içeren bir dize değişkeni olduğunu ve geçerli çubukta satırın değerini istediğinizi varsayarsak


Anlattıklarınızı denedim. Çalıştığı görülmedi. Başka herhangi bir bilgi harika olurdu.
 

gavin :

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

Açıkladığınız şey, değeri o sırada grafiğe yüklediğim hem trend çizgisinden hem de h_line'dan alıyor mu?

 

Kodunuzu gönderin, ne yaptığınız hakkında hiçbir fikrimiz yok.

 

Sahip olduğum şey buydu.

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

dizi TP_P;
if (OrderType()==OP_BUY) TP_P = BTP;
if (OrderType()==OP_SELL) TP_P = STP;

çift tp;

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

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

Daha sonra bunu koydum, evet ne dedin?

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

tp = ObjectGetValueByShift(TP_P,0);

 

yardımcılar??

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


Çok basit şimdi gördüm. yardım için çok teşekkürler dostum. Bu tam istediğim gibi oldu. Şerefe....
 

Merhaba,

Trend çizgisinden fiyatı almak için aşağıdaki koda sahibim. Çalışmıyor. Herhangi bir yardım lütfen.

int obj_total = NesnelerToplam();
dize adı;
for(int j = 0; j<obj_total; j++)
{
isim = NesneAdı(j);
Print(j, "Nesne - ", isim);
}
if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
{
fiyat1 = ObjectGetValueByShift(ad, 0);
}

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

 

Merhaba, kod gönderirken lütfen SRC butonunu kullanın.

Sarı renkteki tüm kodlar 'for' döngüsünün DIŞINDADIR.

Yani 'name' değeri her zaman son nesnenin adıdır.

 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 );
      }


Belki şunu deneyin (fiyat1 ve fiyat2'nin zaten başka bir yerde bildirildiğini varsayarsak):

   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 );
        }
     }
Neden: