MetaTrader 5 Strategy Tester! - страница 75

 
Andrey Dik:

Не торопитесь с выводами, пожалуйста.

Вот, компилируете сначала эту тестовую ФФ:

 

Да никому не нужна ваша библиотека и ваш метод тестирования.

Дайте четкий и чистый код в виде одного файла эксперта без всяких библиотек для тестера.  И со всеми условиями запуска.

 

После этого запустите этот код:

//+------------------------------------------------------------------+
//|                           AO from MQ source creator (script).mq5 |
//|                                      Copyright 2016, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict

//+------------------------------------------------------------------+
// фитнес функция
#import "ff.ex5"
int  GetParamCount ();
void GetParamProperties (double &min, double &max, double &step);
#import
//+------------------------------------------------------------------+

int    InputParamsCount = 0;
double InputStart       = 0.0;
double InputStep        = 0.0;
double InputEnd         = 0.0;

//+------------------------------------------------------------------+
void OnStart ()
{
  InputParamsCount = GetParamCount ();
  GetParamProperties (InputStart, InputEnd, InputStep);
  
  string inputs = "";
  
  //шапка
  inputs +=   "//+------------------------------------------------------------------+" + "\n";
  inputs +=   "//|                                              AO from MQ (expert) |" + "\n";
  inputs +=   "//|                                      Copyright 2012, CompanyName |" + "\n";
  inputs +=   "//|                                       http://www.companyname.net |" + "\n";
  inputs +=   "//+------------------------------------------------------------------+" + "\n";
  inputs +=   "#property strict"                                                       + "\n";
  inputs +=                                                                              "\n";
  inputs +=   "//+------------------------------------------------------------------+" + "\n";
  inputs +=   "// фитнес функция"                                                      + "\n";
  inputs +=   "#import \"ff.ex5\""                                                     + "\n";
  inputs +=   "int    GetParamCount ();"                                               + "\n";
  inputs +=   "double FF (double &array []);"                                          + "\n";
  inputs +=   "#import"                                                                + "\n";
  inputs +=   "//+------------------------------------------------------------------+" + "\n";
  
  // параметры
  for(int i = 0; i < InputParamsCount; i++)
  {
    inputs += "input double      Input" + (string)(i + 1) + "  = 0.0;" + "\n";
  }
  
  // глобальные переменные
  inputs +=                              "\n";
  inputs += "double param [];"         + "\n";
  inputs += "int    paramsCount = 0;"  + "\n";
  inputs +=                              "\n";
  
  // int OnInit ()
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs += "int OnInit ()"                                                          + "\n";
  inputs += "{"                                                                      + "\n";
  inputs += "  ArrayResize (param, GetParamCount ());"                               + "\n";
  inputs +=                                                                            "\n";
  for(int i = 0; i < InputParamsCount; i++)
    inputs += "  param [" + (string)i + "] = Input" + (string)(i + 1) + ";"           + "\n";
  inputs +=                                                                            "\n";
  inputs += "  return (INIT_SUCCEEDED);"                                             + "\n";
  inputs += "}"                                                                      + "\n";
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs +=                                                                            "\n";
  
  // int OnInit ()
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs += "void OnDeinit (const int reason)"                                       + "\n";
  inputs += "{"                                                                      + "\n";
  inputs += "}"                                                                      + "\n";
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs +=                                                                            "\n";
  
  // void OnTick ()
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs += "void OnTick ()"                                                         + "\n";
  inputs += "{"                                                                      + "\n";
  inputs += "}"                                                                      + "\n";
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs +=                                                                            "\n";
  
  // double OnTester ()
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs += "double OnTester ()"                                                     + "\n";
  inputs += "{"                                                                      + "\n";
  inputs += "  double ret = FF (param);"                                             + "\n";
  inputs += "  return (ret);"                                                        + "\n";
  inputs += "}"                                                                      + "\n";
  inputs += "//+------------------------------------------------------------------+" + "\n";
  inputs +=                                                                            "\n";
  
  int handle = FileOpen ("AO from MQ (expert).mq5", FILE_WRITE | FILE_CSV);
  if(handle == INVALID_HANDLE)
  {
    Print ("Ошибка при попытке создать исходный файл тестового эксперта.");
    return;
  }
  else
  {
    FileWriteString (handle, inputs, -1);
    FileClose (handle);
  }
  
  inputs = "";
  for(int i = 0; i < InputParamsCount; i++)
  {
    inputs += "Input" + (string)(i + 1) + "=0.0||" + (string)InputStart + "||" + (string)InputStep + "||" + (string)InputEnd + "||Y" + "\n";
  }
  
  handle = FileOpen ("AO from MQ (parameters).set", FILE_WRITE | FILE_CSV);
  if(handle == INVALID_HANDLE)
  {
    Print ("Ошибка при попытке создать set файл для тестового эксперта.");
    return;
  }
  else
  {
    FileWriteString (handle, inputs, -1);
    FileClose (handle);
  }
  
  Print ("Исходный файл тестового советника и файл настроек для него успешно созданы.");
}
//+------------------------------------------------------------------+

