Ошибки, баги, вопросы - страница 2504
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Люди, поделитесь информацией. Вы для каких целей используете выравнивание?
это Еното-ориентированное программирование !
увы, без этого никак ;)
это Еното-ориентированное программирование !
увы, без этого никак ;)
Я в курсе. Я же не прошу меня учить ООП. Я спросил, кто в каких целях использует выравнивание?
Люди, поделитесь информацией. Вы для каких целей используете выравнивание?
Это всё очень пригодится в многопоточной среде, я так вижу. Каким боком здесь МКЛ? Да х.з., вопрос задали, вот и встрял.
Ну и вообще - это основы, элементарное понимание необходимо любому приличному программисту.
ЗЫ: ну и тут много фанатов скорости, если начнут всё ровнять по уму, то должны полететь ещё быстрее, в теории по крайней мере.Люди, поделитесь информацией. Вы для каких целей используете выравнивание?
Vict:
ЗЫ: ну и тут много фанатов скорости, если начнут всё ровнять по уму, то должны полететь ещё быстрее, в теории по крайней мере.
В общем-то я такого даже не ожидал:
Код немного переусложнён - я пытался попасть на тот элемент, который не вмещается в кеш-линию и долбить прямо по нему, но не вышло (при большом желании получилось бы наверное, но надоело), а код сильно править не стал. Но так это даже больше впечатляет - всего лишь одно из 16ти сложений выполняется над элементом непопадающим в кеш-линию, тем не менее это даёт ощутимый результат.
ЗЫ: более объективно в данном случае делать RIGHT_ALIGNED через вставки двух short, а не удалением единственного (так добьёмся двух обновлений кеш-линии для обоих случаев). Так ускорение будет скромнее, но всё равно весомо около 1.5 раза.
Кстати в mql значение pack по умолчанию 1 вроде как.
Судя по предыдущему посту, возможно есть смысл всем структурам и классам явно прописывать 8.
Не получается побороть ошибку.
Для демонстрации ошибки взял зигзаг из поставки метатрейдера. Добавил в код дополнительные буферы, взятые из моей программы. Никаких манипуляций с дополнительными буферами не предусмотрено в данном коде. Они просто для демонстрации ошибки.
Вывел данный зигзаг на график EURUSD таймфрейм H1. Закрыл терминал. Из истории удалил все сформированные таймсерии по EURUSD. То есть удалил все файлы *.hcc и *.hc по валютной паре EURUSD. Это сделано для того, чтобы при загрузке терминала началась загрузка файлов .hcc и формирование файлов .hc с чистого листа.
После запуска терминала на графике EURUSD наблюдается множество артефактов. И вот эти артефакты побороть не получается.
Код модифицированного зигзага в виде текста и в виде файла прикладываю.
Предупреждаю, что задание параметров зигзага оставил через #propert.
Все остальные буферы не задаю через #propert, так как у меня все, в том числе и буферы для зигзагов, изменяются программно динамически.
Просьба разработчикам терминала помочь исправить данную ошибку.
Картинка с артефактами:
Не получается побороть ошибку.
Для демонстрации ошибки взял зигзаг из поставки метатрейдера. Добавил в код дополнительные буферы, взятые из моей программы. Никаких манипуляций с дополнительными буферами не предусмотрено в данном коде. Они просто для демонстрации ошибки.
Вывел данный зигзаг на график EURUSD таймфрейм H1. Закрыл терминал. Из истории удалил все сформированные таймсерии по EURUSD. То есть удалил все файлы *.hcc и *.hc по валютной паре EURUSD. Это сделано для того, чтобы при загрузке терминала началась загрузка файлов .hcc и формирование файлов .hc с чистого листа.
После запуска терминала на графике EURUSD наблюдается множество артефактов. И вот эти артефакты побороть не получается.
Код модифицированного зигзага в виде текста и в виде файла прикладываю.
Предупреждаю, что задание параметров зигзага оставил через #propert.
Все остальные буферы не задаю через #propert, так как у меня все, в том числе и буферы для зигзагов, изменяются программно динамически.
Просьба разработчикам терминала помочь исправить данную ошибку.
Картинка с артефактами:
Инициализировать нужно все буферы.
Если нет значения в буфере на баре, то это нужно явно прописать в буфере. Т.е., если рассчитанное значение должно быть выведено в буфер - записываем его в буфер, иначе - записываем пустое значение.
В общем-то я такого даже не ожидал:
Запуски у себя не показали заметной разницы.
Если вместо
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Vict, 2019.07.09 07:17
Data data[32768];
сделать
то происходит замедление в 6 раз!
Инициализировать нужно все буферы.
Если нет значения в буфере на баре, то это нужно явно прописать в буфере. Т.е., если рассчитанное значение должно быть выведено в буфер - записываем его в буфер, иначе - записываем пустое значение.
Извините, пропустил инициализацию. У меня в программе она есть а в примере пропустил.
В аттаче файл с инициализацией. Эффект тот же.
Вопрос к разработчикам остается. Просьба устранить данную ошибку.
-------------
На мой взгляд, происходит следующее. При запуске программы вместе с терминалом размер таймсерий или равен нулю, или какое-то минимальное значение имеет.
Инициализация производится на имеющемся кусочке истории. А при увеличении размера таймсерий под массивы буферов задействуются участки памяти, которые не прошли через инициализацию. И в результате имеем такой эффект.
Пытался устранять этот эффект через события терминала. Все равно на доли секунды артефакты появляются. А это плохо. Такую программу нельзя выпускать в свет.
Исправить можно так. После выделения памяти под буферы сразу очищать эту память. Но как это сделать? Со стороны разработчика приложений для терминала я не нашел такой возможности.