//+------------------------------------------------------------------+
//|                                          List Object Details.mq4 |
//+------------------------------------------------------------------+
#property show_inputs

#include <hanover --- function header.mqh>

extern string ObjectTypesToList = "VLine,HLine,TLine,TBAngle,LRChan,Chan,SDChan,GLine,GFan,GGrid,Fib,FibTime,FibFan,FibArc,FibExp,FibChan,Rectangle,Triangle,Ellipse,Pfork,Cycles,Text,Arrow,Label";

string OT[24];

//+------------------------------------------------------------------+
int start()  {
//+------------------------------------------------------------------+
  string ObjectTypes = "VLine,HLine,TLine,TBAngle,LRChan,Chan,SDChan,GLine,GFan,GGrid,Fib,FibTime,FibFan,FibArc,FibExp,FibChan,Rectangle,Triangle,Ellipse,Pfork,Cycles,Text,Arrow,Label";
  StrToStringArray(ObjectTypes,OT);
  for (int i=0; i<24; i++)  {
    if (StringFind(StringTrim(StringLower(ObjectTypesToList)),StringTrim(StringLower(OT[i]))) < 0)
      OT[i] = " ";
  }
  
  string fname = "Object List---" + ExpandCcy(Symbol()) + "," + TFToStr(Period()) +".csv";
  int h = FileOpen(fname,FILE_CSV|FILE_WRITE,'~');
  string outstr = "#,Name,Type,Description,Time1,Price1,Time2,Price2,Color,Style,Width,BG,Ray,Arrow,Corner,Hpos,Vpos";
  FileWrite(h,outstr);              
  for (i=0; i<ObjectsTotal(); i++)   {
    string objname = ObjectName(i);
    int    type    = ObjectType(objname);
    if (OT[type] != " ")   {
      outstr = NumberToStr(i,"T5")
             + StrToStr(objname,"','T30")
             + StrToStr(OT[type],"','T30")
             + StrToStr(ObjectDescription(objname),"',\x22'T64'\x22'")
             + DateToStr(ObjectGet(objname,OBJPROP_TIME1),"','BY.M.D H:I")
             + NumberToStr(ObjectGet(objname,OBJPROP_PRICE1),"','TBR-3.5")
             + DateToStr(ObjectGet(objname,OBJPROP_TIME2),"','BY.M.D H:I")
             + NumberToStr(ObjectGet(objname,OBJPROP_PRICE2),"','TBR-3.5")
             + "," + ColorToStr(ObjectGet(objname,OBJPROP_COLOR))
             + NumberToStr(ObjectGet(objname,OBJPROP_STYLE),"','T2")
             + NumberToStr(ObjectGet(objname,OBJPROP_WIDTH),"','T2")
             + "," + BoolToStr(ObjectGet(objname,OBJPROP_BACK))
             + "," + BoolToStr(ObjectGet(objname,OBJPROP_RAY))
             + NumberToStr(ObjectGet(objname,OBJPROP_ARROWCODE),"','TB6")
             + NumberToStr(ObjectGet(objname,OBJPROP_CORNER),"','T1")
             + NumberToStr(ObjectGet(objname,OBJPROP_XDISTANCE),"','TB6")
             + NumberToStr(ObjectGet(objname,OBJPROP_YDISTANCE),"','TB6");
      FileWrite(h,outstr);              
  } }
  FileClose(h);
  MessageBox("All done!");
  return(0);
}

//+------------------------------------------------------------------+
#include <hanover --- extensible functions.mqh>