этот скрипт сделает опрос библиотеки ФФ на предмет количества оптимизируемых параметров и граничных условий с шагом. и создаст исходный код с соответсвующим количеством инпут параметров и сет файл для него что бы вручнуюю не заполнять их в оптимизаторе

Получите такой код советника:

//+------------------------------------------------------------------+
//|                                              AO from MQ (expert) |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict

//+------------------------------------------------------------------+
// фитнес функция
#import "ff.ex5"
int    GetParamCount ();
double FF (double &array []);
#import
//+------------------------------------------------------------------+
input double      Input1  = 0.0;
input double      Input2  = 0.0;
input double      Input3  = 0.0;
input double      Input4  = 0.0;
input double      Input5  = 0.0;
input double      Input6  = 0.0;
input double      Input7  = 0.0;
input double      Input8  = 0.0;
input double      Input9  = 0.0;
input double      Input10  = 0.0;
input double      Input11  = 0.0;
input double      Input12  = 0.0;
input double      Input13  = 0.0;
input double      Input14  = 0.0;
input double      Input15  = 0.0;
input double      Input16  = 0.0;
input double      Input17  = 0.0;
input double      Input18  = 0.0;
input double      Input19  = 0.0;
input double      Input20  = 0.0;
input double      Input21  = 0.0;
input double      Input22  = 0.0;
input double      Input23  = 0.0;
input double      Input24  = 0.0;
input double      Input25  = 0.0;
input double      Input26  = 0.0;
input double      Input27  = 0.0;
input double      Input28  = 0.0;
input double      Input29  = 0.0;
input double      Input30  = 0.0;
input double      Input31  = 0.0;
input double      Input32  = 0.0;
input double      Input33  = 0.0;
input double      Input34  = 0.0;
input double      Input35  = 0.0;
input double      Input36  = 0.0;
input double      Input37  = 0.0;
input double      Input38  = 0.0;
input double      Input39  = 0.0;
input double      Input40  = 0.0;
input double      Input41  = 0.0;
input double      Input42  = 0.0;
input double      Input43  = 0.0;
input double      Input44  = 0.0;
input double      Input45  = 0.0;
input double      Input46  = 0.0;
input double      Input47  = 0.0;
input double      Input48  = 0.0;
input double      Input49  = 0.0;
input double      Input50  = 0.0;

double param [];
int    paramsCount = 0;

