Думаю, сама библиотека работы с базой шлет ошибку и, похоже, в ней нет обработки ситуации когда база залочена. В Python такая проблема не возникает, видимо в нем заложено создание очереди и ожидание.
Evgeny Dyuka #: Да, в db_exe() проверяю так и отправляю на повторную попытку. А db_exe() вернет False если 10 раз не получилось (ни разу не возвращал). Думаю, сама библиотека работы с базой шлет ошибку и, похоже, в ней нет обработки ситуации когда база залочена. В Python такая проблема не возникает, видимо в нем заложено создание очереди и ожидание.
Спасибо за ответы.
1. Если хендл базы не получен, то базу закрывать не надо.
2. Если получен INVALID_HANDLE то зачем продолжать выполнение программы? Я думаю в этом случае лучше прервать, return
Я сейчас уже неоднократно пытаюсь открыть и закрыть несуществующую базу и никак не могу получить распечатку ошибки. Думаю, что эта печать идёт в момент создания запросов к базе, которую открыть не получилось.
1. Если хендл базы не получен, то базу закрывать не надо.
2. Если получен INVALID_HANDLE то зачем продолжать выполнение программы? Я думаю в этом случае лучше прервать, return
Я сейчас уже неоднократно пытаюсь открыть и закрыть несуществующую базу и никак не могу получить распечатку ошибки. Думаю, что эта печать идёт в момент создания запросов к базе, которую открыть не получилось.
Сделаю минимальный тестовый эксперт который будет каждую секунду обновлять запись в базе. Запустим его на 10 парах и все будет понятно. Выложу здесь...
Evgeny Dyuka #: Сделаю минимальный тестовый эксперт который будет каждую секунду обновлять запись в базе. Запустим его на 10 парах и все будет понятно. Выложу здесь...
Вот эксперт. Он создает базу (если уже нет) и раз в секунду пишет в нее текущее время. В коде нет ни одного Print(). Запустил на 10 парах, пошли ошибки:
CS 211:44:36.561 Test_DB (EURUSD,M10) database error, database is locked
CS 211:55:27.018 Test_DB (BTCUSD,M10) database error, database is locked
CS 211:55:28.026 Test_DB (BTCUSD,M10) database error, database is locked
CS 211:55:49.177 Test_DB (TRXUSD,M10) database error, database is locked
CS 211:55:51.183 Test_DB (EURUSD,M10) database error, database is locked
CS 211:55:53.182 Test_DB (TRXUSD,M10) database error, database is locked
Что бы получить ошибку надо закрыть и заново запустить MT5 тогда все эксперты начинают работать синхронно.
Хорошо бы: 1. Понять как избавиться от вывода этой ошибки. 2. Придумать шаблонный механизм который бы ставил в очередь в случае недоступности базы.
п.2 я решил тем, что добавил Sleep() с рандомным временем, но это похоже на костыль.
Вот эксперт. Он создает базу (если уже нет) и раз в секунду пишет в нее текущее время. В коде нет ни одного Print(). Запустил на 10 парах, пошли ошибки:
Что бы получить ошибку надо закрыть и заново запустить MT5 тогда все эксперты начинают работать синхронно.
Хорошо бы: 1. Понять как избавиться от вывода этой ошибки. 2. Придумать шаблонный механизм который бы ставил в очередь в случае недоступности базы.
п.2 я решил тем, что добавил Sleep() с рандомным временем, но это похоже на костыль.
UPDATE: перезалил фаил, первый был с ошибкой
Увы, моих знаний не хватает. Хватило только на то, чтобы понять, что ошибка печатается
DatabaseExecute(db, sql);
Возможность проверить доступность перед созданием запроса, увы отсутствует.
Не открываются ордера на сервере, стопов и тейков нет, режимы алго включены и команда на установку проходит, а журналы молчат CTrade class . В тестере работает на реальной торговле молчок. Что проверить?
mwwm #: Не открываются ордера на сервере, стопов и тейков нет, режимы алго включены и команда на установку проходит, а журналы молчат CTrade class . В тестере работает на реальной торговле молчок. Что проверить?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Понятно. Это печатается при попытке работать с db. Надо посмотреть есть-ли проверка валидности хендла db перед использованием базы.
Вот вы вызвали функцию
Попытались открыть db, получили ошибку, отправили сообщение в телеграмм…
А где используете переменную dbmt там проверяете её значение?
или так
Думаю, сама библиотека работы с базой шлет ошибку и, похоже, в ней нет обработки ситуации когда база залочена.
В Python такая проблема не возникает, видимо в нем заложено создание очереди и ожидание.
Спасибо за ответы.
Да, в db_exe() проверяю так и отправляю на повторную попытку. А db_exe() вернет False если 10 раз не получилось (ни разу не возвращал).
Думаю, сама библиотека работы с базой шлет ошибку и, похоже, в ней нет обработки ситуации когда база залочена.
В Python такая проблема не возникает, видимо в нем заложено создание очереди и ожидание.
Спасибо за ответы.
1. Если хендл базы не получен, то базу закрывать не надо.
2. Если получен INVALID_HANDLE то зачем продолжать выполнение программы? Я думаю в этом случае лучше прервать, return
Я сейчас уже неоднократно пытаюсь открыть и закрыть несуществующую базу и никак не могу получить распечатку ошибки. Думаю, что эта печать идёт в момент создания запросов к базе, которую открыть не получилось.
1. Если хендл базы не получен, то базу закрывать не надо.
2. Если получен INVALID_HANDLE то зачем продолжать выполнение программы? Я думаю в этом случае лучше прервать, return
Я сейчас уже неоднократно пытаюсь открыть и закрыть несуществующую базу и никак не могу получить распечатку ошибки. Думаю, что эта печать идёт в момент создания запросов к базе, которую открыть не получилось.
Сделаю минимальный тестовый эксперт который будет каждую секунду обновлять запись в базе. Запустим его на 10 парах и все будет понятно. Выложу здесь...
Интересно. Буду ждать…
Интересно. Буду ждать…
Вот эксперт. Он создает базу (если уже нет) и раз в секунду пишет в нее текущее время.
В коде нет ни одного Print().
Запустил на 10 парах, пошли ошибки:
Что бы получить ошибку надо закрыть и заново запустить MT5 тогда все эксперты начинают работать синхронно.
Хорошо бы:
1. Понять как избавиться от вывода этой ошибки.
2. Придумать шаблонный механизм который бы ставил в очередь в случае недоступности базы.
п.2 я решил тем, что добавил Sleep() с рандомным временем, но это похоже на костыль.
UPDATE: перезалил фаил, первый был с ошибкой
Вот эксперт. Он создает базу (если уже нет) и раз в секунду пишет в нее текущее время.
В коде нет ни одного Print().
Запустил на 10 парах, пошли ошибки:
Что бы получить ошибку надо закрыть и заново запустить MT5 тогда все эксперты начинают работать синхронно.
Хорошо бы:
1. Понять как избавиться от вывода этой ошибки.
2. Придумать шаблонный механизм который бы ставил в очередь в случае недоступности базы.
п.2 я решил тем, что добавил Sleep() с рандомным временем, но это похоже на костыль.
UPDATE: перезалил фаил, первый был с ошибкой
Увы, моих знаний не хватает. Хватило только на то, чтобы понять, что ошибка печатается
DatabaseExecute(db, sql);Возможность проверить доступность перед созданием запроса, увы отсутствует.
Базу открывает, а запрос создать нет возможности.
Не открываются ордера на сервере, стопов и тейков нет, режимы алго включены и команда на установку проходит, а журналы молчат CTrade class . В тестере работает на реальной торговле молчок. Что проверить?
журнал терминала
журнал терминала
Догадался включил логи, не может лот рассчитать. Не понимаю почему на реале не хочет считать?
Догадался включил логи, не может лот рассчитать. Не понимаю почему на реале не хочет считать?
Логов нет, поэтому догадок может быть в разы больше.
Как вариант, при торговле кроссами если в обзоре рынка не выбрана пара с валютой депозита, торговать не будет.
Например торгуем EURJPY, валюта депозита USD, в обзоре рынка должны присутствовать EURUSD и USDJPY.