Domanda su Objectget e objectgetvaluebyshift

 

Ciao, qualcuno può aiutarmi con questo. Ho un ea che ottiene un valore di prezzo da una linea orizzontale o da una trendline. Tuttavia ho il codice come segue ma non prenderà nessuno dei due valori. Se rimuovo l'Objectgetvaluebyshift prenderà il prezzo della linea orizzontale e viceversa. Ma ho bisogno che riconosca entrambi e prenda il valore dalla linea che ho sul mio grafico (sia una linea trand che h_line). Forse qualcuno posterà un po' di codice in modo che io possa capire cosa fare.

Grazie.

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

 

ObjectGetValueByShift( nome stringa, int shift)

OBJPROP_PRICE1 non è lo "shift"... Shift è il numero di barra al quale si vuole prendere il valore -- applicabile a oggetti trendline e simili

double tp = ObjectGetValueByShift( TP_P, 0); // supponendo che TP_P sia una variabile stringa contenente il nome dell'oggetto, e che si voglia il valore della linea alla barra corrente

 
phy:

ObjectGetValueByShift( nome stringa, int shift)

OBJPROP_PRICE1 non è lo "shift"... Shift è il numero di barra al quale si vuole prendere il valore -- applicabile a oggetti trendline e simili

double tp = ObjectGetValueByShift( TP_P, 0); // supponendo che TP_P sia una variabile stringa contenente il nome dell'oggetto, e che si voglia il valore della linea alla barra corrente


Ho provato quello che hai spiegato. Non sembra funzionare. Qualsiasi altra informazione sarebbe fantastica.
 

gavin:

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

Quello che hai spiegato ottiene la vaule sia da una trendline che da una h_line, che ho caricato sul grafico in quel momento?

 

Pubblicate il vostro codice, non abbiamo idea di cosa avete fatto.

 

Questo è quello che avevo.

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

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

doppio tp;

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

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

Ho poi messo questo al suo posto, quello che hai detto sì?

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

tp = ObjectGetValueByShift( TP_P,0);

 

qualche aiutante?

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


Così semplice ora che l'ho visto. Grazie mille amico per l'aiuto. Questo ha funzionato proprio come volevo. Salute....
 

Salve,

Ho il seguente codice per ottenere il prezzo dalla trendline. Non funziona. Qualsiasi aiuto per favore.

int obj_total = ObjectsTotal();
nome della stringa;
for(int j = 0; j<obj_total; j++)
{
nome = NomeOggetto(j);
Stampa(j, "Oggetto - ", nome);
}
if(ObjectType(name) == OBJ_TREND && name == "Trendline1-m30")
{
price1 = ObjectGetValueByShift(name, 0);
}

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

 

Ciao, per favore usa il tasto SRC quando posti il codice.

Tutto il codice in giallo è FUORI dal ciclo 'for'.

Quindi il valore di 'name' è sempre il nome dell'oggetto finale.

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


Forse prova questo (presumendo che prezzo1 e prezzo2 siano già dichiarati da qualche altra parte):

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