181 lines
13 KiB
MQL5
181 lines
13 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| CtrlPanelComment.mqh |
|
|
//| Copyright 2021, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
|
|
#ifndef CTRL_PANEL_COMMENT_MQH
|
|
#define CTRL_PANEL_COMMENT_MQH
|
|
|
|
|
|
/*
|
|
Параметры доступные для настройки панели
|
|
bool auto_colors - авто цвета
|
|
bool graph_comment - панель в виде текстовых коментариев или в виде панели
|
|
|
|
-- размеры шрифта
|
|
string font
|
|
int font_size
|
|
bool font_bold
|
|
double font_interval
|
|
|
|
|
|
-- Цвета
|
|
color color_back
|
|
color color_border
|
|
color color_caption
|
|
color color_text
|
|
color color_buy
|
|
color color_sell
|
|
color color_err
|
|
int opacity
|
|
|
|
*/
|
|
|
|
|
|
// Значения по умолчанию
|
|
//--- custom colors
|
|
#define CTRL_PANEL_COLOR_BACK clrBlack
|
|
#define CTRL_PANEL_COLOR_BORDER clrDimGray
|
|
#define CTRL_PANEL_COLOR_CAPTION clrDodgerBlue
|
|
#define CTRL_PANEL_COLOR_TEXT clrLightGray
|
|
#define CTRL_PANEL_COLOR_BUY clrLimeGreen
|
|
#define CTRL_PANEL_COLOR_SELL clrOrangeRed
|
|
|
|
#define CTRL_PANEL_COLOR_ERR clrRed
|
|
|
|
//--- input parameters
|
|
#define CTRL_PANEL_AUTO_COLORS false //Auto Colors
|
|
#define CTRL_PANEL_OPACITY 200 // Прозрачность комментариев (0-255)
|
|
#define CTRL_PANEL_GRAPH_COMMENT true // Графические/текстовые комментарии
|
|
|
|
// Параметры шрифта по умолчанию
|
|
#define CTRL_PANEL_FONT "Lucida Console"
|
|
#define CTRL_PANEL_FONT_SIZE 12
|
|
#define CTRL_PANEL_FONT_BOLD false
|
|
#define CTRL_PANEL_FONT_INTERVAL 1.2
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CCtrlPanelComment: public CCtrlPanelLevels
|
|
{
|
|
public:
|
|
CCtrlPanelComment() {};
|
|
CCtrlPanelComment(const string param);
|
|
|
|
//--- Инициализация/деинициализация
|
|
virtual bool OnInitEvent(void);
|
|
virtual void OnDeinitEvent(const int reason);
|
|
|
|
//--- Обработчик тиков
|
|
virtual void DrawPanelInfo();
|
|
|
|
//--- Обработчик события графика
|
|
virtual void OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam);
|
|
|
|
|
|
virtual void CreatePanelItems()=0;
|
|
|
|
protected:
|
|
bool CreatePanel();
|
|
|
|
protected:
|
|
CComment _panel;
|
|
color _color_caption;
|
|
color _color_text;
|
|
color _color_buy;
|
|
color _color_sell;
|
|
color _color_err;
|
|
|
|
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
CCtrlPanelComment::CCtrlPanelComment(const string param):CCtrlPanelLevels(param)
|
|
{
|
|
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CCtrlPanelComment::OnInitEvent(void)
|
|
{
|
|
if(!CCtrlPanelLevels::OnInitEvent())
|
|
return false;
|
|
|
|
if(!CreatePanel())
|
|
return false;
|
|
|
|
_color_caption=GetParamColor("color_caption",CTRL_PANEL_COLOR_CAPTION);
|
|
_color_text=GetParamColor("color_text",CTRL_PANEL_COLOR_TEXT);
|
|
_color_buy=GetParamColor("color_buy",CTRL_PANEL_COLOR_BUY);
|
|
_color_sell=GetParamColor("color_sell",CTRL_PANEL_COLOR_SELL);
|
|
_color_err=GetParamColor("color_err",CTRL_PANEL_COLOR_ERR);
|
|
|
|
CreatePanelItems();
|
|
|
|
if(kernel_account::is_testing() && kernel_account::is_visual_mode())
|
|
_panel.SetText(_panel.GetList().Total(),CTRL_PANEL_WARNING_SLOW_TESTING,_color_err);
|
|
|
|
return true;
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CCtrlPanelComment::OnDeinitEvent(const int reason)
|
|
{
|
|
CCtrlPanelLevels::OnDeinitEvent(reason);
|
|
|
|
_panel.Destroy();
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CCtrlPanelComment::OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
|
|
{
|
|
_panel.OnChartEvent(id,lparam,dparam,sparam);
|
|
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
bool CCtrlPanelComment::CreatePanel(void)
|
|
{
|
|
|
|
//--- panel position
|
|
int y=30;
|
|
if(ChartGetInteger(0,CHART_SHOW_ONE_CLICK))
|
|
y=120;
|
|
//--- panel name
|
|
string name="ctrl_panel_"+VER;
|
|
_panel.Create(name,20,y);
|
|
//--- panel style
|
|
_panel.SetAutoColors(GetParamBool("auto_colors",CTRL_PANEL_AUTO_COLORS));
|
|
_panel.SetColor(GetParamColor("color_border",CTRL_PANEL_COLOR_BORDER), GetParamColor("color_back",CTRL_PANEL_COLOR_BACK),(uchar)GetParamInt("opacity", CTRL_PANEL_OPACITY));
|
|
_panel.SetFont(GetParamString("font",CTRL_PANEL_FONT),GetParamInt("font_size",CTRL_PANEL_FONT_SIZE),GetParamBool("font_bold",CTRL_PANEL_FONT_BOLD),GetParamDouble("font_interval",CTRL_PANEL_FONT_INTERVAL));
|
|
_panel.SetGraphMode(GetParamBool("graph_comment",CTRL_PANEL_GRAPH_COMMENT));
|
|
|
|
return true;
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
void CCtrlPanelComment::DrawPanelInfo()
|
|
{
|
|
DrawGridLevel(_sell_grid_levels,_sell_lvl_no_loss,_sell_lvl_stop, _sell_lvl_first_order, _sell_lvl_no_first_order);
|
|
DrawGridLevel(_buy_grid_levels,_buy_lvl_no_loss,_buy_lvl_stop, _buy_lvl_first_order, _buy_lvl_no_first_order);
|
|
|
|
_panel.Show();
|
|
_readyForUpdate=false;
|
|
}
|
|
|
|
#endif
|
|
//+------------------------------------------------------------------+
|