![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не торопитесь с выводами, пожалуйста.
Вот, компилируете сначала эту тестовую ФФ:
Да никому не нужна ваша библиотека и ваш метод тестирования.
Дайте четкий и чистый код в виде одного файла эксперта без всяких библиотек для тестера. И со всеми условиями запуска.
После этого запустите этот код:
//| 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);
}
//+------------------------------------------------------------------+
и сет файл к нему:
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 код в виде одного эксперта. Так, чтобы вы не имели шанса выскочить из обсуждения и сказать, что что-то схема изменена.
Все-таки придется мне самому собрать код.
Я облегчил работу тем, кто захотел бы протестировать штатный оптимизатор. Для этого просто написать ФФ и сгенерировать код для её оптимизации. Но блин, даже в этом меня обвинили.
Пишите тогда каждый раз новый советник с новыми пораметрами, задолбаетесть же.
Вы *у*** или как? Я Вас просил выкладывать код своего оптимизатора? Вы **И**!!!!!
Жаль, но я был прав.
Вы не только не понимаете, что и как нужно доказывать, не только занимаетесь самообманом, но и прямо запутываете ситуацию только чтобы никто не смог проверить.
Дайте мне чистый 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);
}
//+------------------------------------------------------------------+
и сет файл к нему:
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
Андрей, вы меня что - за идиота принимаете?
Никто не собирается следовать вашим советам. Я сейчас собираю реальный код, который вы так старательно прятали и усложняли.
Андрей, вы меня что - за идиота принимаете?
Никто не собирается следовать вашим советам. Я сейчас собираю реальный код, который вы так старательно прятали и усложняли.
Не вопрос.
Только вижу, что Вы меня за идиота считаете, а зря.
Я буду только рад, если своими руками и глазами разберётесь, что нет обмана.
Напишите пожалуйста свою ФФ и скомплируйте, выложите только ех, только соблюдите пожалуйста импортируемые функции, что бы тот алгоритм который я выложил мог к ней подключится. И Вы увидите, что алгоритм оптит функцию, которую не знает.
Какую фразу вы зашифровали на 1000 символов?
"QbgpsGPELKivNySHxdBjAJKudnJtvQDXtBlfKQBuUjFyovbSejUiPaByUjmMWHEGIHRqDCHbMDPdnRRcEMuXzCoBvifSQAdcbopwGBiDbECxbrzJLZTkOYdWdEmUhnelievPauljpmAmvbUnDuBVPvejBBBTbmqLatRbuPgjUMNSQXBVviWULZjslNLgFKfINJFGzOOusXnBDeCpthgOmlTEUPxQyrUOTKhtySNODxsqEtLjPvxceGodZRqWqspsEUQXeaNPeEQJNmaVOoMzYGjfONlPPTEpUtqPbigcrPlpCBxUKLFnHgAENIzDExGCcBoKdkTKXQgorapGkuGPrzPWjsSjThwffRjOYxFyQCWZhytILMltScNKgSuZUVlgRdWyaLFLGEwHVHJiuqOgxblyTshFTLPOpJQFZKNpPmSPghRsKxZyYIjxzoxyCWEqRpylkGHLccmQoGGdqHyLkfNVrMHViujGBpBpzFWASkeuvHXINEnVyAKIzCRabWrELmTEknYoWHNFDkteLimAJVvgrlgMvnwkCTthjHMPPxZNmqFulCkmHSxqaAXRHfYetIpvQmQPkBxDcVXlCzqLmqzQUpIWBgfTuNmIYbyhKqJBcrVmkDJRuNsNIOYXUVHPaclvEVgqDGeZrYemBXMQBBaTMlBHfCZJUfIGCmOQsrzHcEmdcermCYDyqkQEcBnUzkrypSGMwGgXoUoIgfmatuMYTxnKeqiWcqxcQaxNtPDOkgMAsRdRBcXQHvIMHTDrBHFlCvngcvpnXWoLFPSnvGLbEmJNFcwMhbllYogKDmltLUNwymaJenKnYOVhviXqYFkEFkoTQlFxJEeWUFRoBeLLrdQICasUmgOiWoGgxZegCZVAaBCGmhkhYtmqWqGPBGFJBcHcWWmSCFwDmrkCPxnWvJxbDoNYFNKhtzanuEawUpeEPgpmLZGZaFezWCZwExZWfDbBrLlaTyrGGfLMehhrqbImcjiPOQPKmgIF";
За код отдельное спасибо - написан в чистом виде вредительски и с четкой позицией не дать никакой информации.
Сформулируйте четко и в единственно числе задачу, включая зашифрованные строки.