//+------------------------------------------------------------------+
int OnInit ()
{
  ArrayResize (param, GetParamCount ());

  param [0] = Input1;
  param [1] = Input2;
  param [2] = Input3;
  param [3] = Input4;
  param [4] = Input5;
  param [5] = Input6;
  param [6] = Input7;
  param [7] = Input8;
  param [8] = Input9;
  param [9] = Input10;
  param [10] = Input11;
  param [11] = Input12;
  param [12] = Input13;
  param [13] = Input14;
  param [14] = Input15;
  param [15] = Input16;
  param [16] = Input17;
  param [17] = Input18;
  param [18] = Input19;
  param [19] = Input20;
  param [20] = Input21;
  param [21] = Input22;
  param [22] = Input23;
  param [23] = Input24;
  param [24] = Input25;
  param [25] = Input26;
  param [26] = Input27;
  param [27] = Input28;
  param [28] = Input29;
  param [29] = Input30;
  param [30] = Input31;
  param [31] = Input32;
  param [32] = Input33;
  param [33] = Input34;
  param [34] = Input35;
  param [35] = Input36;
  param [36] = Input37;
  param [37] = Input38;
  param [38] = Input39;
  param [39] = Input40;
  param [40] = Input41;
  param [41] = Input42;
  param [42] = Input43;
  param [43] = Input44;
  param [44] = Input45;
  param [45] = Input46;
  param [46] = Input47;
  param [47] = Input48;
  param [48] = Input49;
  param [49] = Input50;

  return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void OnDeinit (const int reason)
{
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void OnTick ()
{
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
double OnTester ()
{
  double ret = FF (param);
  return (ret);
}
//+------------------------------------------------------------------+

и сет файл к нему:

Input1=0.0||0.0||1.0||51.0||Y
Input2=0.0||0.0||1.0||51.0||Y
Input3=0.0||0.0||1.0||51.0||Y
Input4=0.0||0.0||1.0||51.0||Y
Input5=0.0||0.0||1.0||51.0||Y
Input6=0.0||0.0||1.0||51.0||Y
Input7=0.0||0.0||1.0||51.0||Y
Input8=0.0||0.0||1.0||51.0||Y
Input9=0.0||0.0||1.0||51.0||Y
Input10=0.0||0.0||1.0||51.0||Y
Input11=0.0||0.0||1.0||51.0||Y
Input12=0.0||0.0||1.0||51.0||Y
Input13=0.0||0.0||1.0||51.0||Y
Input14=0.0||0.0||1.0||51.0||Y
Input15=0.0||0.0||1.0||51.0||Y
Input16=0.0||0.0||1.0||51.0||Y
Input17=0.0||0.0||1.0||51.0||Y
Input18=0.0||0.0||1.0||51.0||Y
Input19=0.0||0.0||1.0||51.0||Y
Input20=0.0||0.0||1.0||51.0||Y
Input21=0.0||0.0||1.0||51.0||Y
Input22=0.0||0.0||1.0||51.0||Y
Input23=0.0||0.0||1.0||51.0||Y
Input24=0.0||0.0||1.0||51.0||Y
Input25=0.0||0.0||1.0||51.0||Y
Input26=0.0||0.0||1.0||51.0||Y
Input27=0.0||0.0||1.0||51.0||Y
Input28=0.0||0.0||1.0||51.0||Y
Input29=0.0||0.0||1.0||51.0||Y
Input30=0.0||0.0||1.0||51.0||Y
Input31=0.0||0.0||1.0||51.0||Y
Input32=0.0||0.0||1.0||51.0||Y
Input33=0.0||0.0||1.0||51.0||Y
Input34=0.0||0.0||1.0||51.0||Y
Input35=0.0||0.0||1.0||51.0||Y
Input36=0.0||0.0||1.0||51.0||Y
Input37=0.0||0.0||1.0||51.0||Y
Input38=0.0||0.0||1.0||51.0||Y
Input39=0.0||0.0||1.0||51.0||Y
Input40=0.0||0.0||1.0||51.0||Y
Input41=0.0||0.0||1.0||51.0||Y
Input42=0.0||0.0||1.0||51.0||Y
Input43=0.0||0.0||1.0||51.0||Y
Input44=0.0||0.0||1.0||51.0||Y
Input45=0.0||0.0||1.0||51.0||Y
Input46=0.0||0.0||1.0||51.0||Y
Input47=0.0||0.0||1.0||51.0||Y
Input48=0.0||0.0||1.0||51.0||Y
Input49=0.0||0.0||1.0||51.0||Y
Input50=0.0||0.0||1.0||51.0||Y



 

 
После этого можете запустить оптимизацию советника в мат режиме. Потом можете запустить скрипт запускающий мою библиотеку, которая так же обращается к ЭТОЙ же библиотеке ФФ что и советник. Это Вы все можете увидеть, если сделаете то что я описал. Всё совершенно прозрачно
 

Жаль, но я был прав.

Вы не только не понимаете, что и как нужно доказывать, не только занимаетесь самообманом, но и прямо запутываете ситуацию только чтобы никто не смог проверить.

Дайте мне чистый MQL5 код в виде одного эксперта. Так, чтобы вы не имели шанса выскочить из обсуждения и сказать, что что-то схема изменена.


Все-таки придется мне самому собрать код.

 

Я облегчил работу тем, кто захотел бы протестировать штатный оптимизатор. Для этого просто написать ФФ и сгенерировать код для её оптимизации. Но блин, даже в этом меня обвинили.

Пишите тогда каждый раз новый советник с новыми пораметрами, задолбаетесть же. 

 
Andrey Dik:

Вы *у*** или как? Я Вас просил выкладывать код своего оптимизатора? Вы **И**!!!!!

Бу-бу-бу, злой андрюша, плаксивая груша.
 
Renat Fatkhullin:

Жаль, но я был прав.

Вы не только не понимаете, что и как нужно доказывать, не только занимаетесь самообманом, но и прямо запутываете ситуацию только чтобы никто не смог проверить.

Дайте мне чистый MQL5 код в виде одного эксперта. Так, чтобы вы не имели шанса выскочить из обсуждения и сказать, что что-то схема изменена.


Все-таки придется мне самому собрать код.

Если Вы не сделали того, что я описал выше, то повторю - вот код советника, готовый для 1-го теста с сет файлом для него. Достаточно скомпилировать:

//+------------------------------------------------------------------+
//|                                              AO from MQ (expert) |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict

//+------------------------------------------------------------------+
// фитнес функция
#import "ff.ex5"
int    GetParamCount ();
double FF (double &array []);
#import
//+------------------------------------------------------------------+
input double      Input1  = 0.0;
input double      Input2  = 0.0;
input double      Input3  = 0.0;
input double      Input4  = 0.0;
input double      Input5  = 0.0;
input double      Input6  = 0.0;
input double      Input7  = 0.0;
input double      Input8  = 0.0;
input double      Input9  = 0.0;
input double      Input10  = 0.0;
input double      Input11  = 0.0;
input double      Input12  = 0.0;
input double      Input13  = 0.0;
input double      Input14  = 0.0;
input double      Input15  = 0.0;
input double      Input16  = 0.0;
input double      Input17  = 0.0;
input double      Input18  = 0.0;
input double      Input19  = 0.0;
input double      Input20  = 0.0;
input double      Input21  = 0.0;
input double      Input22  = 0.0;
input double      Input23  = 0.0;
input double      Input24  = 0.0;
input double      Input25  = 0.0;
input double      Input26  = 0.0;
input double      Input27  = 0.0;
input double      Input28  = 0.0;
input double      Input29  = 0.0;
input double      Input30  = 0.0;
input double      Input31  = 0.0;
input double      Input32  = 0.0;
input double      Input33  = 0.0;
input double      Input34  = 0.0;
input double      Input35  = 0.0;
input double      Input36  = 0.0;
input double      Input37  = 0.0;
input double      Input38  = 0.0;
input double      Input39  = 0.0;
input double      Input40  = 0.0;
input double      Input41  = 0.0;
input double      Input42  = 0.0;
input double      Input43  = 0.0;
input double      Input44  = 0.0;
input double      Input45  = 0.0;
input double      Input46  = 0.0;
input double      Input47  = 0.0;
input double      Input48  = 0.0;
input double      Input49  = 0.0;
input double      Input50  = 0.0;

double param [];
int    paramsCount = 0;

//+------------------------------------------------------------------+
int OnInit ()
{
  ArrayResize (param, GetParamCount ());

  param [0] = Input1;
  param [1] = Input2;
  param [2] = Input3;
  param [3] = Input4;
  param [4] = Input5;
  param [5] = Input6;
  param [6] = Input7;
  param [7] = Input8;
  param [8] = Input9;
  param [9] = Input10;
  param [10] = Input11;
  param [11] = Input12;
  param [12] = Input13;
  param [13] = Input14;
  param [14] = Input15;
  param [15] = Input16;
  param [16] = Input17;
  param [17] = Input18;
  param [18] = Input19;
  param [19] = Input20;
  param [20] = Input21;
  param [21] = Input22;
  param [22] = Input23;
  param [23] = Input24;
  param [24] = Input25;
  param [25] = Input26;
  param [26] = Input27;
  param [27] = Input28;
  param [28] = Input29;
  param [29] = Input30;
  param [30] = Input31;
  param [31] = Input32;
  param [32] = Input33;
  param [33] = Input34;
  param [34] = Input35;
  param [35] = Input36;
  param [36] = Input37;
  param [37] = Input38;
  param [38] = Input39;
  param [39] = Input40;
  param [40] = Input41;
  param [41] = Input42;
  param [42] = Input43;
  param [43] = Input44;
  param [44] = Input45;
  param [45] = Input46;
  param [46] = Input47;
  param [47] = Input48;
  param [48] = Input49;
  param [49] = Input50;

  return (INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void OnDeinit (const int reason)
{
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void OnTick ()
{
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
double OnTester ()
{
  double ret = FF (param);
  return (ret);
}
//+------------------------------------------------------------------+

и сет файл к нему:

Input1=0.0||0.0||1.0||51.0||Y
Input2=0.0||0.0||1.0||51.0||Y
Input3=0.0||0.0||1.0||51.0||Y
Input4=0.0||0.0||1.0||51.0||Y
Input5=0.0||0.0||1.0||51.0||Y
Input6=0.0||0.0||1.0||51.0||Y
Input7=0.0||0.0||1.0||51.0||Y
Input8=0.0||0.0||1.0||51.0||Y
Input9=0.0||0.0||1.0||51.0||Y
Input10=0.0||0.0||1.0||51.0||Y
Input11=0.0||0.0||1.0||51.0||Y
Input12=0.0||0.0||1.0||51.0||Y
Input13=0.0||0.0||1.0||51.0||Y
Input14=0.0||0.0||1.0||51.0||Y
Input15=0.0||0.0||1.0||51.0||Y
Input16=0.0||0.0||1.0||51.0||Y
Input17=0.0||0.0||1.0||51.0||Y
Input18=0.0||0.0||1.0||51.0||Y
Input19=0.0||0.0||1.0||51.0||Y
Input20=0.0||0.0||1.0||51.0||Y
Input21=0.0||0.0||1.0||51.0||Y
Input22=0.0||0.0||1.0||51.0||Y
Input23=0.0||0.0||1.0||51.0||Y
Input24=0.0||0.0||1.0||51.0||Y
Input25=0.0||0.0||1.0||51.0||Y
Input26=0.0||0.0||1.0||51.0||Y
Input27=0.0||0.0||1.0||51.0||Y
Input28=0.0||0.0||1.0||51.0||Y
Input29=0.0||0.0||1.0||51.0||Y
Input30=0.0||0.0||1.0||51.0||Y
Input31=0.0||0.0||1.0||51.0||Y
Input32=0.0||0.0||1.0||51.0||Y
Input33=0.0||0.0||1.0||51.0||Y
Input34=0.0||0.0||1.0||51.0||Y
Input35=0.0||0.0||1.0||51.0||Y
Input36=0.0||0.0||1.0||51.0||Y
Input37=0.0||0.0||1.0||51.0||Y
Input38=0.0||0.0||1.0||51.0||Y
Input39=0.0||0.0||1.0||51.0||Y
Input40=0.0||0.0||1.0||51.0||Y
Input41=0.0||0.0||1.0||51.0||Y
Input42=0.0||0.0||1.0||51.0||Y
Input43=0.0||0.0||1.0||51.0||Y
Input44=0.0||0.0||1.0||51.0||Y
Input45=0.0||0.0||1.0||51.0||Y
Input46=0.0||0.0||1.0||51.0||Y
Input47=0.0||0.0||1.0||51.0||Y
Input48=0.0||0.0||1.0||51.0||Y
Input49=0.0||0.0||1.0||51.0||Y

Input50=0.0||0.0||1.0||51.0||Y 

 

Андрей, вы меня что - за идиота принимаете?

Никто не собирается следовать вашим советам. Я сейчас собираю реальный код, который вы так старательно прятали и усложняли.

 
Renat Fatkhullin:

Андрей, вы меня что - за идиота принимаете?

Никто не собирается следовать вашим советам. Я сейчас собираю реальный код, который вы так старательно прятали и усложняли.

Не вопрос.

Только вижу, что Вы меня за идиота считаете, а зря. 

Я буду только рад, если своими руками и глазами разберётесь, что нет обмана.

Напишите пожалуйста свою ФФ и скомплируйте, выложите только ех, только соблюдите пожалуйста импортируемые функции, что бы тот алгоритм который я выложил мог к ней подключится. И Вы увидите, что алгоритм оптит функцию, которую не знает.  

 

Какую фразу вы зашифровали на 1000 символов?

"QbgpsGPELKivNySHxdBjAJKudnJtvQDXtBlfKQBuUjFyovbSejUiPaByUjmMWHEGIHRqDCHbMDPdnRRcEMuXzCoBvifSQAdcbopwGBiDbECxbrzJLZTkOYdWdEmUhnelievPauljpmAmvbUnDuBVPvejBBBTbmqLatRbuPgjUMNSQXBVviWULZjslNLgFKfINJFGzOOusXnBDeCpthgOmlTEUPxQyrUOTKhtySNODxsqEtLjPvxceGodZRqWqspsEUQXeaNPeEQJNmaVOoMzYGjfONlPPTEpUtqPbigcrPlpCBxUKLFnHgAENIzDExGCcBoKdkTKXQgorapGkuGPrzPWjsSjThwffRjOYxFyQCWZhytILMltScNKgSuZUVlgRdWyaLFLGEwHVHJiuqOgxblyTshFTLPOpJQFZKNpPmSPghRsKxZyYIjxzoxyCWEqRpylkGHLccmQoGGdqHyLkfNVrMHViujGBpBpzFWASkeuvHXINEnVyAKIzCRabWrELmTEknYoWHNFDkteLimAJVvgrlgMvnwkCTthjHMPPxZNmqFulCkmHSxqaAXRHfYetIpvQmQPkBxDcVXlCzqLmqzQUpIWBgfTuNmIYbyhKqJBcrVmkDJRuNsNIOYXUVHPaclvEVgqDGeZrYemBXMQBBaTMlBHfCZJUfIGCmOQsrzHcEmdcermCYDyqkQEcBnUzkrypSGMwGgXoUoIgfmatuMYTxnKeqiWcqxcQaxNtPDOkgMAsRdRBcXQHvIMHTDrBHFlCvngcvpnXWoLFPSnvGLbEmJNFcwMhbllYogKDmltLUNwymaJenKnYOVhviXqYFkEFkoTQlFxJEeWUFRoBeLLrdQICasUmgOiWoGgxZegCZVAaBCGmhkhYtmqWqGPBGFJBcHcWWmSCFwDmrkCPxnWvJxbDoNYFNKhtzanuEawUpeEPgpmLZGZaFezWCZwExZWfDbBrLlaTyrGGfLMehhrqbImcjiPOQPKmgIF";

За код отдельное спасибо - написан в чистом виде вредительски и с четкой позицией не дать никакой информации.

Сформулируйте четко и в единственно числе задачу, включая зашифрованные строки.

Причина обращения: