Ошибки, баги, вопросы - страница 3608
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В сервисдеск не открывали тикет?
Нет. Давно пишу только на форуме.
Мне нужно провести длительный дебаг на определенной ситуации расположения позиций и отложек.
Поэтому хочу в момент, когда произойдет нужная ситуация с позициями и отложками, оборвать связь терминала с торговым сервером. Дабы зафиксировать ее (ситуацию) в терминале для дебага.
Как сделать обрыв связи?
Логин к тому же счету, но с неправильным паролем поможет? Не пропадает окружение в этом случае?
Если да, можно пробовать. Для 4ки велосипед на подобие этого у меня кажется есть, для пятерки нужно пилить.
Логин к тому же счету, но с неправильным паролем поможет? Не пропадает окружение в этом случае?
Пропадает.
Пока два решения.
Через код (отрубает сетевуху).
Руками (отрубает терминал).
Когда будет присутствовать возможность руками отключить, буду использовать SimpleWall. В одно нажатие отключает/подключает Терминал к сети.
Предложение для MQL
Добавьте возможность программно запросить версию программы
Сейчас можно получить MQL_PROGRAM_NAME Имя запущенной MQL5-программы
Будет хорошо если можно будет запросить и версию программы.
Предложение для MQL
Добавьте возможность программно запросить версию программы
Сейчас можно получить MQL_PROGRAM_NAME Имя запущенной MQL5-программы
Будет хорошо если можно будет запросить и версию программы.
#define VERSION "1.01"
#property version VERSION
void OnStart() {
Print("Version %s",VERSION);
}
#define VERSION "1.01"
#property version VERSION
void OnStart() {
printf("Version %s",VERSION);
}
А ларчик просто открывался)))
Спасибо!
Print(i *= (i = 5)); и Print(j = j * (j = 5))
Ну это выглядит логично, но на всякий случай спросил у deepseek
Print(i *= (i = 5)); и Print(j = j * (j = 5)) идентичны?
Нет, выражения Print(i *= (i = 5)); и Print(j = j * (j = 5)); не идентичны, хотя на первый взгляд могут показаться похожими. Давайте разберем их поведение.
1. Print(i *= (i = 5));
Это выражение можно разбить на следующие шаги:
(i = 5) — переменной i присваивается значение 5.
i = ... — оператор *= умножает текущее значение i на результат выражения в скобках. Поскольку i уже равно 5, это эквивалентно i = i * 5, то есть i = 5 * 5.
В итоге i станет равным 25.
Результат выражения i *= (i = 5) будет 25, и это значение передается в функцию Print.
2. Print(j = j * (j = 5));
Это выражение работает иначе:
(j = 5) — переменной j присваивается значение 5.
j * ... — значение j до выполнения (j = 5) используется в умножении. Если j до этого было неопределено или равно 0, то результат будет 0 * 5 = 0.
Результат выражения j = j * (j = 5) будет 0, и это значение передается в функцию Print.
Ключевые различия:
В первом случае (i *= (i = 5)) сначала выполняется присваивание i = 5, а затем умножение на новое значение i.
Во втором случае (j = j * (j = 5)) значение j до присваивания j = 5 используется в умножении, что может привести к другому результату.
Вывод:
Эти выражения не идентичны и могут давать разные результаты в зависимости от начального значения переменных.
Ну это выглядит логично, но на всякий случай спросил у deepseek
Print(i *= (i = 5)); и Print(j = j * (j = 5)) идентичны?
Нет, выражения Print(i *= (i = 5)); и Print(j = j * (j = 5)); не идентичны, хотя на первый взгляд могут показаться похожими. Давайте разберем их поведение.
1. Print(i *= (i = 5));
Это выражение можно разбить на следующие шаги:
(i = 5) — переменной i присваивается значение 5.
i = ... — оператор *= умножает текущее значение i на результат выражения в скобках. Поскольку i уже равно 5, это эквивалентно i = i * 5, то есть i = 5 * 5.
В итоге i станет равным 25.
Результат выражения i *= (i = 5) будет 25, и это значение передается в функцию Print.
2. Print(j = j * (j = 5));
Это выражение работает иначе:
(j = 5) — переменной j присваивается значение 5.
j * ... — значение j до выполнения (j = 5) используется в умножении. Если j до этого было неопределено или равно 0, то результат будет 0 * 5 = 0.
Результат выражения j = j * (j = 5) будет 0, и это значение передается в функцию Print.
Ключевые различия:
В первом случае (i *= (i = 5)) сначала выполняется присваивание i = 5, а затем умножение на новое значение i.
Во втором случае (j = j * (j = 5)) значение j до присваивания j = 5 используется в умножении, что может привести к другому результату.
Вывод:
Эти выражения не идентичны и могут давать разные результаты в зависимости от начального значения переменных.
Остаются вопросы к приоритетам. Умножение разве приоритетнее расчёта выражения в скобках?