На сколько знаю, принты не выводятся в основной лог тестера только при оптимизации (в обычном режиме все ОК).
Из OnTester() как я понимаю принудительно выйти не возможно. Да и зачем, там ведь просто рассчитывается определенный результат тестирования (да еще по сути используемый только для оптимизации)?
OnTester: Функция OnTester() является обработчиком события Tester, которое автоматически генерируется по окончании исторического тестирования эксперта на заданном интервале дат. Функция должна быть определена с типом double, параметров не имеет:
doubleOnTester();
Функция вызывается непосредственно перед вызовом функции OnDeinit() и имеет тип возвращаемого значения double. Функция OnTester() может быть использована только в экспертах при тестировании и предназначена в первую очередь для расчета некоторого значения, используемого в качестве критерия Custom max при генетической оптимизации входных параметров.
PS
> или почему история сделок до пользовательской функции существует а после выдаёт ноль...
Тут наверно к разработчикам.
Насколько я понял, OnTester должен вернуть количество сделок (если они есть), а под пользовательской функцией понимается Custom_func()?
На сколько знаю, принты не выводятся в основной лог тестера только при оптимизации (в обычном режиме все ОК).
Из OnTester() как я понимаю принудительно выйти не возможно. Да и зачем, там ведь просто рассчитывается определенный результат тестирования (да еще по сути используемый только для оптимизации)?
PS
> или почему история сделок до пользовательской функции существует а после выдаёт ноль...
Тут наверно к разработчикам.
Насколько я понял, OnTester должен вернуть количество сделок (если они есть), а под пользовательской функцией понимается Custom_func()?
Вот проблема как раз в том что в при самой оптимизации программа работает не так как в других ситуациях (поэтому и нужно подать весточку из под OnTester).
Для этих целей придумал аналог принта(функцию которая создаёт файл ради того чтоб напечатать один стринг передаваемый в функцию как параметр).
int prints=0;// счётчик вызовов, должен быть обьявлен глобально
//+------------------------------------------------------------------+//| вывод информации из под тестера |//+------------------------------------------------------------------+void WriteFilePrint(string text,string folder="Print")
{
string subfolder="Print";
int han=FileOpen(subfolder+"\\"+folder+(string)prints+".csv",FILE_WRITE|FILE_CSV,";");
if(han!=INVALID_HANDLE)
{
FileWrite(han,text);
FileClose(han);
}
elsePrint("File open failed"+subfolder+"\\"+folder+".txt, error",GetLastError());
prints++;
}
Таким образом получилось отловить некоректное исполнение некоторых функций в OnTester.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Есть ли принудительное прекращение функции OnTester()
или почему история сделок до пользовательской функции существует а после выдаёт ноль :
какие функции не работают в тестере ??
как из тестрера(при оптимизации) подать сигнал наружу что чтото не так (принты алерты ничего же не работает) ??
Видимо сегодня уже все спят.
А логи агентов не смотрели, может там все есть?
На сколько знаю, принты не выводятся в основной лог тестера только при оптимизации (в обычном режиме все ОК).
Из OnTester() как я понимаю принудительно выйти не возможно. Да и зачем, там ведь просто рассчитывается определенный результат тестирования (да еще по сути используемый только для оптимизации)?
Функция OnTester() является обработчиком события Tester, которое автоматически генерируется по окончании исторического тестирования эксперта на заданном интервале дат. Функция должна быть определена с типом double, параметров не имеет:
double OnTester();
Функция вызывается непосредственно перед вызовом функции OnDeinit() и имеет тип возвращаемого значения double. Функция OnTester() может быть использована только в экспертах при тестировании и предназначена в первую очередь для расчета некоторого значения, используемого в качестве критерия Custom max при генетической оптимизации входных параметров.
PS
> или почему история сделок до пользовательской функции существует а после выдаёт ноль...
Тут наверно к разработчикам.
Насколько я понял, OnTester должен вернуть количество сделок (если они есть), а под пользовательской функцией понимается Custom_func()?
Разработчикам посвящяется ...
Ребята вы бы хоть предупреждали если даёте возможности которые раньше в принципе были не возможны.
Сутки угробил чтоб выловиль вот такой баг
только не нужно меня учить что так и нужно ну конечно же, я всё это знаю но реально убил сутки только потому что привык что при таком
вызове компилятор должен дать ошибку.
Есть ли принудительное прекращение функции OnTester()
или почему история сделок до пользовательской функции существует а после выдаёт ноль :
какие функции не работают в тестере ??
как из тестрера(при оптимизации) подать сигнал наружу что чтото не так (принты алерты ничего же не работает) ??
Спасибо за сообщение. Ваша заявка получена - разбираемся.
Как вычислить максимальный допустимый лот по марже для открытия новой позиции? В MQL4 это делалось так:
MaxLot=AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);Как вычислить максимальный допустимый лот по марже для открытия новой позиции? В MQL4 это делалось так:
Примерно так:
Этот код не только вычисляет максимальный объем, но и точно вписывает его в ограничения настроек символа.Примерно так:
Этот код не только вычисляет максимальный объем, но и точно вписывает его в ограничения настроек символа.Спасибо! У меня в справке функции OrderCalcMargin() нет :)
Ну и как правильно в конце концов? Так "==" или так "="?
И так и так.
if(a==0){выражение} значит если а равно 0 то истино, значит исполняем {выражение}.
if(a=0){выражение} равносильно такой записи if(a){a=0;выражение} , те если а истино то { а присвоить 0, выражение}.
А логи агентов не смотрели, может там все есть?
На сколько знаю, принты не выводятся в основной лог тестера только при оптимизации (в обычном режиме все ОК).
Из OnTester() как я понимаю принудительно выйти не возможно. Да и зачем, там ведь просто рассчитывается определенный результат тестирования (да еще по сути используемый только для оптимизации)?
PS
> или почему история сделок до пользовательской функции существует а после выдаёт ноль...
Тут наверно к разработчикам.
Насколько я понял, OnTester должен вернуть количество сделок (если они есть), а под пользовательской функцией понимается Custom_func()?
Вот проблема как раз в том что в при самой оптимизации программа работает не так как в других ситуациях (поэтому и нужно подать весточку из под OnTester).
Для этих целей придумал аналог принта(функцию которая создаёт файл ради того чтоб напечатать один стринг передаваемый в функцию как параметр).
Таким образом получилось отловить некоректное исполнение некоторых функций в OnTester.