Не знаю относится ли это к делу, но может эта информация не будет лишней. Переношу из МТ4 в МТ5 очень большой мультивалютный самообучаемый советник, используя библиотеку MT4Orders.mqh. Советник торгует всеми доступными у брокера парами. Теми, которыми научился торговать в "+", торгует совершая реальные сделки, а теми, что нет - торгует виртуально (учится торговать). Опыт (experience) советника хранится в глобальных переменных. В коде советника нет строк GlobalVariablesDeleteAll
GlobalVariablesDelete(ИмяГлобальнойОпытаСоветника). На всякий случай посмотрел в библиотеке MT4Orders.mqh, здесь тоже нет ни GlobalVariablesDeleteAll, ни GlobalVariablesDelete.
Запускаю советник из MetaEditor кнопкой F5, глобальные созданы, советник торгует, завершаю работу. Глобальные исчезают. В логах никакой информации об удалении глобальных нет. Где я могу найти сведения об удалении моих глобальных? Где-то это наверное прописано? в какой момент, кто удаляет, почему удаляет?
НЕ в тестере, а по F5 - "Отладка на реальных данных". Файл - не вариант, мой вопрос про глобальные.
если трактовать прямо то - Для написания программ на MQL5 в составе торговой платформы предоставляется среда разработки MetaEditor со всеми современными инструментами для написания кода, включающими в себя шаблоны, сниппеты, отладку, профилировку, автозавершение и встроенное версионное хранилище MQL5 Storage.
+ есть целых 2 состояния по которым терминал видит что программа запущена в режиме профилировки или отладки-дебага, а значит должно запускаться изолированно в песочнице, исходя из логики, в мт4 глоб переменные с тестером общие потому что среда общая
MQL_PROFILER |
MQL_DEBUG |
- www.metatrader5.com
... а значит должно запускаться изолированно в песочнице, исходя из логики, в мт4 глоб переменные с тестером общие потому что среда общая
MQL_PROFILER |
MQL_DEBUG |
Не очень понял вашу логику, почему он должен запускаться в песочнице, но: Физически советник запускается не изолированно в тестере (песочнице) а на платформе. Совершает реальные сделки, а не виртуальные а тестере, генерирует реальную прибыль/убыток. Проверяю: папка \Tester\logs пустая, а папки \MQL5\Logs и \MQL5\Files заполнены результатами жизнедеятельности программы. Вопрос остается открытым: Что надо сделать, чтобы глобальные не пропадали? Как увидеть, в какой момент они пропадают?
Здравствуйте, решил попробовать воспроизвести описанную ситуацию. При запуске по F5 - "Отладка на реальных данных" такого эксперта:
int OnInit() { GlobalVariableSet("GB_1", 13); return(INIT_SUCCEEDED); }
глобальная переменная создавалась и оставалась после удаления эксперта или после остановки отладки. Поэтому, может, все-таки где-то есть операция очистки глобальных переменных?
Можете попробовать повторить такой эксперимент у себя - будет ли у вас пропадать глобальная переменная GB_1?
Не очень понял вашу логику, почему он должен запускаться в песочнице, но: Физически советник запускается не изолированно в тестере (песочнице) а на платформе. Совершает реальные сделки, а не виртуальные а тестере, генерирует реальную прибыль/убыток. Проверяю: папка \Tester\logs пустая, а папки \MQL5\Logs и \MQL5\Files заполнены результатами жизнедеятельности программы. Вопрос остается открытым: Что надо сделать, чтобы глобальные не пропадали? Как увидеть, в какой момент они пропадают?
Реальные сделки совершаются за реальные деньги. Ваша программа работает в песочнице.
Глобальные переменные терминала на то так и называются. Если их не удалить после песочницы, то они напакостят в реале.
А так, вообще, они удаляются через 30 суток с момента крайнего обращения.
Здравствуйте, решил попробовать воспроизвести описанную ситуацию. При запуске по F5 - "Отладка на реальных данных" такого эксперта:
глобальная переменная создавалась и оставалась после удаления эксперта или после остановки отладки. Поэтому, может, все-таки где-то есть операция очистки глобальных переменных?
Можете попробовать повторить такой эксперимент у себя - будет ли у вас пропадать глобальная переменная GB_1?
Запускаю советник из MetaEditor кнопкой F5, глобальные созданы, советник торгует, завершаю работу. Глобальные исчезают. В логах никакой информации об удалении глобальных нет. Где я могу найти сведения об удалении моих глобальных? Где-то это наверное прописано? в какой момент, кто удаляет, почему удаляет?
Пара уточнений. Речь идет о глобальных переменных клиентского терминала, доступ к которым осуществляется при помощи функций GlobalVariable...(). Также, из Справки: "Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной."
Тестером стратегий не пользуюсь, окно тестера закрыто. Торговля на клиентском терминале из редактора на реальных данных, а не из ex5, чтобы можно было в любой момент программу остановить и посмотреть, что там происходит. Следов жизнедеятельности программы в папках тестера нет, все следы только в папках терминала. Т.е. очевидно, что торговля НЕ в песочнице.
Первый раз заметил так. Запускал неоднократно, никаких претензий к глобальным не было. 2-3 дня (гораздо меньше 4 недель) программу не трогал. Вернулся - глобальных нет. На форум за помощью обратился, когда такое случилось во второй раз
Сегодня запускал, выгружал, пока глобальные не пропали.
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
GlobalVariablesDelete(ИмяГлобальнойОпытаСоветника). На всякий случай посмотрел в библиотеке MT4Orders.mqh, здесь тоже нет ни GlobalVariablesDeleteAll, ни GlobalVariablesDelete.
Запускаю советник из MetaEditor кнопкой F5, глобальные созданы, советник торгует, завершаю работу. Глобальные исчезают. В логах никакой информации об удалении глобальных нет. Где я могу найти сведения об удалении моих глобальных? Где-то это наверное прописано? в какой момент, кто удаляет, почему удаляет?