Adwizard/Experts/Stage1.mqh

135 lines
11 KiB
MQL5
Raw Permalink Normal View History

2025-04-11 13:28:40 +03:00
<EFBFBD><EFBFBD>//+------------------------------------------------------------------+
//| Stage1.mqh |
//| Copyright 2024, Yuriy Bykov |
//| https://www.mql5.com/ru/users/antekov |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, Yuriy Bykov"
#property link "https://www.mql5.com/ru/articles/15683"
#property description "!>25B=8: >B:@K205B @K=>G=K9 8;8 >B;>65==K9 >@45@ 2 B>B <><5=B,"
#property description ":>340 B8:>2K9 >1J5< A25G8 ?@52KH05B A@54=89 >1J5< 2 =0?@02;5=88 B5:CI59 A25G8."
#property description "A;8 >@45@0 5I5 =5 ?@52@0B8;8AL 2 ?>78F88, B> >=8 C40;ONBAO ?> 2@5<5=8 8AB5G5=8O."
#property description "B:@KBK5 ?>78F88 70:@K20NBAO B>;L:> ?> SL 8;8 TP."
#property version "1.20"
#ifndef __NAME__
#define __NAME__ "EmptyStrategy"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
string GetStrategyParams() {
return "";
}
#endif
#include "../Virtual/VirtualAdvisor.mqh"
//+------------------------------------------------------------------+
//| E>4=K5 ?0@0<5B@K |
//+------------------------------------------------------------------+
sinput int idTask_ = 0; // - 45=B8D8:0B>@ 7040G8 >?B8<870F88
sinput string fileName_ = "database.sqlite"; // - $09; A 107>9 40==KE >?B8<870F88
//input group "=== 0@0<5B@K A>25B=8:0"
ulong magic_ = 27181; // Magic
double fixedBalance_ = 10000;
double scale_ = 1;
CAdvisor *expert; // #:070B5;L =0 >1J5:B M:A?5@B0
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit() {
CMoney::FixedBalance(fixedBalance_);
CMoney::DepoPart(1.0);
// >4:;NG05<AO : >A=>2=>9 1075 40==KE
CVirtualAdvisor::TesterInit(idTask_, fileName_);
// >43>B02;8205< AB@>:C 8=8F80;870F88 4;O >4=>3> M:75<?;O@0 AB@0B5388
string strategyParams = GetStrategyParams();
// >43>B02;8205< AB@>:C 8=8F80;870F88 4;O 3@C??K A >4=8< M:75<?;O@>< AB@0B5388
string groupParams = StringFormat(
"class CVirtualStrategyGroup(\n"
" [\n"
" %s\n"
" ],%f\n"
" )",
strategyParams, scale_
);
// >43>B02;8205< AB@>:C 8=8F80;870F88 4;O @8A:-<5=5465@0
string riskManagerParams = StringFormat(
"class CVirtualRiskManager(\n"
" 0,0,0,0,0,0,0,0,0,0,0,0,0"
" )",
0
);
// >43>B02;8205< AB@>:C 8=8F80;870F88 4;O M:A?5@B0 A 3@C??>9 87 >4=>9 AB@0B5388 8 @8A:-<5=5465@><
string expertParams = StringFormat(
"class CVirtualAdvisor(\n"
" %s,\n"
" %s,\n"
" %d,%s,%d\n"
")",
groupParams,
riskManagerParams,
magic_, __NAME__, true
);
PrintFormat(__FUNCTION__" | Expert Params:\n%s", expertParams);
// !>7405< M:A?5@B0, @01>B0NI53> A 28@BC0;L=K<8 ?>78F8O<8
expert = NEW(expertParams);
if(!expert) return INIT_FAILED;
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick() {
expert.Tick();
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
if(!!expert) delete expert;
}
//+------------------------------------------------------------------+
//| 57C;LB0B B5AB8@>20=8O |
//+------------------------------------------------------------------+
double OnTester(void) {
return expert.Tester();
}
//+------------------------------------------------------------------+
//| =8F80;870F8O ?5@54 >?B8<870F859 |
//+------------------------------------------------------------------+
int OnTesterInit(void) {
return CVirtualAdvisor::TesterInit(idTask_, fileName_);
}
//+------------------------------------------------------------------+
//| 59AB28O ?>A;5 ?@>E>40 >?B8<870F88 |
//+------------------------------------------------------------------+
void OnTesterPass() {
CVirtualAdvisor::TesterPass();
}
//+------------------------------------------------------------------+
//| 59AB28O ?>A;5 >?B8<870F88 |
//+------------------------------------------------------------------+
void OnTesterDeinit(void) {
CVirtualAdvisor::TesterDeinit();
}
//+------------------------------------------------------------------+