Project_N_1/optimizer.mq5

180 lines
11 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 16:18:18 +02:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| optimizer.mq5 |
//| Copyright 2021, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link "https://www.mql5.com"
#property version "1.00"
#include <Bollinger_optimizer.mq5>
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//;>10;L=K5 ?5@5<5==K5
gVarStop="BuddyIlan."+_Symbol+".Stop";
gVarSL = "BuddyIlan." + _Symbol + ".SL";
gVarTP = "BuddyIlan." + _Symbol + ".TP";
gVarSTOFilter="BuddyIlan."+_Symbol+".STOFilter";
gVarSTOTimeFrameFilter="BuddyIlan."+_Symbol+".STOTimeFrameFilter";
EventSetTimer(5);
Print("TERMINAL_PATH = ",TerminalInfoString(TERMINAL_PATH));
Print("TERMINAL_DATA_PATH = ",TerminalInfoString(TERMINAL_DATA_PATH));
Print("TERMINAL_COMMONDATA_PATH = ",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
void OnTimer()
{
// MqlDateTime dt;
//
// datetime now=TimeLocal(dt);
//
////  AC11>BC
// if(dt.day_of_week!=6)
// {
// bOptimisationDone=false;
// return;
// }
//
////  6:00
// if(dt.hour<6)
// return;
// #65 A45;0=>?
if(bOptimisationDone==true)
return;
// #40;O5< ?@54K4CI89 D09; "optimise.ini"
FileDelete("Optimiser\\Optimise.ini");
// !>7405< :>=D83C@0F8>==K9 D09; A>25B=8:0 8 :>?8@C5< 53> 2 ?0?:C \MQL5\Profiles\Test (M:75<?;O@ 4;O B5AB8@>20=8O)
if(CreateAndCopyParametersFile(true,false,0,0)==false)
return;
// >?8@C5< common.ini -> optimise.ini
if(CopyAndMoveCommonIni()==false)
return;
// >102;O5< 70?CA: [Tester] 2 optimise.ini - https://www.metatrader5.com/ru/terminal/help/start_advanced/start
if(AddTesterStanza()==false)
return;
Print("=======================\n?B8<870F8O SL-1");
// 0?CA: ?5@2>9 >?B8<870F88 SL
StartOptimizer();
// >?8@C5< D09; >BG5B0 2 @01>G89 :0B0;>3
if(CopyReport()==false)
return;
// =0;878@C5< >BG5BK
if(LoadResults(_SL)==false)
return;
Print("=======================\n?B8<870F8O STO");
// !>7405< D09; ?0@0<5B@>2 4;O >?B8<870F88 STO (>4=>2@5<5==> 1C4CB >?B8<878@>20=K 2 ?0@0<5B@0)
if(CreateAndCopyParametersFile(false,false, BetterSL,0)==false)
return;
// 0?CA: >?B8<870F88 STO
StartOptimizer();
// >?8@C5< D09; >BG5B0 2 @01>G89 :0B0;>3
if(CopyReport()==false)
return;
if(LoadResults(_STO)==false)
return;
Print("=======================\n?B8<870F8O SL-2");
// !>7405< D09; ?0@0<5B@>2 4;O >?B8<870F88 SL (?5@5AG5B A =>2K<8 7=0G5=8O<8 ?0@0<5B@0 STO)
if(CreateAndCopyParametersFile(true,false,0,0)==false)
return;
// 0?CA: >?B8<870B>@0
StartOptimizer();
if(CopyReport()==false)
return;
if(LoadResults(_SL)==false)
return;
Print("=======================\n?B8<870F8O TP");
// !>7405< D09; ?0@0<5B@>2 4;O >?B8<870F88 TP
if(CreateAndCopyParametersFile(false,true,BetterSL,0)==false)
return;
// 0?CA: >?B8<870B>@0
StartOptimizer();
if(CopyReport()==false)
return;
if(LoadResults(_TP)==false)
return;
// 0:;NG5=85
PrintFormat("=======================\nSL=%d TP=%d STOFilter=%s STOTimeFrameFilter=%s (Profit=%.2lf DD=%lf)\n=======================",
BetterSL,BetterTP,(BetterSTOFilter==true)?"true":"false",(BetterSTOTimeFrameFilter==true)?"true":"false",BetterProfit,BetterDD);
// #AB0=02;8205< 3;>10;L=K5 ?5@5<5==K5 - @01>B0NI89 A>25B=8: BuddyIlan 1C45B G8B0BL 8 8A?>;L7>20BL MB8 =>2K5 7=0G5=8O
// A;8 >1=0@C68BAO ?@>A04:0 1>;55 50%, A>25B=8: >AB0=>28B B>@3>2;N
if(BetterDD>50.0 && GlobalVariableSet(gVarStop,1.0)==false)
{
PrintFormat("H81:0 CAB0=>2:8 3;>10;L=>9 ?5@5<5==>9 [%s]",gVarStop);
}
if(GlobalVariableSet(gVarSL,BetterSL)==false)
{
PrintFormat("H81:0 CAB0=>2:8 3;>10;L=>9 ?5@5<5==>9 [%s]=%d",gVarSL,BetterSL);
}
if(GlobalVariableSet(gVarTP,BetterTP)==false)
{
PrintFormat("H81:0 CAB0=>2:8 3;>10;L=>9 ?5@5<5==>9 [%s]=%d",gVarTP,BetterTP);
}
if(GlobalVariableSet(gVarSTOFilter,(BetterSTOFilter==true)?1.0:0.0)==false)
{
PrintFormat("H81:0 CAB0=>2:8 3;>10;L=>9 ?5@5<5==>9 [%s]=%.1lf",gVarSTOFilter,(BetterSTOFilter==true)?1.0:0.0);
}
if(GlobalVariableSet(gVarSTOTimeFrameFilter,(BetterSTOTimeFrameFilter==true)?1.0:0.0)==false)
{
PrintFormat("H81:0 CAB0=>2:8 3;>10;L=>9 ?5@5<5==>9 [%s]=%.1lf",gVarSTOTimeFrameFilter,(BetterSTOTimeFrameFilter==true)?1.0:0.0);
}
bOptimisationDone=true;
}