MultiSymbolSignals/Include/MultiSymbol/SetDeleteObjects.mqh

148 lines
13 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:10:44 +02:00
<EFBFBD><EFBFBD>//--- !2O7L A >A=>2=K< D09;>< 8=48:0B>@0
//#include "..\MultiSymbolPriceDivergence.mq5"
//--- >4:;NG05< A2>8 181;8>B5:8
#include "Checks.mqh"
#include "SettingChart.mqh"
//+------------------------------------------------------------------+
//| #AB0=>28BL :0=2C |
//+------------------------------------------------------------------+
void SetCanvas()
{
//--- A;8 :0=2K =5B, CAB0=>28< 5Q
if(ObjectFind(0,canvas_name)<0)
{
//--- !>74048< :0=2C
canvas.CreateBitmapLabel(0,number_window,canvas_name,0,0,chart_width,chart_height,clr_format);
//--- !45;05< :0=2C ?>;=>ABLN ?@>7@0G=>9
canvas.Erase(ColorToARGB(canvas_bg_color,0));
//--- 1=>28< :0=2C
canvas.Update();
}
}
//+------------------------------------------------------------------+
//| 7<5=O5B @07<5@ :0=2K |
//+------------------------------------------------------------------+
void ResizeCanvas()
{
//--- A;8 :0=20 5ABL 2 ?>4>:=5 8=48:0B>@0, CAB0=>28< =>2K9 @07<5@
if(ObjectFind(0,canvas_name)==number_window)
canvas.Resize(chart_width,chart_height);
}
//+------------------------------------------------------------------+
//| K2>48B A>>1I5=85 2 :0=25 |
//+------------------------------------------------------------------+
void ShowCanvasMessage(string message_text)
{
SetSubwindowProperties();
//--- A;8 :0=20 5ABL =0 3@0D8:5
if(ObjectFind(0,canvas_name)==number_window)
{
//--- B>1@078< A>>1I5=85,
// 5A;8 ?5@540=0 =5 ?CAB0O AB@>:0 8 :>>@48=0BK ?>;CG5=K
if(message_text!="" && chart_wcenter>0 && chart_vcenter>0)
{
canvas.Erase(ColorToARGB(canvas_bg_color,canvas_opacity));
canvas.TextOut(chart_wcenter,chart_vcenter,message_text,ColorToARGB(clrRed),TA_CENTER|TA_VCENTER);
canvas.Update();
}
}
}
//+------------------------------------------------------------------+
//| #AB0=02;8205B 25@B8:0;L=CN ;8=8N 4;O =0G0;L=>9 B>G:8 F5= |
//+------------------------------------------------------------------+
void SetLineStartPricesDivergence()
{
//--- A;8 25@B8:0;L=>9 ;8=88 =5B, CAB0=>28< 5Q
if(StartPriceDivergence==VERT_LINE &&
ObjectFind(0,start_price_divergence)<0)
//--- #AB0=>28< 25@B8:0;L=CN ;8=8N =0 8AB8==>< 10@5
CreateVerticalLines(0,0,TimeCurrent()+PeriodSeconds(),start_price_divergence,
2,STYLE_SOLID,clrGreenYellow,true,true,false,"","\n");
//--- A;8 =5 2 @568<5 25@B8:0;L=>9 ;8=88
if(StartPriceDivergence!=VERT_LINE)
DeleteObjectByName(start_price_divergence);
}
//+------------------------------------------------------------------+
//| #40;O5B :0=2C |
//+------------------------------------------------------------------+
void DeleteCanvas()
{
//--- #40;8< :0=2C, 5A;8 >=0 5ABL
if(ObjectFind(0,canvas_name)==0)
{
//--- 5@54 C40;5=85< ?@>87254Q< MDD5:B 8AG570=8O
for(int i=canvas_opacity; i>0; i-=5)
{
canvas.Erase(ColorToARGB(canvas_bg_color,(uchar)i));
canvas.Update();
}
//--- #40;5=85 :0=2K
canvas.Destroy();
}
}
//+------------------------------------------------------------------+
//| #40;O5B 25@B8:0;L=K5 ;8=88 =0G0;0 A5@89 |
//+------------------------------------------------------------------+
void DeleteVerticalLines()
{
string object_name =""; // <O >1J5:B0
int total_vert_lines =0; // 1I55 :>;8G5AB2> ;8=89
//--- >;CG8< :>;8G5AB2> 25@B8:0;L=KE ;8=89
total_vert_lines=ObjectsTotal(0,0,OBJ_VLINE);
//--- #40;8< B>;L:> B5, :>B>@K5 1K;8 CAB0=>2;5=K MB>9 ?@>3@0<<>9
for(int i=total_vert_lines-1; i>=0; i--)
{
//--- >;CG8< 8<O >1J5:B0
for(int j=0; j<5; j++)
if((object_name=ObjectName(0,i))!="")
break;
//--- A;8 2 8<5=8 5ABL ?@5D8:A 8=48:0B>@0, C40;8< >1J5:B
if(StringFind(object_name,prefix,0)>-1)
DeleteObjectByName(object_name);
}
}
//+------------------------------------------------------------------+
//| #40;O5B >1J5:B ?> 8<5=8 |
//+------------------------------------------------------------------+
void DeleteObjectByName(string Name)
{
//--- A;8 5ABL B0:>9 >1J5:B
if(ObjectFind(0,Name)>=0)
{
//--- A;8 1K;0 >H81:0 ?@8 C40;5=88, A>>1I8< >1 MB><
if(!ObjectDelete(0,Name))
Print("H81:0 ("+IntegerToString(GetLastError())+") ?@8 C40;5=88 >1J5:B0!");
}
}
//+------------------------------------------------------------------+
//| !>740=85 25@B8:0;L=>9 ;8=88 |
//+------------------------------------------------------------------+
void CreateVerticalLines(long chart_id, // id 3@0D8:0
int number_win, // =><5@ >:=0
datetime time, // 2@5<O
string name_line, // 8<O >1J5:B0
int width_line, // B>;I8=0 ;8=88
ENUM_LINE_STYLE style_line, // AB8;L ;8=88
color color_line, // F25B ;8=88
bool selected, // 2K45;5==K9 >1J5:B
bool selectable, // =5;L7O 2K45;8BL >1J5:B, 5A;8 FALSE
bool back, // CAB0=>28BL D>=>2K<
string description_text, // B5:AB >?8A0=8O
string tooltip) // =5B 2A?;K20NI59 ?>4A:07:8, 5A;8 "\n"
{
//--- A;8 >1J5:B CA?5H=> A>740=...
if(ObjectCreate(chart_id,name_line,OBJ_VLINE,number_win,time,0))
{
// ...CAB0=>28< 5<C A2>9AB20
ObjectSetInteger(chart_id,name_line,OBJPROP_TIME,time);
ObjectSetInteger(chart_id,name_line,OBJPROP_STYLE,style_line);
ObjectSetInteger(chart_id,name_line,OBJPROP_WIDTH,width_line);
ObjectSetInteger(chart_id,name_line,OBJPROP_COLOR,color_line);
ObjectSetInteger(chart_id,name_line,OBJPROP_SELECTABLE,selectable);
ObjectSetInteger(chart_id,name_line,OBJPROP_SELECTED,selected);
ObjectSetInteger(chart_id,name_line,OBJPROP_BACK,back);
ObjectSetString(chart_id,name_line,OBJPROP_TEXT,description_text);
ObjectSetString(chart_id,name_line,OBJPROP_TOOLTIP,tooltip);
}
}
//+------------------------------------------------------------------+