# OBJ_TEXT Text object. ![Note](pics/objtext.png) Note Anchor point position relative to the text can be selected from [ENUM_ANCHOR_POINT](/en/docs/constants/objectconstants/enum_anchorpoint) enumeration. You can also change text slope angle using [OBJPROP_ANGLE](/en/docs/constants/objectconstants/enum_object_property#enum_object_property_double) property. Example The following script creates several Text objects on the chart. Special functions have been developed to create and change graphical object's properties. You can use these functions "as is" in your own applications. ``` //--- description #property description "Script creates \"Text\" graphical object." //--- display window of the input parameters during the script's launch #property script_show_inputs //--- input parameters of the script input string            InpFont="Arial";         // Font input int               InpFontSize=10;          // Font size input color             InpColor=clrRed;         // Color input double            InpAngle=90.0;           // Slope angle in degrees input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_LEFT;   // Anchor type input bool              InpBack=false;           // Background object input bool              InpSelection=false;      // Highlight to move input bool              InpHidden=true;          // Hidden in the object list input long              InpZOrder=0;             // Priority for mouse click //+------------------------------------------------------------------+ //| Creating Text object                                             | //+------------------------------------------------------------------+ bool TextCreate(const long              chart_ID=0,               // chart's ID                 const string            name="Text",              // object name                 const int               sub_window=0,             // subwindow index                 datetime                time=0,                   // anchor point time                 double                  price=0,                  // anchor point price                 const string            text="Text",              // the text itself                 const string            font="Arial",             // font                 const int               font_size=10,             // font size                 const color             clr=clrRed,               // color                 const double            angle=0.0,                // text slope                 const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // anchor type                 const bool              back=false,               // in the background                 const bool              selection=false,          // highlight to move                 const bool              hidden=true,              // hidden in the object list                 const long              z_order=0)                // priority for mouse click   { //--- set anchor point coordinates if they are not set    ChangeTextEmptyPoint(time,price); //--- reset the error value    ResetLastError(); //--- create Text object    if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))      {       Print(__FUNCTION__,             ": failed to create \"Text\" object! Error code = ",GetLastError());       return(false);      } //--- set the text    ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- set text font    ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- set font size    ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- set the slope angle of the text    ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); //--- set anchor type    ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); //--- set color    ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- display in the foreground (false) or background (true)    ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- enable (true) or disable (false) the mode of moving the object by mouse    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);    ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); //--- hide (true) or display (false) graphical object name in the object list    ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- set the priority for receiving the event of a mouse click in the chart    ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- successful execution    return(true);   } //+------------------------------------------------------------------+ //| Move the anchor point                                            | //+------------------------------------------------------------------+ bool TextMove(const long   chart_ID=0,  // chart's ID               const string name="Text", // object name               datetime     time=0,      // anchor point time coordinate               double       price=0)     // anchor point price coordinate   { //--- if point position is not set, move it to the current bar having Bid price    if(!time)       time=TimeCurrent();    if(!price)       price=SymbolInfoDouble(Symbol(),SYMBOL_BID); //--- reset the error value    ResetLastError(); //--- move the anchor point    if(!ObjectMove(chart_ID,name,0,time,price))      {       Print(__FUNCTION__,             ": failed to move the anchor point! Error code = ",GetLastError());       return(false);      } //--- successful execution    return(true);   } //+------------------------------------------------------------------+ //| Change the object text                                           | //+------------------------------------------------------------------+ bool TextChange(const long   chart_ID=0,  // chart's ID                 const string name="Text", // object name                 const string text="Text") // text   { //--- reset the error value    ResetLastError(); //--- change object text    if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))      {       Print(__FUNCTION__,             ": failed to change the text! Error code = ",GetLastError());       return(false);      } //--- successful execution    return(true);   } //+------------------------------------------------------------------+ //| Delete Text object                                               | //+------------------------------------------------------------------+ bool TextDelete(const long   chart_ID=0,  // chart's ID                 const string name="Text") // object name   { //--- reset the error value    ResetLastError(); //--- delete the object    if(!ObjectDelete(chart_ID,name))      {       Print(__FUNCTION__,             ": failed to delete \"Text\" object! Error code = ",GetLastError());       return(false);      } //--- successful execution    return(true);   } //+------------------------------------------------------------------+ //| Check anchor point values and set default values                 | //| for empty ones                                                   | //+------------------------------------------------------------------+ void ChangeTextEmptyPoint(datetime &time,double &price)   { //--- if the point's time is not set, it will be on the current bar    if(!time)       time=TimeCurrent(); //--- if the point's price is not set, it will have Bid value    if(!price)       price=SymbolInfoDouble(Symbol(),SYMBOL_BID);   } //+------------------------------------------------------------------+ //| Script program start function                                    | //+------------------------------------------------------------------+ void OnStart()   {    datetime date[]; // array for storing dates of visible bars    double   low[];  // array for storing Low prices of visible bars    double   high[]; // array for storing High prices of visible bars //--- number of visible bars in the chart window    int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS); //--- memory allocation    ArrayResize(date,bars);    ArrayResize(low,bars);    ArrayResize(high,bars); //--- fill the array of dates    ResetLastError();    if(CopyTime(Symbol(),Period(),0,bars,date)==-1)      {       Print("Failed to copy time values! Error code = ",GetLastError());       return;      } //--- fill the array of Low prices    if(CopyLow(Symbol(),Period(),0,bars,low)==-1)      {       Print("Failed to copy the values of Low prices! Error code = ",GetLastError());       return;      } //--- fill the array of High prices    if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)      {       Print("Failed to copy the values of High prices! Error code = ",GetLastError());       return;      } //--- define how often texts are to be displayed    int scale=(int)ChartGetInteger(0,CHART_SCALE); //--- define the step    int step=1;    switch(scale)      {       case 0:          step=12;          break;       case 1:          step=6;          break;       case 2:          step=4;          break;       case 3:          step=2;          break;      } //--- create texts for High and Low bars' values (with gaps)    for(int i=0;i