Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поделись программой в CodeBase. Получи доступ к миллионам трейдеров!
ramnek
149
ramnek 2015.10.12 14:49 

Добрый вечер

Знаю, что подобные темы уже были.. но в них применялись решение, которое мне не подходит..

 Что у меня имеется... Значит есть робот, который играет на EURUSD (точнее 4 робота, но это не важно), таймфрейм = 1минута.

Через часов 7 начались сыпаться ошибки:

"Memory handler: cannot allocate ** bytes of memory"

и что-то еще с AddTick error

на графике бары больше не рисовались...

У меня следующие вопросы:

1) я так понимаю, что этот косяк лечится настройкой "макс.баров в окне".. но получается опять ситуация, что когда-нибудь он достигнет этого числа и опять придеться перезагружать терминал.. а я бы этого не хотел

2) эта ошибка мешает работе эксперта? или ему в принципе пофигу, что график не обновляется?

PS скажите, как вы боретесь с этим...

Спасибо 

Ihor Herasko
8445
Ihor Herasko 2015.10.12 15:21  
ramnek:

Добрый вечер

Знаю, что подобные темы уже были.. но в них применялись решение, которое мне не подходит..

 Что у меня имеется... Значит есть робот, который играет на EURUSD (точнее 4 робота, но это не важно), таймфрейм = 1минута.

Через часов 7 начались сыпаться ошибки:

"Memory handler: cannot allocate ** bytes of memory"

и что-то еще с AddTick error

на графике бары больше не рисовались...

У меня следующие вопросы:

1) я так понимаю, что этот косяк лечится настройкой "макс.баров в окне".. но получается опять ситуация, что когда-нибудь он достигнет этого числа и опять придеться перезагружать терминал.. а я бы этого не хотел

2) эта ошибка мешает работе эксперта? или ему в принципе пофигу, что график не обновляется?

PS скажите, как вы боретесь с этим...

Спасибо 

Не только. Посмотрите, что прикреплено к графикам. Скорее всего, используется много индикаторов. Нужно какими-то из них (или всеми) пожертвовать. Также, возможно, сам советник использует вызов каких-то индикаторов через iCustom. В таком случае можно попробовать переделать эти вызовы на расчет значений прямо в советнике (трудоемко, но результат того стоит).

Насчет уменьшения максимального количества баров - тоже решение. Непонятно, почему Вы решили, что оно плохое. Ну достигнет терминал заданного количества, причем, скорее всего, сразу же. Почему его при этом нужно перезагружать? 

ramnek
149
ramnek 2015.10.12 15:29  

Scriptong

ни одного индикатора не использую.. график чистые бары.. и в советнике тоже не вызываются внешние индикаторы.. только все дефолтное.. типо iMACD

>Почему его при этом нужно перезагружать? 

потому что когда сыпятся одни ошибки в журнале.. это смущает

 

кстати, так эти ошибки влияют вообще на работу эксперта? 

MetaQuotes
Админ
24393
Renat Fatkhullin 2015.10.12 16:10  

К пятнице мы выпустим бета-версию нового терминала МТ4, у которого стоит очень экономичный и агрессивный режим освобождения ранее занятой памяти.

Он как раз успешно борется со случаями, когда из экспертов активируются большие исторические данные.

Бета-версия будет доступна на сервере MetaQuote-Demo.

Ihor Herasko
8445
Ihor Herasko 2015.10.12 16:20  
ramnek:

Scriptong

ни одного индикатора не использую.. график чистые бары.. и в советнике тоже не вызываются внешние индикаторы.. только все дефолтное.. типо iMACD

Стандартные индикаторы при большой глубине истории занимают много памяти. Так, чаще всего, требуется знать значения индикатора на 1-2 барах от текущего. В то же время значения индикатора хранятся для всех исторических баров. Здесь как раз выход - сделать свой вариант расчета для нужного количества баров. При таком подходе расчет индикатора не должен работать медленнее (а то и быстрее). Но более рациональное использование памяти - гарантировано. Формулы для расчета технических индикаторов есть - https://ta.mql4.com/ru/indicators

 

>Почему его при этом нужно перезагружать? 

потому что когда сыпятся одни ошибки в журнале.. это смущает

Они не пропадут после перезагрузки. Разве что на какое-то небольшое время.

 

кстати, так эти ошибки влияют вообще на работу эксперта? 

Сами ошибки - никак. А вот то, на что они указывают, существенно. Эксперт будет оперировать неверными данными (в худшем случае) или вообще не будет работать, т. к. новые тики не приходят (в лучшем случае).
Алексей Тарабанов
7220
Алексей Тарабанов 2015.10.12 22:26  
Scriptong:

Стандартные индикаторы при большой глубине истории занимают много памяти. Так, чаще всего, требуется знать значения индикатора на 1-2 барах от текущего. В то же время значения индикатора хранятся для всех исторических баров. Здесь как раз выход - сделать свой вариант расчета для нужного количества баров. При таком подходе расчет индикатора не должен работать медленнее (а то и быстрее). Но более рациональное использование памяти - гарантировано. Формулы для расчета технических индикаторов есть - https://ta.mql4.com/ru/indicators

Они не пропадут после перезагрузки. Разве что на какое-то небольшое время.

Сами ошибки - никак. А вот то, на что они указывают, существенно. Эксперт будет оперировать неверными данными (в худшем случае) или вообще не будет работать, т. к. новые тики не приходят (в лучшем случае).

Так, речь об адресном пространстве данных, или об адресном пространстве ком анд? Вы, вообще, говорите об адресации: возможно - о проблеме управления стеком, Ренат - о чистке исторических данных, мои наблюдения за собственными программами наводят на мысль о том, что память данных нужно иначе не высвобождать, а распределять. 

ЗЫ Тяжела и неказиста жизнь простого программиста (: 

ЗЫ* Мои искренние извинения за недавний пьяный беспредел и искренняя признательность модератору, усыпившему меня на сутки. 

Ihor Herasko
8445
Ihor Herasko 2015.10.13 07:08  
tara:

адресном пространстве ком анд?

Однозначно в анналы ))

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий