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

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

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



TheXpert
18274
TheXpert  
Pavel Verveyko:

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

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

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

Pavel Verveyko
4353
Pavel Verveyko  
TheXpert:

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

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

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

TheXpert
18274
TheXpert  
Pavel Verveyko:

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

в смысле тики запрашивает? а покажите эту строчку
Pavel Verveyko
4353
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) дня. а при последующих только последние данные
но якобы не хватает памяти при каждом запуске
Vitalii Ananev
10570
Vitalii Ananev  
Pavel Verveyko:

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


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

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

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

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

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

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

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

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

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

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

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

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

from

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

count

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

Pavel Verveyko
4353
Pavel Verveyko  
Vitalii Ananev:

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

знаю , 

Vitalii Ananev
10570
Vitalii Ananev  
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() инициирует синхронизацию базы тиков, хранящихся на жёстком диске по данному символу. Если тиков в локальной базе не хватает, то недостающие тики...
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий