//+------------------------------------------------------------------+ //| info_lib.mqh | //| komposter | //| mailto:komposterius@mail.ru | //+------------------------------------------------------------------+ static double font_size = 10, head_font_size = 12; static string font = "Arial", trade_symbol = "UnknownSymbol", trade_period_str = "UnknownPeriod"; extern string ExpertName = "NoNameExpert"; extern string Info_Properties = "--------Info-Properties--------"; extern color Standart_Color = White; extern color Warning_Color = Red; extern color Price_Up_Color = C'0,111,0'; extern color Price_Down_Color = C'140,0,0'; ///////////////////////////////////////////////////////////////////////////////// /**/ void _init_info_lib ( string TradeSymbol, int TradePeriod ) ///////////////////////////////////////////////////////////////////////////////// // "проектирование" имени лог-файла, // создание обьектов для вывода информации, запись в лог информации об инициализации // необходимо вставить в init() ф-цию эксперта ///////////////////////////////////////////////////////////////////////////////// { if ( TradeSymbol == "" ) { trade_symbol = "UnknownSymbol"; } else { trade_symbol = TradeSymbol; } switch ( TradePeriod ) { case PERIOD_MN1: trade_period_str = "Monthly"; break; case PERIOD_W1: trade_period_str = "Weekly"; break; case PERIOD_D1: trade_period_str = "Daily"; break; case PERIOD_H4: trade_period_str = "H4"; break; case PERIOD_H1: trade_period_str = "H1"; break; case PERIOD_M30: trade_period_str = "M30"; break; case PERIOD_M15: trade_period_str = "M15"; break; case PERIOD_M5: trade_period_str = "M5"; break; case PERIOD_M1: trade_period_str = "M1"; break; default: trade_period_str = "UnknownPeriod"; break; } _LabelCreate ( "ExpertLog_00", 0, 16 ); _LabelCreate ( "ExpertLog_01", 0, 32 ); _LabelCreate ( "ExpertLog_02", 0, 48 ); _LabelCreate ( "ExpertLog_03", 0, 64 ); _LabelCreate ( "ExpertLog_04", 0, 80 ); _LabelCreate ( "ExpertLog_10", 350, 16 ); _LabelCreate ( "ExpertLog_11", 350, 32 ); _LabelCreate ( "ExpertLog_12", 350, 48 ); _LabelCreate ( "ExpertLog_13", 350, 64 ); _LabelCreate ( "ExpertLog_14", 350, 80 ); _FileWrite ( "\n" + TimeToStr( LocalTime(), TIME_SECONDS ) + " - - - " + "++---------Initialization---------++" ); _info ( 1, "Сервер " + ServerAddress(), 0 ); if ( IsDemo() ) { _info ( 2, "Демо-счёт №" + AccountNumber(), 0 ); } else { _info ( 2, "РЕАЛЬНЫЙ СЧЁТ №" + AccountNumber(), 1 ); } if ( IsTradeAllowed() ) { _info ( 3, "ТОРГОВЛЯ РАЗРЕШЕНА!!!", 1 ); } else { _info ( 3, "Торговля запрещена", 0 ); } _info ( 4, "Эксперт успешно загружен", 0 ); _FileWrite ( TimeToStr( LocalTime(), TIME_SECONDS ) + " - - - " + "++--------------------------------++" ); Sleep(1000); } ///////////////////////////////////////////////////////////////////////////////// /**/ void _start_info_lib ( string TradeSymbol, int TradePeriod ) ///////////////////////////////////////////////////////////////////////////////// // "проектирование" имени лог-файла, // необходимо вставить в start() ф-цию эксперта, если он торгует по нескольким инструментам и/или ТФ ///////////////////////////////////////////////////////////////////////////////// { if ( TradeSymbol == "" ) { trade_symbol = "UnknownSymbol"; } else { trade_symbol = TradeSymbol; } switch ( TradePeriod ) { case PERIOD_MN1: trade_period_str = "Monthly"; break; case PERIOD_W1: trade_period_str = "Weekly"; break; case PERIOD_D1: trade_period_str = "Daily"; break; case PERIOD_H4: trade_period_str = "H4"; break; case PERIOD_H1: trade_period_str = "H1"; break; case PERIOD_M30: trade_period_str = "M30"; break; case PERIOD_M15: trade_period_str = "M15"; break; case PERIOD_M5: trade_period_str = "M5"; break; case PERIOD_M1: trade_period_str = "M1"; break; default: trade_period_str = "UnknownPeriod"; break; } } ///////////////////////////////////////////////////////////////////////////////// /**/ void deinit_info ( ) ///////////////////////////////////////////////////////////////////////////////// // очистка экрана после работы // необходимо вставить в deinit() ф-цию эксперта ///////////////////////////////////////////////////////////////////////////////// { ObjectDelete ( "ExpertLog_00" ); ObjectDelete ( "ExpertLog_01" ); ObjectDelete ( "ExpertLog_02" ); ObjectDelete ( "ExpertLog_03" ); ObjectDelete ( "ExpertLog_04" ); ObjectDelete ( "ExpertLog_10" ); ObjectDelete ( "ExpertLog_11" ); ObjectDelete ( "ExpertLog_12" ); ObjectDelete ( "ExpertLog_13" ); ObjectDelete ( "ExpertLog_14" ); } ///////////////////////////////////////////////////////////////////////////////// /**/ void _info ( int LogNumber, string text = "", int color_variant = 0, bool File_Log = true, bool MT_Log = false ) ///////////////////////////////////////////////////////////////////////////////// { // if ( IsTesting() ) { return(0); } string name; double _fontsize = font_size; switch ( LogNumber ) { case 2: name = "ExpertLog_02"; break; case 3: name = "ExpertLog_03"; break; case 4: name = "ExpertLog_04"; break; case 10: name = "ExpertLog_10"; _fontsize = head_font_size; break; case 11: name = "ExpertLog_11"; break; case 12: name = "ExpertLog_12"; break; case 13: name = "ExpertLog_13"; break; case 14: name = "ExpertLog_14"; break; default: name = "ExpertLog_01"; break; } color _color; switch ( color_variant ) { case 1: _color = Warning_Color; break; case 2: _color = Price_Up_Color; break; case 3: _color = Price_Down_Color; break; default: _color = Standart_Color; break; } ObjectSetText( name, text, _fontsize, font, _color); // вывод времени ObjectSetText( "ExpertLog_00", "Expert log ( " + TimeToStr( LocalTime(), TIME_SECONDS) + " )", head_font_size, font, _color); if ( text == "" ) { return(0); } if ( File_Log ) { _FileWrite ( TimeToStr( LocalTime(), TIME_SECONDS ) + " - - - " + text ); } if ( MT_Log ) { Print( text ); } } ///////////////////////////////////////////////////////////////////////////////// /**/ void clear_info () ///////////////////////////////////////////////////////////////////////////////// // ф-ция для очистки экрана от выведенных сообщений ///////////////////////////////////////////////////////////////////////////////// { _info ( 1, "" ); _info ( 2, "" ); _info ( 3, "" ); _info ( 4, "" ); _info ( 10, "" ); _info ( 11, "" ); _info ( 12, "" ); _info ( 13, "" ); _info ( 14, "" ); } ///////////////////////////////////////////////////////////////////////////////// /**/ void _LabelCreate ( string name, int x, int y, int corner = 0 ) ///////////////////////////////////////////////////////////////////////////////// // служебная ф-ция ///////////////////////////////////////////////////////////////////////////////// { ObjectCreate( name, OBJ_LABEL,0,0,0,0,0,0,0 ); ObjectSet( name, OBJPROP_CORNER, corner ); ObjectSet( name, OBJPROP_XDISTANCE, x ); ObjectSet( name, OBJPROP_YDISTANCE, y ); ObjectSetText( name, "", 10 ); } ///////////////////////////////////////////////////////////////////////////////// /**/ void _FileWrite ( string text ) ///////////////////////////////////////////////////////////////////////////////// // служебная ф-ция ///////////////////////////////////////////////////////////////////////////////// { string file_name = "logs\\" + ExpertName + "\\" + trade_symbol + "_" + trade_period_str + "\\" + TimeToStr ( LocalTime(), TIME_DATE ) + ".txt"; int file_handle = FileOpen ( file_name, FILE_READ | FILE_WRITE, " " ); FileSeek ( file_handle, 0, SEEK_END ); FileWrite ( file_handle, text); FileClose ( file_handle ); }