← Zurück

Оперативная память

Здравствуйте. У меня проблема с возрастанием занимаемой оперативной памяти

при запуске программы, идет нагрузка на цп 90%, и объем оперативной памяти увеличивается с шагом 1-2 мб, при достижении примерно 125 мб, рост прекращается, и нагрузка на цп падает до 2%

я думаю это из-за полученния сделок, Quik наверное экспортирует все сделки за сеанс через dde при первоначальном подключении к нему можно ли как-то фильтровать сделки, и выставить ограничение на максимальное колличество хранящихся сделок в боте? либо при запуске получить не все данные, а последние N сделок

War dieses Thema hilfreich?

Thema teilen

Kommentare (16)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

Можно - средствами квика, там есть фильтрация таблиц.

art.tsgnet
art.tsgnet Autor

А программно никак? просто я выбираю инструмент, которым буду играть, и чтоб не лезть в квик и менять фильтрацию на другой инструмент, сделать это из бота

Alexander
Alexander

RegisterTrades

art.tsgnet
art.tsgnet
art.tsgnet Autor

Спасибо)

art.tsgnet
art.tsgnet Autor

А в функции StartExport обязательно указывать TradesTable если я использую RegisterTrades?

а то котировки не хотят идти, если просто RegisterTrades вызвать

Alexander
Alexander

естественно обязательно. но registertrades вам просто фильтр в квике установит. ещё раз говорю - проще самому в квике выставить.

art.tsgnet
art.tsgnet Autor

только он все ровно этот фильтр применяет после того как загрузит все сделки

Alexander
Alexander

Сделайте вначале RegisterTrades или настройте таблицу в квике. Только после этого запустите робота и экспорт

art.tsgnet
art.tsgnet Autor

Не работает что-то вот допустим я сделал фильтр в Quik, чтоб сделки в таблице были только по одной бумаге LKOH все получает, строит график, потом я в программе(своей) меняю инструмент, и делаю trader.UnregisterTrades(lkoh) а потом trader.RegisterTrades(new_security) а в quik в таблице сделок как шли LKOH так и идут

и как вы посоветовали, сначало RegisterTrades с инструментов интересующим, а потом StartExport тоже не хочет работать, получает все равно все сделки по всем инструментам

Alexander
Alexander

Протестировал у себя сейчас - работает. Тестировал на 4.0.23 и 4.1

art.tsgnet
art.tsgnet Autor

значит буду искать у себя ошибку, у меня 4.0.21 версия

а есть ли возможность выгрузить данные о сделках неиспользуемых инструментов? а то при первоначальной загрузке, если все сделки грузит, то занимает памяти ~150мб, а если по одной только бумаге сделки то 80 где-то, дак вот если я делаю Unregister всех ненужных инструментов, памяти не убавляется, есть ли возможность выгрузить вручную?

Alexander
Alexander

У вас всё остаётся в Trader.Trades, т.е. нет. А в нынешних реалиях 150мб в оперативке - большая проблема разве? :)

Повторюсь ещё раз - для квика пользоваться RegisterTrade \ Unregistertrades не совсем верно. Лучше настроить фильтр сразу в квике только для тех инструментов, которые нужны. А не так что посреди работы мы перенастраиваем экспорт.

Не забывайте что это квик и изменение фильтров происходит у него не мгновенно.

art.tsgnet
art.tsgnet
art.tsgnet Autor

Но она же постоянно увеличивается, за пять минут до 180, боюсь представить что будет в конце дня причем, та же Quik с тем же объемом сделок занимает оперативной памяти 25 мб было бы хорошо, если б был свой внутренний фильтр на сделки, то есть экспортировал бы через dde все, но записывал в память только определенные

Alexander
Alexander

У меня к концу дня робот не занимает более 150-200мб в памяти при работе через квик Сейчас - 40.

И я также экспортирую поток всех сделок (по фьючу ртс).

art.tsgnet
art.tsgnet Autor

наверно уже достал с вопросами) я решил поверить вам, что 150 мб это норма, и теперь хочу сделать чтобы при первоначальной загрузки программы, пока все данные грузятся с квика (котировки, инструменты и прочее , при этом проц почти 90% нагружен, и память растет) у меня было окно ожидания (типа текста "Подождите программа грузится ..." ) вот, предусмотрена ли в S# возможность узнать, загружены ли все данные для первоначальной работы, или нет или самому делать? (получил инструменты, получил заявки, и т.д. ) ?

Alexander
Alexander

для квик шлюза-делать самому в виде простейшей отметки по времени для плазы - есть метод IsOnline

art.tsgnet