Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления - страница 15
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
b3571, какие баги сегодня ловил.
1. Обзор рынка обновляется где-то раз в секунду. Сразу сотня символов. Хотя FPS должен быть за сотню. При этом CopyTicks выдавал все тики, кроме последнего (Обзор рынка). И так на каждом тике.
2. Свежие тики не загружались.
3. Бары определенного символа не строятся, хотя котиры идут.
Все баги вылечивались перезагрузкой терминала. Что-то много за несколько часов работы!
Да есть rates_total, но именно в условии цикла Андрея оно не как не контролируется !
Вместо этого подаётся значение datetime, что вообще для меня нонсенс.
которое больше макс баров 1000000
Это код нормально же работает, когда в цикле контролируется rates_totalРоман, очень прискорбно, что вы не можете прочитать код в несколько строчек. Вам же всё объяснил наш коллега:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления
PapaYozh, 2023.02.06 14:08
Потому, что он хочет найти момент, когда i_Time получит какое-нибудь значение.
И для вас я изменил его, может так понятнее:
Ну или так:
Сути это не меняет.
Мне не нужно в этом индикаторе просчитывать ВСЮ историю. Здесь я ищу первое не нулевое значение iTime(...) с начала истории.
Роман, очень прискорбно, что вы не можете прочитать код в несколько строчек. Вам же всё объяснил наш коллега:
И для вас я изменил его, может так понятнее:
Ну или так:
Сути это не меняет.
Я реально не понимаю вашей задачи. Плюс голова болит ))
"найти момент, когда i_Time получит какое-нибудь значение"
Что значит какое-нибудь?
В моём показанном коде, значение будет получено на первой же итерации цикла.
И дальше по циклу продолжает получать. Пока не пройдёт по заданному lmit.
Затем в зависимости от операторов в цикле
//i>0 расчёт на каждом баре
//i>=0 расчет на каждом тике
получает последнее текущее значение.
А этот ваш код отрабатывает без
if(i_time>0) break;
Я реально не пойму задачи. Извините. Чем смог как говориться.
А этот ваш код отрабатывает без
Отрабатывает, но мне нужно его остановить как только найдётся не нулевое значение i_time. Вам же написал наш коллега.
Вам нужно почитать матчасть, честно. Вот тут в частности https://www.mql5.com/ru/docs/basis/operators/for
Там ничего не написано, что в выражении2 должны быть какие то переменные из выражения1, или вообще какие то конкретные переменные.
Отрабатывает, но мне нужно его остановить как только найдётся не нулевое значение i_time
Вам нужно почитать матчасть, честно. Вот тут в частности https://www.mql5.com/ru/docs/basis/operators/for
Там ничего не написано, что в выражении2 должны быть какие то переменные из выражения1, или вообще какие то конкретные переменные.
Вы сперва говорите. что нужно найти какое-нибудь валидное значение.
Теперь говорите что нужно ещё остановить.
Ну так в моем коде на первой же итерации и остановите тем же оператором break.
Если решение не подходит, так и скажите.
Дело не в матчасти, а в корректно поставленной задаче изначально.
Поэтому изначально и предложил
которое вернёт первое валидное значение на данный момент
Самая первая дата по символу-периоду на данный момент
Если и это то-же не то. Увы я пас.
Вы сперва говорите. что нужно найти какое-нибудь валидное значение.
Теперь говорите что нужно ещё остановить.
Ну так моем коде на первой итерации и остановите тем же оператором break.
Дело не в матчасти, а в корректно поставленной задаче изначально.
Так найти и остановить. Зачем мне все бары отрабатывать.
Роман, я вообще не понимаю, что вы мне пытаетесь объяснить. Что я не правильно код написал? Мне не нужен индикатор с проверкой
Мне нужно было найти первый бар с не нулевым значением с начала истории. А решил её минимальным количеством строк. Зачем мне обсчитывать текущий бар, и тем более все бары? Давайте завершим на этом нашу дискуссию. Прочитайте мой код, там несколько строчек, ничего сложного.
Мне нужно было найти первый бар с не нулевым значением с начала истории.
О чём я и говорю, не корректно поставленная задача, рождает испорченный телефон!
Вот ваше решение без циклов, пример выше.
Удачи.
Вот человек... Вы упустили то, что ищу я этот бар не просто, а с определенной целью. Я всё изложил вот тут подробно. Ознакомьтесь на досуге. Всего вам наилучшего!
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления
Andrey Kaunov, 2023.02.06 13:44
Так, как только появляется новый бар сверх количества TERMINAL_MAXBARS, последний (самый старый) в истории удаляется,и функция не видит. И видит только TERMINAL_MAXBARS в историю.
Причем раньше, после перезагрузке терминала, количество видимых индикатору баров сбрасывалось до TERMINAL_MAXBARS. Но сейчас остаётся таким же, как было при выключении терминала (по значению rates_total индикатора). А на графике при появлении каждого нового бара сверх значения TERMINAL_MAXBARS, старый убирается с графика.
P.S. Это индикатор видит и считает бары, которых в окне графика уже нет. А в окне всё правильно отображается - 10000 баров. Но индикатор, даже после перезагрузки терминала, видит больше баров.
Несостыковка из-за этого получается!
Рашид, вы поставьте индикаторы, что я прикрепил. Вот здесь поправил, чтобы дату бара показывал. Поставьте его, проверьте все. Это не есть правильно! Крайний бар там на скрине в 19:40 (первый бар на графике), но индикатор видит и удалившиеся бары.
Индикатор перестаёт видеть ушедшие в историю бары только после изменения настройки TERMINAL_MAXBARS и перезагрузки терминала. Причём, если просто увеличить TERMINAL_MAXBARS, а терминал не перезагружать, функция iTime(...) начинает видеть ушедшие в историю бары.
Вот здесь покороче:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 3550: улучшения и исправления
Andrey Kaunov, 2023.02.06 18:15
Согласно документации, никаких ограничений по максимуму баров на графике в работе функции iTime и др. нет (в отличие от CopyTime(...)). Следовательно из индикатора данные из таймсерии бара можно взять как из массива time, так и из функции iTime. Причём и iBars возвращает количество баров, равное rates_total.
Здесь точно какая то ошибка или недоработка.
Требуется мне конвертировать индикатор из MQL4. И обращаясь к данным из функций iTime и др., получаю нулевые данные. А это неприемлемо. Бар вроде как есть, согласно функции iBars(...), а данные нулевые.
Это не ошибка. Вы целое умножает на целое = результат тоже - целое.
вы че ребята? я делю целое на целое и должен получать дробное число.. почему 1 выдает?
раньше так не работало.
вы че ребята? я делю целое на целое и должен получать дробное число.. почему 1 выдает?
Гуглите что-нибудь типа "целочисленная арифметика в программировании".