Такое неудобство возникло, пишу в файл и индикаторе, который вызывается советником. В терминале в чарте отрабатывает открытие и закрытие файла в индикаторе в ОнДеинит индикатора. А в тестере ОнДеинит индикатора по окончании теста не отрабатывает, у эксперта отрабатывает. Закрытие в окне теста этого индикатора тоже не помогает, только закрыть терминал и тогда файл становится свободным.
Как то можно закрыть файл? к тому же он пишется по пути
И как прописать путь, что бы писал в песочницу Тестер, а не в папки агентов тестирования, к тому же они пересоздаются при каждом тестировании и файлы уничтожаются.
#property indicator_chart_window#property indicator_plots0#property indicator_buffers1int HandleFile ; // Файловый описательuint Qnt_Symb; // Количество записанных симв.string File_Name="TestFileInd.csv"; // Имя файлаdouble BufferTest[];
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,BufferTest);
//--- indicator buffers mapping
HandleFile=FileOpen(File_Name,FILE_CSV|FILE_WRITE,";");//Открытие файлаif(HandleFile==-1) // Неудача при открытии файла
{
Alert("Ошибка при открытии файла. ",File_Name,// Сообщение об ошибке"Возможно, файл занят другим приложением, handle",HandleFile);
Alert("Код ошибки ",GetLastError());}
//---return(INIT_SUCCEEDED);
}
voidOnDeinit(constint reason)
{
//---FileClose(HandleFile); // Закрываем файлPrint("Файл ",File_Name," закрыт.");// Сообщение
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
//---//--- return value of prev_calculated for next callreturn(rates_total);
}
//+------------------------------------------------------------------+// Экспертint Handle;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---
Handle=iCustom(NULL,0,"TestIndFile");
if(Handle==INVALID_HANDLE)
{
//--- сообщим о неудаче и выведем номер ошибкиPrintFormat("Не удалось создать хэндл индикатора TestIndFile для пары %s/%s, код ошибки %d",
_Symbol,
EnumToString(_Period),
GetLastError());
//---
}
return(INIT_SUCCEEDED);
}
Понимаю что вопрос сложный, и возможно без решения в 5ке, может кто знает?
Maxim Kuznetsov #: string myIndic=" my Indic "; StringTrim(myIndic);
string myIndic=" my Indic "; StringTrim(myIndic);
пробелы удалить конечно можно, но IndicatorRelease(handle) в тестере 5ки не работает, так доки говорят. Да и как то идею не понимаю, хендл же получен, имя уже не при чем в дальнейшем, константное оно или через переменную подставлено. попробую)
пробелы удалить конечно можно, но IndicatorRelease(handle) в тестере 5ки не работает, так доки говорят. Да и как то идею не понимаю, хендл же получен, имя уже не при чем в дальнейшем, константное оно или через переменную подставлено. попробую)
помнится(хотя память может и изменить) было где-то property или свойство советника отвечающее за "отображать/нет индикаторы советника по завершению"..
что-то беглый поиск по справке показывает что нет такого, возможно в процессе "делаем терминал лучше", получилось как всегда :-)
у вас выходит что в тестере советник-то работу завершил, но хендл индикатора использует ещё и сам тестер для отображения результатов и DeInit индикатора не вызывается.
помнится(хотя память может и изменить) было где-то property или свойство советника отвечающее за "отображать/нет индикаторы советника по завершению"..
что-то беглый поиск по справке показывает что нет такого, возможно в процессе "делаем терминал лучше", получилось как всегда :-)
у вас выходит что в тестере советник-то работу завершил, но хендл индикатора использует ещё и сам тестер для отображения результатов и DeInit индикатора не вызывается.
Да, так и есть, именно ДеИнит индикатора не вызывается, вот про хендл не скажу, вроде как по закрытию окна тестера должен сбросится. Но файл остается привязанным к терминалу, (открытым терминалом) и остается только закрывать терминал.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
У меня стоит 10000000 :)
Поставил и забыл. Не совсем понял, зачем уменьшать.
В этом проблемы нет сколько там стоит! Мне просто стало интересно! Есть такая возможность или нет?!
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Valeriy Yastremskiy, 2023.09.27 15:54
Как в тестере 5ке поставить спред 0? в спецификации плавающий, ставлю ноль, не воспринимает. Печатаю бид аск, спред плавающий) тест по по ОХЛС М1Может все таки кто знает? в 4ке знаю, а вот в 5ке что то сходу не нашел?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Valeriy Yastremskiy, 2023.09.26 14:48
Такое неудобство возникло, пишу в файл и индикаторе, который вызывается советником. В терминале в чарте отрабатывает открытие и закрытие файла в индикаторе в ОнДеинит индикатора. А в тестере ОнДеинит индикатора по окончании теста не отрабатывает, у эксперта отрабатывает. Закрытие в окне теста этого индикатора тоже не помогает, только закрыть терминал и тогда файл становится свободным.
Как то можно закрыть файл? к тому же он пишется по пути
C:\Users\....\AppData\Roaming\MetaQuotes\Tester\.......FF075\Agent-127.0.0.1-3000\MQL5\Files
И как прописать путь, что бы писал в песочницу Тестер, а не в папки агентов тестирования, к тому же они пересоздаются при каждом тестировании и файлы уничтожаются.
в советнике в вызове iCustom(... "my indic" )
заменить на
// делаем имя индикатора "не константной строкой"
string myIndic=" my Indic "; StringTrim(myIndic);
handle = iCustom(... myIndic );
и в OnDeinit советника IndicatorRelease(handle)
Может помочь
А понял, думаю, что напрямую нет. Это состояние окружения терминала, только для чтения. Хотя, могу ошибаться.
Спасибо!
string myIndic=" my Indic "; StringTrim(myIndic);
пробелы удалить конечно можно, но IndicatorRelease(handle) в тестере 5ки не работает, так доки говорят. Да и как то идею не понимаю, хендл же получен, имя уже не при чем в дальнейшем, константное оно или через переменную подставлено. попробую)
пробелы удалить конечно можно, но IndicatorRelease(handle) в тестере 5ки не работает, так доки говорят. Да и как то идею не понимаю, хендл же получен, имя уже не при чем в дальнейшем, константное оно или через переменную подставлено. попробую)
помнится(хотя память может и изменить) было где-то property или свойство советника отвечающее за "отображать/нет индикаторы советника по завершению"..
что-то беглый поиск по справке показывает что нет такого, возможно в процессе "делаем терминал лучше", получилось как всегда :-)
у вас выходит что в тестере советник-то работу завершил, но хендл индикатора использует ещё и сам тестер для отображения результатов и DeInit индикатора не вызывается.
помнится(хотя память может и изменить) было где-то property или свойство советника отвечающее за "отображать/нет индикаторы советника по завершению"..
что-то беглый поиск по справке показывает что нет такого, возможно в процессе "делаем терминал лучше", получилось как всегда :-)
у вас выходит что в тестере советник-то работу завершил, но хендл индикатора использует ещё и сам тестер для отображения результатов и DeInit индикатора не вызывается.
Да, так и есть, именно ДеИнит индикатора не вызывается, вот про хендл не скажу, вроде как по закрытию окна тестера должен сбросится. Но файл остается привязанным к терминалу, (открытым терминалом) и остается только закрывать терминал.