//+------------------------------------------------------------------+ //| SD_M_Swap.mq5 | //| Dina Paches | //| https://login.mql5.com/ru/users/dipach | //+------------------------------------------------------------------+ #property copyright "Dina Paches" #property link "https://login.mql5.com/ru/users/dipach" #property version "1.08" //--- #property script_show_inputs //--- #define CHART_ID (0) #define SUB_WINDOW (0) #define DIGITS (2) #define OBJ_NUMBER (3) #define CORRECTION_WIDTH (3) #define CORRECTION_LOCATION_NEXT_OBJ (11) #define LINE_NUMBER "Line: ",__LINE__,", " #define TEXT_SWAP_LONG "sw_long" #define TEXT_SWAP_SHORT "sw_short" #define TEXT_SYMB_DATE "sw_symb_date" //--- input bool i_delete_text_only = false; input color i_color_plus = clrGreen; input color i_color_minus = clrRed; input uchar i_font_size = 9; input ushort i_y = 5; //+------------------------------------------------------------------+ void OnStart() { //-------------------------------------------------------------------- string name_arr[OBJ_NUMBER]={TEXT_SWAP_LONG,TEXT_SWAP_SHORT,TEXT_SYMB_DATE}; //-------------------------------------------------------------------- for(int i=OBJ_NUMBER-1;i>=0;i--) {if(!ObDelete(CHART_ID,name_arr[i])){return;}} //-------------------------------------------------------------------- if(i_delete_text_only){return;} //-------------------------------------------------------------------- double swap_arr[2]={0,0}; //--- SwapGet(swap_arr[0],swap_arr[1]); //-------------------------------------------------------------------- string text_arr[OBJ_NUMBER]={"?","?","?"}; //--- TextObjCreate_1(text_arr[2]); //--- for(int i=OBJ_NUMBER-2;i>=0;i--) {TextObjCreate_0(text_arr[i],name_arr[i],swap_arr[i],DIGITS);} //-------------------------------------------------------------------- color text_clr_arr[OBJ_NUMBER]={clrNONE,clrNONE,clrNONE}; //--- for(int i=OBJ_NUMBER-2;i>=0;i--) {text_clr_arr[i]=(swap_arr[i]<0) ? i_color_minus : i_color_plus;} //--- text_clr_arr[2]=text_clr_arr[1]; //-------------------------------------------------------------------- int width=0; //--- if(!ChWidthInPixels(CHART_ID,width)){return;} //--- width/=CORRECTION_WIDTH; //-------------------------------------------------------------------- for(int i=0;i-1) { if(!ObjectDelete(chart_id,name)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } } return(true); } //+--------------------------------------------------------------------+ bool ObSetString(long chart_id, string name, ENUM_OBJECT_PROPERTY_STRING prop_id, string prop_value) { if(!ObjectSetString(chart_id,name,prop_id,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+--------------------------------------------------------------------+ bool ObSetIntegerInt(long chart_id, string name, ENUM_OBJECT_PROPERTY_INTEGER prop_id, int prop_value) { if(!ObjectSetInteger(chart_id,name,prop_id,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+------------------------------------------------------------------+ bool ObSetIntegerCorner(long chart_id, string name, ENUM_BASE_CORNER prop_value) { if(!ObjectSetInteger(chart_id,name,OBJPROP_CORNER,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+--------------------------------------------------------------------+ bool ObSetDouble(long chart_id, string name, ENUM_OBJECT_PROPERTY_DOUBLE prop_id, double prop_value) { if(!ObjectSetDouble(chart_id,name,prop_id,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+------------------------------------------------------------------+ bool ObSetIntegerAncorPoint(long chart_id, string name, ENUM_ANCHOR_POINT prop_value) { if(!ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+--------------------------------------------------------------------+ bool ObSetIntegerColor(long chart_id, string name, ENUM_OBJECT_PROPERTY_INTEGER prop_id, color prop_value) { if(!ObjectSetInteger(chart_id,name,prop_id,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ", GetLastError()); return(false); } return(true); } //+-------------------------------------------------------------------+ bool ObSetIntegerBool(long chart_id, string name, ENUM_OBJECT_PROPERTY_INTEGER prop_id, bool prop_value) { if(!ObjectSetInteger(chart_id,name,prop_id,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+-------------------------------------------------------------------+ bool ObSetIntegerLong(long chart_id, string name, ENUM_OBJECT_PROPERTY_INTEGER prop_id, long prop_value) { if(!ObjectSetInteger(chart_id,name,prop_id,prop_value)) { Print(LINE_NUMBER,__FUNCTION__,", Error Code = ",GetLastError()); return(false); } return(true); } //+------------------------------------------------------------------+ //| На основе Справочника по MQL5 | //+------------------------------------------------------------------+ bool LabelCreate(const long chart_id=0, // ID графика const string name="Label", // имя метки const int sub_window=0, // номер подокна const int x=0, // координата по оси X const int y=0, // координата по оси Y const string toolTip="\n", // текст всплывающей подсказки const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // угол графика для привязки const string text="Label", // текст const string font="Arial", // шрифт const int font_size=10, // размер шрифта const color clr=clrRed, // цвет const double angle=0.0, // наклон текста const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER, // способ привязки const bool back=false, // на заднем плане const bool selection=false, // выделить для перемещений const bool hidden=true, // скрыт в списке объектов const long z_order=0, // приоритет на нажатие мышью const int timeFrames=OBJ_ALL_PERIODS)//отображение объекта на различных периодах { if(!ObjectCreate(chart_id,name,OBJ_LABEL,sub_window,0,0)) { Print(LINE_NUMBER,__FUNCTION__, ": failed to create text label! Error code = ",GetLastError()); return(false); } //--- ObSetString(chart_id,name,OBJPROP_TOOLTIP,toolTip); ObSetIntegerInt(chart_id,name,OBJPROP_XDISTANCE,x); ObSetIntegerInt(chart_id,name,OBJPROP_YDISTANCE,y); ObSetIntegerCorner(chart_id,name,corner); ObSetString(chart_id,name,OBJPROP_TEXT,text); ObSetString(chart_id,name,OBJPROP_FONT,font); ObSetIntegerInt(chart_id,name,OBJPROP_FONTSIZE,font_size); ObSetDouble(chart_id,name,OBJPROP_ANGLE,angle); ObSetIntegerAncorPoint(chart_id,name,anchor); ObSetIntegerColor(chart_id,name,OBJPROP_COLOR,clr); ObSetIntegerBool(chart_id,name,OBJPROP_BACK,back); ObSetIntegerBool(chart_id,name,OBJPROP_SELECTABLE,selection); ObSetIntegerBool(chart_id,name,OBJPROP_SELECTED,selection); ObSetIntegerBool(chart_id,name,OBJPROP_HIDDEN,hidden); ObSetIntegerLong(chart_id,name,OBJPROP_ZORDER,z_order); ObSetIntegerInt(chart_id,name,OBJPROP_TIMEFRAMES,timeFrames); //--- return(true); } //+------------------------------------------------------------------+