[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 670
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Какова вероятность прихода нового тика до завершения всех текущих рассчётов советника? Мне кажется, только в этом случае данные станут старыми и неактуальными.
проверь сколько у тебя считается код - я тоже, вот недавно сомневался, хватит ли скорости вычисления МТ4 для моего советника, оказалось, что пока хватает с головой, у меня код вычисляется около 18 мсек, т.е. за 1 секунду вы числится 55 раз, тиков приходит от 10 до 70 в минуту, причемесли больше 50 тиков в минуту, то значит идет свеча
вот и попробуй понаблюдать как у тебя код работает, примерно так
вот индикатор, который считает тики - для сверки
ну а если у тебя по цене открытия, извини проглядел, то
OpnPrice =iOpen(NULL,PERIOD_M5,0); можно изменять только на закрытом баре - код выше с условия if (counted != barM1) {
Как изменить количество цифр после запятой у индикатора iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) при вычислении в теле советника? Результат выходит с 4-мя (то-есть 0.0001), а надо, для точности анализа, с 5-ю (например 0.00012). И ведь на график в окне индикатора терминал МТ4 выводит именно 5-ти разрядные значения.
Оператор NormalizeDouble() решит Ваши проблемы.
То-есть, результатом NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5) станет желаемое 0.00012 ?
P.S. Добавил и протестировал - ничего. Просто на выходе 0.00010, а это те же 4 разряда...
Нет, не совсем верно, Roger.
IndicatorDigits() смотрите, Борис. Но его нужно вставить в сам индикатор, т.к. он будет относиться именно к нему, а не к советнику.
P.S. Еще: эта функция годится только для индикатора, для которого у Вас есть код. Тогда его можно будет вызвать с помощью iCustom().
А для тех, которые вызываются "стандартно", как iMACD(), я не знаю правильного решения.
То-есть, результатом NormalizeDouble(iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0),5) станет желаемое 0.00000 ?
Да, правильно. Ключевая фраза была при вычислении в теле советника? И видимо со стандартным индикатором это невозможно (((
Как изменить количество цифр после запятой у индикатора iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0) при вычислении в теле советника? Результат выходит с 4-мя (то-есть 0.0001), а надо, для точности анализа, с 5-ю (например 0.00012). И ведь на график в окне индикатора терминал МТ4 выводит именно 5-ти разрядные значения.
Менять ничего не надо, в стандартных индикаторах точность задается максимальная (до 8 разрядов), вы сделали не правильный вывод о точности выхода данных из за того что, функция Print() выводит по умолчанию до 4 разрядов, в расчетах (в нутрии советников например) используются максимальная точность, что бы это увидеть нужно выводить double через DoubleToStr(), как пример:
и получаем такой выход:
Менять ничего не надо, в стандартных индикаторах точность задается максимальная (до 8 разрядов), вы сделали не правильный вывод о точности выхода данных из за того что, функция Print() выводит по умолчанию до 4 разрядов, в расчетах (в нутрии советников например) используются максимальная точность, что бы это увидеть нужно выводить double через DoubleToStr(), как пример:
и получаем такой выход:
Правильно, правильно, правильно ! ! ! Анатолий - большой респект, а то я уже было зациклился.
Правда жизни такова - "одна голова хорошо, а две - лучше" (цит.)
Менять ничего не надо, в стандартных индикаторах точность задается максимальная (до 8 разрядов)
Вот-вот, у меня тоже такое подозрение было :)