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

 

подскажите пожалуйста что за зверь / откуда / и что с ним делать.
(комп не виснет)
в журнале надпись - MemoryException 47751964592 bytes not available, 0 heapmin result
MT5 B 1940.



 
Pavel Verveyko:

подскажите пожалуйста что за зверь / откуда / и что с ним делать.

поставьте на комп 60+ гигов оперативки )
 

А если серьезно - работает что-нибудь из скриптов\индикаторов советников? Может что-то делали перед этим?

 
TheXpert:

А если серьезно - работает что-нибудь из скриптов\индикаторов советников? Может что-то делали перед этим?

да работает индикатор собственно..один. причина в нём, но пока не найдена точно.
он получает данные из таблицы сделок.

чем эта строчка может грозить?

 
Pavel Verveyko:

он получает данные из таблицы сделок.

в смысле тики запрашивает? а покажите эту строчку
 
TheXpert:
в смысле тики запрашивает? а покажите эту строчку

да и проблема именно в запрашиваемых тиках, сейчас провожу эксперименты: если так

   int rest = CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,0,20000);


то проблемы нет

а изначально написано так:

   datetime mass_temp[];
   int rest2 = CopyTime(_Symbol,_Period,0,1,mass_temp);
   if (rest2 <= 0) {return(false);}
   
   if (timer==2)
   {
      string u = TimeToString(mass_temp[0],TIME_DATE);
      datetime y = StringToTime(u);
      datetime o = y-((3600*24)*3);
      time_stop = (ulong)o*1000;
   }
   
   MqlTick ticks[];
   ArraySetAsSeries(ticks,true);
   int rest = CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,time_stop,-1);
   if(rest > 0 && rest2 > 0)
при первом запуске загружаю 2(3) дня. а при последующих только последние данные
но якобы не хватает памяти при каждом запуске
 
Pavel Verveyko:

да и проблема именно в запрашиваемых тиках, сейчас провожу эксперименты: если так


то проблемы нет

а изначально написано так:

при первом запуске загружаю 2(3) дня. а при последующих только последние данные
но якобы не хватает памяти при каждом запуске

Может где то утечка памяти. Попробуйте последить (через диспетчер задач)  за размером используемой памяти до помещения индикатора на график и после во время его работы.

 
   int rest = CopyTicks(Symbol(),ticks,COPY_TICKS_TRADE,time_stop,-1);

наверно смысл в том что: последний параметр должен быть Uint а у меня там знак -

если поставить 0. то строчка про память не вылазит.

а если я хочу получить все данные до конца массива разве -1 не могу поставить.? что ещё там можно указать ? для массивов вроде какая то константа была
 
Pavel Verveyko:

наверно смысл в том что: последний параметр должен быть Uint а у меня там знак -

если поставить 0. то строчка про память не вылазит.

а если я хочу получить все данные до конца массива разве -1 не могу поставить.? что ещё там можно указать ? для массивов вроде какая то константа была

Тип данных uint это положительные целые числа. Почитайте внимательно документацию по этой функции 

from

[in]  Дата, начиная с которой запрашиваются тики. Указывается в миллисекундах с 01.01.1970. Если параметр from=0, то отдаются последние count тиков.

count

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

 
Vitalii Ananev:

Тип данных uint это положительные целые числа.

знаю , 

 
Pavel Verveyko:

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

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

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicks
  • www.mql5.com
[in]  Количество запрашиваемых тиков. Если параметры from и count не указаны, то в массив ticks_array[] будут записаны все доступные последние тики, но не более 2000. Первый вызов CopyTicks() инициирует синхронизацию базы тиков, хранящихся на жёстком диске по данному символу. Если тиков в локальной базе не хватает, то недостающие тики...
Причина обращения: