UTE/Strategy/Message.mqh

197 lines
18 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:34:43 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| Message.mqh |
//| Copyright 2016, Vasiliy Sokolov, St-Petersburg, Russia |
//| https://www.mql5.com/ru/users/c-4 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Vasiliy Sokolov."
#property link "https://www.mql5.com/ru/users/c-4"
#include <Object.mqh>
#include <Arrays\ArrayObj.mqh>
#define UNKNOW_SOURCE "unknown" // >1>7=0G5=85 =5>?@545;5==>3> 8AB>G=8:0 A>>1I5=89
//+------------------------------------------------------------------+
//| "8? A>>1I5=8O |
//+------------------------------------------------------------------+
enum ENUM_MESSAGE_TYPE
{
MESSAGE_INFO, // =D>@<0F8>==>5 A>>1I5=85
MESSAGE_WARNING, // @54C?@5640NI55 A>>1I5=85
MESSAGE_ERROR // >7=8:=>25=85 >H81:8
};
//+------------------------------------------------------------------+
//| !>>1I5=85, ?5@540205<>5 :;0AAC ;>38@>20=8O |
//+------------------------------------------------------------------+
class CMessage : public CObject
{
private:
ENUM_MESSAGE_TYPE m_type; // "8? A>>1I5=8O
string m_source; // AB>G=8: A>>1I5=8O
string m_text; // "5:AB A>>1I5=8O
int m_system_error_id; // !>45@68B 845=B8D8:0B>@ !!" >H81:8.
int m_retcode; // !>45@68B :>4 2>7@0B0 B>@3>2>3> A5@25@0.
datetime m_server_time; // @5<O B>@3>2>3> A5@25@0, 2 <><5=B A>740=8O A>>1I5=8O
datetime m_local_time; // >:0;L=>5 2@5<O, 2 <><5=B A>740=8O A>>1I5=8O
void Init(ENUM_MESSAGE_TYPE type,string source,string text);
public:
CMessage(void);
CMessage(ENUM_MESSAGE_TYPE type);
CMessage(ENUM_MESSAGE_TYPE type,string source,string text);
void Type(ENUM_MESSAGE_TYPE type);
ENUM_MESSAGE_TYPE Type(void);
void Source(string source);
string Source(void);
void Text(string text);
string Text(void);
datetime TimeServer(void);
datetime TimeLocal();
void SystemErrorID(int error);
int SystemErrorID();
void Retcode(int retcode);
int Retcode(void);
string ToConsoleType(void);
string ToCSVType(void);
};
//+------------------------------------------------------------------+
//| >-C<>;G0=8N, 2@5<O A>740=8O 70?>;=OBL =5 =C6=>, >=> |
//| 02B><0B8G5A:8 70?>;=O5BAO 2> 2@5<O A>740=8O >1J5:B0. |
//+------------------------------------------------------------------+
CMessage::CMessage(void)
{
Init(MESSAGE_INFO,UNKNOW_SOURCE,"");
}
//+------------------------------------------------------------------+
//| !>7405B A>>1I5=85 A ?@54CAB0=>2;5==K< B8?><, 8AB>G=8:>< A>>1I5=8O|
//| 8 B5:AB><. |
//+------------------------------------------------------------------+
CMessage::CMessage(ENUM_MESSAGE_TYPE type,string source,string text)
{
Init(type,source,text);
}
//+------------------------------------------------------------------+
//| !>7405B A>>1I5=85 A ?@54CAB0=>2;5==K< B8?><. |
//+------------------------------------------------------------------+
CMessage::CMessage(ENUM_MESSAGE_TYPE type)
{
Init(type,UNKNOW_SOURCE,"");
}
//+------------------------------------------------------------------+
//| K?>;=O5B @>;L 107>2>3> :>=AB@C:B>@0. |
//+------------------------------------------------------------------+
void CMessage::Init(ENUM_MESSAGE_TYPE type,string source,string text)
{
m_server_time= TimeCurrent();
m_local_time = TimeLocal();
m_type=type;
m_source=source;
m_text=text;
m_system_error_id=GetLastError();
}
//+------------------------------------------------------------------+
//| >72@0I05B B8? A>>1I5=8O. |
//+------------------------------------------------------------------+
ENUM_MESSAGE_TYPE CMessage::Type(void)
{
return m_type;
}
//+------------------------------------------------------------------+
//| #AB0=02;8205B 8AB>G=8: A>>1I5=8O. |
//+------------------------------------------------------------------+
void CMessage::Source(string source)
{
m_source=source;
}
//+------------------------------------------------------------------+
//| >72@0I05B 8AB>G=8: A>>1I5=8O. |
//+------------------------------------------------------------------+
string CMessage::Source(void)
{
return m_source;
}
//+------------------------------------------------------------------+
//| #AB0=02;8205B A>45@68<>5 A>>1I5=8O. |
//+------------------------------------------------------------------+
void CMessage::Text(string text)
{
m_text=text;
}
//+------------------------------------------------------------------+
//| >72@0I05B A>45@68<>5 A>>1I5=8O. |
//+------------------------------------------------------------------+
string CMessage::Text(void)
{
return m_text;
}
//+------------------------------------------------------------------+
//| >72@0I05B 2@5<O A5@25@0 2 <><5=B A>740=8O A>>1I5=8O. |
//+------------------------------------------------------------------+
datetime CMessage::TimeServer(void)
{
return m_server_time;
}
//+------------------------------------------------------------------+
//| >72@0I05B ;>:0;L=>5 2@5<O 2 <><5=B A>740=8O A>>1I5=8O. |
//+------------------------------------------------------------------+
datetime CMessage::TimeLocal(void)
{
return m_local_time;
}
//+------------------------------------------------------------------+
//| >72@0I05B AB@>:C A>>1I5=8O 4;O 2K2>40 2 >:=> B5@<8=0;0. |
//+------------------------------------------------------------------+
string CMessage::ToConsoleType(void)
{
string dt= ";";
string t = EnumToString(m_type);
t=StringSubstr(t,8);
string text=t+dt+m_source+dt+m_text+dt+
TimeToString(m_server_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
return text;
}
//+------------------------------------------------------------------+
//| >72@0I05B AB@>:C A>>1I5=8O 4;O 2K2>40 2 D09; ;>38@>20=8O. |
//+------------------------------------------------------------------+
string CMessage::ToCSVType(void)
{
string d="\t"; // 0745;8B5;L :>;>=>: A>>1I5=8O
string msg=TimeToString(m_server_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+d+EnumToString(m_type)+d+m_source+d+m_text;
return msg;
}
//+------------------------------------------------------------------+
//| >72@0I05B :>4 A>E@0=5==>9 >H81:8. |
//+------------------------------------------------------------------+
int CMessage::SystemErrorID(void)
{
return m_system_error_id;
}
//+------------------------------------------------------------------+
//| #AB0=02;8205B :>4 >H81:8, A>?CBAB2CNI89 40==><C A>>1I5=8N. >4 |
//| >H81:8 <>65B 1KBL A8AB5<=K< 8;8 ?>;L7>20B5;LA:8<. |
//| : #AB0=>2:0 ?>A;54=59 >H81:8 ?@>8AE>48B 02B><0B8G5A:8, |
//| 2 <><5=B A>740=8O A>>1I5=8O. >MB><C 2K7K20BL 40==K9 <5B>4 |
//| B@51C5BAO ;8HL 2 >A>1KE A;CG0OE. |
//+------------------------------------------------------------------+
void CMessage::SystemErrorID(int error)
{
m_system_error_id=error;
}
//+------------------------------------------------------------------+
//| #AB0=02;8205B :>4 >B25B0 B>@3>2>3> A5@25@0.  >B;8G88 >B |
//| SystemErrorID B@51C5B O2=>9 CAB0=>2:8, B.: CMessage =5 8<55B |
//| 4>ABC?0 : >B25BC B>@3>2>3> A5@25@0. |
//+------------------------------------------------------------------+
void CMessage::Retcode(int retcode)
{
m_retcode=retcode;
}
//+------------------------------------------------------------------+
//| >72@0I05B CAB0=>2;5==K9 ?>;L7>20B5;5< :>4 >B25B0 B>@3>2>3> |
//| A5@25@0. -B> ?>;5 A;54C5B 0=0;878@>20BL B>;L:> 2 B>< A;CG05, |
//| 5A;8 ?>;CG05<>5 A>>1I5=85 A2O70=> A B>@3>2K<8 459AB28O<8. |
//+------------------------------------------------------------------+
int CMessage::Retcode(void)
{
return m_retcode;
}
//+------------------------------------------------------------------+