Здравствуйте. У меня проблема с возрастанием занимаемой оперативной памяти
при запуске программы, идет нагрузка на цп 90%, и объем оперативной памяти увеличивается с шагом 1-2 мб, при достижении примерно 125 мб, рост прекращается, и нагрузка на цп падает до 2%
я думаю это из-за полученния сделок, Quik наверное экспортирует все сделки за сеанс через dde при первоначальном подключении к нему можно ли как-то фильтровать сделки, и выставить ограничение на максимальное колличество хранящихся сделок в боте? либо при запуске получить не все данные, а последние N сделок
Comments (16)
Login or Create account, Log in or register to leave a comment
Можно - средствами квика, там есть фильтрация таблиц.
А программно никак? просто я выбираю инструмент, которым буду играть, и чтоб не лезть в квик и менять фильтрацию на другой инструмент, сделать это из бота
RegisterTrades
Спасибо)
А в функции StartExport обязательно указывать TradesTable если я использую RegisterTrades?
а то котировки не хотят идти, если просто RegisterTrades вызвать
естественно обязательно. но registertrades вам просто фильтр в квике установит. ещё раз говорю - проще самому в квике выставить.
только он все ровно этот фильтр применяет после того как загрузит все сделки
Сделайте вначале RegisterTrades или настройте таблицу в квике. Только после этого запустите робота и экспорт
Не работает что-то вот допустим я сделал фильтр в Quik, чтоб сделки в таблице были только по одной бумаге LKOH все получает, строит график, потом я в программе(своей) меняю инструмент, и делаю trader.UnregisterTrades(lkoh) а потом trader.RegisterTrades(new_security) а в quik в таблице сделок как шли LKOH так и идут
и как вы посоветовали, сначало RegisterTrades с инструментов интересующим, а потом StartExport тоже не хочет работать, получает все равно все сделки по всем инструментам
Протестировал у себя сейчас - работает. Тестировал на 4.0.23 и 4.1
значит буду искать у себя ошибку, у меня 4.0.21 версия
а есть ли возможность выгрузить данные о сделках неиспользуемых инструментов? а то при первоначальной загрузке, если все сделки грузит, то занимает памяти ~150мб, а если по одной только бумаге сделки то 80 где-то, дак вот если я делаю Unregister всех ненужных инструментов, памяти не убавляется, есть ли возможность выгрузить вручную?
У вас всё остаётся в Trader.Trades, т.е. нет. А в нынешних реалиях 150мб в оперативке - большая проблема разве? :)
Повторюсь ещё раз - для квика пользоваться RegisterTrade \ Unregistertrades не совсем верно. Лучше настроить фильтр сразу в квике только для тех инструментов, которые нужны. А не так что посреди работы мы перенастраиваем экспорт.
Не забывайте что это квик и изменение фильтров происходит у него не мгновенно.
Но она же постоянно увеличивается, за пять минут до 180, боюсь представить что будет в конце дня причем, та же Quik с тем же объемом сделок занимает оперативной памяти 25 мб было бы хорошо, если б был свой внутренний фильтр на сделки, то есть экспортировал бы через dde все, но записывал в память только определенные
У меня к концу дня робот не занимает более 150-200мб в памяти при работе через квик Сейчас - 40.
И я также экспортирую поток всех сделок (по фьючу ртс).
наверно уже достал с вопросами) я решил поверить вам, что 150 мб это норма, и теперь хочу сделать чтобы при первоначальной загрузки программы, пока все данные грузятся с квика (котировки, инструменты и прочее , при этом проц почти 90% нагружен, и память растет) у меня было окно ожидания (типа текста "Подождите программа грузится ..." ) вот, предусмотрена ли в S# возможность узнать, загружены ли все данные для первоначальной работы, или нет или самому делать? (получил инструменты, получил заявки, и т.д. ) ?
для квик шлюза-делать самому в виде простейшей отметки по времени для плазы - есть метод IsOnline