//============================================================================================= MQL5 === // LibreCLOP v1.005 MQL5 // Главный модуль обработки событий // Librecoin(c)2014-2017 //============================================================================================= MQL5 === // REVIEWS //------------------------------------------------------------------------------------------------------ // Программная система (тестовая для одного инструмента) советник+индикаторы (информационный и сигнальный). // 1. Советник LibreCLOP Closer-Opener: // 1.1. Генерирует хендл индикатора LibreInfoPDO и размещает индикатор на чарте. // 1.1. Генерирует хендл индикатора ADXWZ и размещает индикатор на чарте. // 1.2. По сигналам информационного индикатора LibreInfoPDO открывает и закрывает сделки. // 1.3. Сигналы открытия-закрытия формируются через глобальные переменые. // 2. Индикатор LibreInfoPDO: // 2.1. Получает хендл индикатора ADXWZ. // 2.2. Использует индикатор ADXWZ для формирования сигналов на покупку-продажу. // 2.3. Формирует сигналы на открытие-закрытие сделок для управляющего советника LibreCLOP. // В дальнейшем настройки ADXWZ для покупки и продажи будут разнесены в два индикатора (или более). //============================================================================================= MQL5 === // IDEAS //------------------------------------------------------------------------------------------------------ // 12.11.2017 Идея: Изначально использовать настройки индикаторов по умолчанию. - в работе //============================================================================================= MQL5 === // PROPERTY //------------------------------------------------------------------------------------------------------ #define ver "1.005" #property copyright "Librecoin(c)2014-2017" #property link "https://www.mql5.com/ru/users/kirillovyv" #property strict #property description "**************************************************" #property description " Positions closer-opener v"+ver+" (MQL5)" #property description " Close and Open expert for LibreInfoPDO binary system" #property description " From Russia with Love! :-)" #property description " https://www.mql5.com/ru/users/kirillovyv" #property description "**************************************************" #property version ver const string vers = "LibreCLOP v"+ver; //Version #property tester_indicator "Projects\\Indicatores\\LIP\\Main\\LIP_v01.005\\LibreInfoPDO v1.005.ex5" #property tester_indicator "Projects\\Indicatores\\MQ5\\ADX\\adxw_zat.ex5" //============================================================================================= MQL5 === // INCLUDE //------------------------------------------------------------------------------------------------------ //----- Определения переменных и структур #include "Include\LCL_Def_5_v1.005.mqh" //Определения переменных и структур MQL5 //----- Интерфейс настроек #include "Include\LCL_Int_5_v1.005.mqh" //Интерфейс настроек MQL4/5 //----- Главный алгоритм #include "Include\LCL_Man_5_v1.005.mqh" //Главный алгоритм MQL5 //----- Прочее (функции, расчеты, графика) #include "Include\LCL_Fun1_5_v1.005.mqh" //Основные функции алгортма MQL5(Traling,Open-Close,MA,CalcSR) #include "Include\LCL_Fun2_5_v1.005.mqh" //Основные технические расчеты MQL5 (Calc...) #include "Include\LCL_Fun3_5_v1.005.mqh" //Графика, вывод на чарт и преобразования вывода MQL5 // //============================================================================================= MQL5 === // OnInit() //------------------------------------------------------------------------------------------------------ int OnInit(){ //----- return((int)On_Init()); //return(INIT_SUCCEEDED); }//OnInit() // //void OnInit(){ //}//OnInit() // //============================================================================================= MQL5 === // OnTick() //------------------------------------------------------------------------------------------------------ void OnTick(){ //----- On_Tick(); //----- return; }//OnTick() // ////============================================================================================= MQL5 === //// OnCalculate() ////------------------------------------------------------------------------------------------------------ //int OnCalculate(const int rates_total, // const int prev_calculated, // const datetime &time[], // const double &open[], // const double &high[], // const double &low[], // const double &close[], // const long &tick_volume[], // const long &volume[], // const int &spread[]){ ////----- // On_Tick(); ////----- // return(rates_total); //}//OnCalculate() // //============================================================================================= MQL5 === // OnTimer() //------------------------------------------------------------------------------------------------------ void OnTimer(){ //----- On_Timer(); //----- return; }//OnTimer() // //============================================================================================= MQL5 === // OnDeinit() //------------------------------------------------------------------------------------------------------ void OnDeinit(const int reason){ //----- Определяем имя программы string iProgramName=MQLInfoString(MQL_PROGRAM_NAME); //----- Определяем тип программы string ProgramType="Expert"; {switch(MQLInfoInteger(MQL_PROGRAM_TYPE)) { case PROGRAM_SCRIPT: { ProgramType="Script"; break; } case PROGRAM_EXPERT: { ProgramType="Expert"; break; } case PROGRAM_INDICATOR: { ProgramType="Indicator"; break; } default: { ProgramType="Expert"; } }}//switch(MQLInfoInteger(MQL_PROGRAM_TYPE)) //----- Анализируем и выводим информацию о причине завершения работы string ReasonTxt="REASON"; {switch(reason) { case REASON_PROGRAM: ReasonTxt="[REASON_PROGRAM] "+ProgramType+" terminated its operation by calling the ExpertRemove() function.";break; case REASON_REMOVE: ReasonTxt="[REASON_REMOVE] "+ProgramType+" has been removed from chart.";break; case REASON_RECOMPILE: ReasonTxt="[REASON_RECOMPILE] "+ProgramType+" has been recompiled.";break; case REASON_CHARTCHANGE: ReasonTxt="[REASON_CHARTCHANGE] Symbol or chart period has been changed.";break; case REASON_CHARTCLOSE: ReasonTxt="[REASON_CHARTCLOSE] Chart has been closed.";break; case REASON_PARAMETERS: ReasonTxt="[REASON_PARAMETERS] Input parameters have been changed by a user.";break; case REASON_ACCOUNT: ReasonTxt="[REASON_ACCOUNT] Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings.";break; case REASON_TEMPLATE: ReasonTxt="[REASON_TEMPLATE] New template was applied to chart.";break; case REASON_INITFAILED: ReasonTxt="[REASON_INITFAILED] "+ProgramType+" initialisation failed.";break; case REASON_CLOSE: ReasonTxt="[REASON_CLOSE] Terminal has been closed.";break; default:ReasonTxt="Another reason"; }}//switch(reason) Print("Terminal Build>>",TerminalInfoInteger(TERMINAL_BUILD)," ",ProgramType,":\"",iProgramName,"\" Deinit reason [",reason,"] >> "+ReasonTxt); //----- Удалить инфо с экрана {if(GraphUse) { DeleteGraph(); Comment(""); }}//if(GraphUse) //----- Гасим индикаторы {if(!((MQLInfoInteger(MQL_TESTER))||(MQLInfoInteger(MQL_OPTIMIZATION)))) { string Indicator_Name=""; Indicator_Delete_Handle(lip_handle,Indicator_Name); Indicator_Delete_Handle(adxw_handle,Indicator_Name); }}//if(!((MQLInfoInteger(MQL_TESTER))||(MQLInfoInteger(MQL_OPTIMIZATION)))) //----- Обнуление глобальных переменных datetime TimeSet=0; {for(int i=1;i<=3;i++)//Перебор типов Команд { {for(int j=0;j<=1;j++)//Перебор типов Позиций { ReadyExp[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]=0; //Сбрасываем внутренние флаги завершения команды N: ReadyExp_N=0 RunCommand[(int)CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)]=false; //Сбрасываем флаги запуска команд GlobalSetUlong("LIP_"+TheSymbol+"_Command_"+IntegerToString(CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)),TimeSet,0); //Сбрасываем команды Command_N=0 GlobalSetUlong("LIP_"+TheSymbol+"_Ready_"+IntegerToString(CommandCode((enCommandType)i,(ENUM_POSITION_TYPE)j)),TimeSet,1); //Устанавливаем флаги завершения Ready_N=1 }}//for(int j=0;i<=1;i++) }}//for(int i=1;i<=2;i++) //----- Гасим таймер EventKillTimer(); //----- return; }//OnDeinit()