How to get value of an object in a chart - page 2

 
TradeForexFx:

Hi all,


I need help as follows:

1) There are numerous Objects in the chart, I am interested to get value of the object on a specific bar of the chart. 

2) Object with the names, as an example, "XYZ04", "XYZ110", "XYZ005"  appear on the chart, therefore I know the prefix, but I do not know the suffix which could be 112, 198, 110,13, etc. 


The methodology could be:

1) Determine all the objects with suffix "XYZ" in the chart.

2) Check which one is on the specific bar and get its value.


I went through various ObjectGet, ObjectFind functions but could not put them together to get my desired result.


Appreciate help to resolve the problem



Thanks

 int total=ObjectsTotal(); 
   string obj_name="";string a1,a2;
     for(int i=0;i<total;i++) 
       { 
        obj_name=ObjectName(i); 
        a1=StringSubstr(obj_name,0,3); // XYX
        a2=StringSubstr(obj_name,3,StringLen(obj_name)-3); // 04
        Print(a1," ",a2," ",ObjectDescription(obj_name)); // value XYZ04
        if (obj_name=="XYZ04") Print(ObjectDescription(obj_name)); 
        
       } 
 

Amazing!! With the help of the codes and comments posted by all of you, I could come up with the required code. 


Attaching a file that has the required code. If I key in the Prefix and the bar to look at, I get the value of the object if an object with the prefix is found on the specified bar.


I need the code to execute at the beginning of a new bar, after we are into the new bar for a specified time. (minutes/seconds as a variable). Some helpful code is available here, but beyond my understanding. https://www.mql5.com/en/forum/245598 - execute every minute.


Appreciate a second round of help from all of you.


Thanks

Files:
 
TradeForexFx:

Amazing!! With the help of the codes and comments posted by all of you, I could come up with the required code. 


Attaching a file that has the required code. If I key in the Prefix and the bar to look at, I get the value of the object if an object with the prefix is found on the specified bar.


I need the code to execute at the beginning of a new bar, after we are into the new bar for a specified time. (minutes/seconds as a variable). Some helpful code is available here, but beyond my understanding. https://www.mql5.com/en/forum/245598 - execute every minute.


Appreciate a second round of help from all of you.


Thanks

//+------------------------------------------------------------------+
//|                                         .mq4 |
//|                         |
//+------------------------------------------------------------------+

#property indicator_chart_window

extern int Shift = 15;
extern  string Prefix="";

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators


   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+

int deinit()
  {
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
bool NewBar()
{
   static datetime lastbar;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}   

int start() {

  
 
 
 if(NewBar())
 {
  int length=StringLen(Prefix);
  
  
int total=ObjectsTotal(); 
   string obj_name="";string a1,a2;
     for(int i=0;i<total;i++) 
       { 
        obj_name=ObjectName(i); 
        a1=StringSubstr(obj_name,0,length); // XYX
        a2=StringSubstr(obj_name,length,StringLen(obj_name)-length); // 04
        Comment("Sorry desired object not found!!");
        if (a1 == Prefix && ObjectGetValueByShift(obj_name, Shift) >0){
        Comment("Success!! value of ",obj_name, " =  " ,ObjectGetValueByShift(obj_name,Shift));}
        if  (a1 == Prefix && ObjectGetValueByShift(obj_name, Shift) >0)
        break ;
      }  
}
   return(0);
     
    } 

  
  //https://www.mql5.com/en/forum/245598 - execute every minute