Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Хорошо, перефразирую. В рамках mql примерно возможен, в зависимости от тактовой частоты процессора.
А как же ШИМ? - импульсный сигнал постоянной частоты и переменной скважности.
Он не задаёт постоянство?
Для начала почитайте, что такое функция WinAPI Sleep, и что она реально делает
PS Windows не является системой реального времени
Для начала почитайте, что такое функция WinAPI Sleep, и что она реально делает
PS Windows не является системой реального времени
Кхм, стесняюсь спросить, причём тут WinAPI Sleep?
Когда у нас речь за микросекундный слип
Индивидуально, под свой процессор можно определить частоту таймера и рассчитать количество повторений.
То есть на mql можно написать свой MicrosecondCount, но смысл? Стандартного хватает.
Кхм, стесняюсь спросить, причём тут WinAPI Sleep?
Когда у нас речь за микросекундный слип
Индивидуально, под свой процессор можно определить частоту таймера и рассчитать количество повторений.
То есть на mql можно написать свой MicrosecondCount, но смысл? Стандартного хватает.
Свой ожидающий слип без переключения контекста сьест свое ядро на 100%.
Это жуткий метод программирования. Не дай бог такой код просочится в маркет.
Свой ожидающий слип без переключения контекста сьест свое ядро на 100%.
Это жуткий метод программирования. Не дай бог такой код просочится в маркет.
А не кто не отрицал, что хардкор ))
Если покажите пример переключения контекста, может получится улучшить?
Вот загрузка процессора для µsSLEEP(µsRange), на VirtualBox где выделено всего 2 ядра, 4 потока.
Майнеры похлеще жгут ))
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Sequence
fxsaber, 2020.10.13 12:54
Пример советника, который убьет большинство VPS.Запускаем его на нескольких чартах разных символов. Для автоматизации сего действия использовал этот скрипт с inAmount = 5.
Результат.
Больше 4 Gb памяти потребовал Терминал для запуска этих шести советников. Заметьте, это нужно только для инициализации, но не для работы этих советников. Представьте, что запускаете Терминал с висящими советниками в нем. Если нет честных свободных 4 Gb RAM - почти катастрофа.
Теперь уберем комментарий этой строки в исходнике.
Тем самым включив последовательную инициализацию советников.
Смотрим на результат (после перекомпиляции).
На запуске советников удалось уменьшить потребление памяти Терминалом более, чем на 2.5 Gb. Вероятность VPS-катастрофы (и слабых домашних машин) значительно уменьшилась.
Вот так оба запуска выглядят в динамике.
Последовательный запуск растянул общую инициализации по времени, но сумел удержать Терминал от огромного потребления ОЗУ.
На верхнем и нижнем графиках хорошо виден процесс параллельной инициализации(левый высокий пик) и шести последовательных инициализаций (шесть средних пиков).
ЗЫ Во время экспериментов выявился неприятный нюанс со Sleep - см. исходник.
Прошу как-то разрешить насильно освобождать память после использования CopyTicks. Чтобы не создавать вот такие Sleep-костыли.
Прошу порекомендовать самый дешевый по потреблению памяти способ запроса истории тиков на заданном интервале.
по моему Вы ищете не дешевый, а способ быстро освобождать память
как вариант проверить:
- обернуть в класс динамический массив MqlTick Ticks[] и обьект создавать через new ( т.е. тоже динамический обьект ), удалять когда не нужен
- то же самое, но со структурой, но в локальной области видимости ( или функция или локальный блок { } - или цикл с одной итерацией ? ), структуры не так работают как классы - переписал большую часть кода своего ЕА уйдя от классов и заменив их структурами данных, ощутимо возросла скорость оптимизации - может субьективно - может новые билды быстрее работают
- попробовать добавить в деструктор ArrayFree()
по моему Вы ищете не дешевый, а способ быстро освобождать память
Не освобождает Терминал память. MQL-переменные не при чем.
Не освобождает Терминал память. MQL-переменные не при чем.
а если принудительно размер задать = 1 ?
а если сделать^
а если
После вызова CopyTicks Терминал несколько секунд держит все данные в памяти. На тот случай, если кто-то захочет повторно кусок тиковой истории прочесть.
Т.е. количество так потребляемой Терминалом памяти никак не зависит от размеров MQL-переменных.
Задача заставить Терминал принудительно освободить память.