Так ведь расчет идет только по последнему бару (1 индикатор). Я уже этому индикатору урезал расчет. Вместо от лимит до 0 сделал от 2 до 0. На каждом тике переменные меняют значения, в буфера значения не складываются.
grell: Так ведь расчет идет только по последнему бару (1 индикатор). Я уже этому индикатору урезал расчет. Вместо от лимит до 0 сделал от 2 до 0. На каждом тике переменные меняют значения, в буфера значения не складываются.
ну нам отсюда не видно :)
я про такие конструкции:
if (li_12 > Bars) li_12 = Bars; ArrayResize(lda_16, li_12); ArraySetAsSeries(lda_16, TRUE); ArrayResize(lda_20, li_12); ArraySetAsSeries(lda_20, TRUE); может они и сьедают всю память при расчетах, а буфера это не то
grell:
За полчаса набегает 1.5Г, висит всего один индикатор. Расчет ведется всего по 2 последним барам, но по 14 парам и на 5 ТФ.
В таких условиях лучше перенести код индюка в эксперт, а использовать буфера обмена - это непрофиссионально и очень неэффективно (требует миллион совершенно ненужных действий).
Только в этих условиях можно хоть что-то оптимизировать. Ну можно также баров уменьшить на графике и посмотреть как влияет.
Дык ведь речь об индикаторе, советник не нужен. Делал специально для ручной торговли.
Но ведь индикатор же не использует всю историю, он даже не знает сколько баров в истории (убрал расчет).
Тогда нужно смотреть шото в коде индюка если нет iCustom. Например, частое изменение размерности массива или передача копии массива в фукцию заместо ссылки.
В глобальных переменных чисто. Может как-то можно выгрузить часть памяти?
да никак - этим заведует винда - сколько процесс попросит столько она и выделит
попробуйте в индикаторах использовать меньшее количество буферов, попробуйте перейти на статический массив - т.е. ограничить размерностью
Так ведь расчет идет только по последнему бару (1 индикатор). Я уже этому индикатору урезал расчет. Вместо от лимит до 0 сделал от 2 до 0. На каждом тике переменные меняют значения, в буфера значения не складываются.
ну нам отсюда не видно :)
я про такие конструкции:
if (li_12 > Bars) li_12 = Bars;
ArrayResize(lda_16, li_12);
ArraySetAsSeries(lda_16, TRUE);
ArrayResize(lda_20, li_12);
ArraySetAsSeries(lda_20, TRUE);
может они и сьедают всю память при расчетах, а буфера это не то
При каждом вызове iCustom с оригинальнвм набором значений параметров для него заводятся копии индикаторных буферов. На всю историю.
P.S. То есть каждый такой вызов эквивалентен добавлению нового экземпляра индикатора на график.
За полчаса набегает 1.5Г, висит всего один индикатор. Расчет ведется всего по 2 последним барам, но по 14 парам и на 5 ТФ.
Только в этих условиях можно хоть что-то оптимизировать. Ну можно также баров уменьшить на графике и посмотреть как влияет.
Дык ведь речь об индикаторе, советник не нужен. Делал специально для ручной торговли.
Но ведь индикатор же не использует всю историю, он даже не знает сколько баров в истории (убрал расчет).
Дык ведь речь об индикаторе, советник не нужен. Делал специально для ручной торговли.
Но ведь индикатор же не использует всю историю, он даже не знает сколько баров в истории (убрал расчет).
У iCustom расчет из 8 индикаторов (только последний бар). Может и там расчет урезать?