MemoryException 47751964592 bytes not available, 0 heapmin result. что это и как с этим бороться? - страница 2

 
Vitalii Ananev:

https://www.mql5.com/ru/docs/series/copyticks

скажите пожалуйста а как мне получить данные в CopyTicks ВСЕ от указанной даты ? что можно указать в CopyTicks кроме -1 ?

-1 работает) только строчку выдаёт про память

 
Pavel Verveyko:


-1 работает) только строчку выдаёт про память

Работает, но не правильно. Если вы знаете, что uint это положительные целые числа, то зачем упорно пытаетесь ему впихнуть отрицательное число. В этом случае происходит неявное преобразование типов int в uint и в результате этого получается непредсказуемый результат.

В документации все написано. Количество запрашиваемых тиков. Если параметры from и count не указаны, то в массив ticks_array[] будут записаны все доступные последние тики, но не более 2000.

То есть надо получать данные порциями по 2000 тиков. Сразу все тики получить нельзя.

 
спасибо Вам за помощь, да уж( я думал есть разумный способ загрузки тиков..
 
Pavel Verveyko:
спасибо Вам за помощь, да уж( я думал есть разумный способ загрузки тиков..

Что есть то есть. А зачем вам так много тиков? Они действительно сожрут у вас прорву оперативной памяти. Не зря сделано это ограничение.

 
Vitalii Ananev:

Что есть то есть. А зачем вам так много тиков? Они действительно сожрут у вас прорву оперативной памяти. Не зря сделано это ограничение.

кстати а закачать можно и больше 2000 намного больше
если указать это явно. и это не вызывает той строчки про памяти.
строчка вылазит только из за минуса в функции( но работает она всё равно правильно. данные скачиваются до конца массива.

это эксперимент с таблицей сделок за вчера и сегодня. отсюда и тиков множество
 
Pavel Verveyko:

кстати а закачать можно и больше 2000 намного больше
если указать это явно. и это не вызывает той строчки про памяти.
строчка вылазит только из за минуса в функции( но работает она всё равно правильно. данные скачиваются до конца массива.

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

 
Vitalii Ananev:

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

вот так грузит 

MqlTick ticks[];
   int rest = CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,D'2019.02.13 00:00',429496729);
UINT_MAX вылазит строчка про память а вот если убрать последнюю цифру и написать цифрами то работает.. но всё равно это бред( почему нельзя дать возможность получить все данные(((((( по константе WHOLE_ARRAY или -1
 
Pavel Verveyko:

вот так грузит 

UINT_MAX вылазит строчка про память а вот если убрать последнюю цифру и написать цифрами то работает.. но всё равно это бред( почему нельзя дать возможность получить все данные(((((( по константе WHOLE_ARRAY или -1

А вы попробуйте (UINT_MAX -1) .

 
Vitalii Ananev:

А вы попробуйте (UINT_MAX -1) .

это было первое) после UINT_MAx но почему то нет( только если её написать цифрами и убрать последнее число , может там какой то резерв технический в функции установлен.

 
Pavel Verveyko:

вот так грузит 

UINT_MAX вылазит строчка про память а вот если убрать последнюю цифру и написать цифрами то работает.. но всё равно это бред( почему нельзя дать возможность получить все данные(((((( по константе WHOLE_ARRAY или -1
 int rest = CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,(ulong)D'2019.02.13 00:00' * 1000,50000);
Причина обращения: