Ошибки, баги, вопросы - страница 324

 
Urain:

В своё время не прояснил этот вопрос теперь мучаюсь в сомнениях.

Как правильно резервировать память?

так

или так

И поправьте справку, а то очень двусмысленно.

ЗЫ В приведённых вариантах подразумевается что размер распределённой памяти с учётом резервирования должен быть 2016.

На данный момент работает следующим образом

ArrayResize(array,10,2000);

При этом будет выделен буфер на 2010 элементов и 10 из них будет доступно.

Вероятно в ближайшее время это может измениться.

 
alexvd:

На данный момент работает следующим образом

При этом будет выделен буфер на 2010 элементов и 10 из них будет доступно.

Вероятно в ближайшее время это может измениться.

А почему не 2000 буферов из которых доступны 10?

Так логичней на мой взгляд.

 
alexvd:

На данный момент работает следующим образом

При этом будет выделен буфер на 2010 элементов и 10 из них будет доступно.

...

Я понял, где-то так:

int reserved=0;// размер распределённой памяти
//+------------------------------------------------------------------+
//| изменение размера массива                                        |
//+------------------------------------------------------------------+
int Resize(int size)
  {
   int step=4;// резервирование с шагом 2^4=16
   int new_reserv=0;
   if((size>>step<<step)>=reserved)
     {
      reserved=((size>>step)+1)<<step;
      new_reserv=reserved-size;// сколько памяти нужно дорезервировать      
      ArrayResize(arr,size,new_reserv);      
     }
   else ArrayResize(arr,size);     
   Print("ArrayResize(arr,"+size+","+new_reserv+"); reserved="+reserved);
   return(size);
  }

...

Вероятно в ближайшее время это может измениться.

А что не устраивает в теперешней схеме резервирования?

 

Не знаю баг это или не баг, но при оптимизиции советников основанных на тяжелых индикаторов типа CCFp (Кластерный индикатор)  по окончании прохода на локальном агенте вылетает окошко: Strategy Tester Agent has stopped working. по одному окошку на каждого агента. 

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

 

В коде советника присутсвует 

 void OnDeinit(const int reason)
 {
    IndicatorRelease(CCp_Handle);
 }

Если строка IndicatorRelease(CCp_Handle); закоментирована, то оптимизация проходит без ошибок.

Я не силен в програмировании, но возникает вопрос: Когда нужно в индикаторах и советних использовать данную функцию? Просто у меня в коде самого индикатора CCFp также используется деинициализация с освобождением хендлов кучи мувингов.

Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
Построение мультивалютного индикатора с применением множества промежуточных индикаторных буферов
  • 2010.05.17
  • Alexey Klenov
  • www.mql5.com
В последнее время возрос интерес к кластерному анализу рынка FOREX. MQL5 открывает новые возможности исследования закономерностей движения валютных пар. Важным преимуществом MQL5, по сравнению с MQL4, является возможность использования неограниченного количества индикаторных буферов. В данной статье описан пример построения мультивалютного индикатора.
Файлы:
optim.jpg  580 kb
 
52_rus:

Не знаю баг это или не баг, но при оптимизиции советников основанных на тяжелых индикаторов типа CCFp (Кластерный индикатор)  по окончании прохода на локальном агенте вылетает окошко: Strategy Tester Agent has stopped working. по одному окошку на каждого агента. 

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

Напишите в сервисдеск, пожалуйста. Приложите исходники и условия оптимизации.
 

Участились/удлиннились обрывы подключения.

 

 20110224

...

GI 1 Network 15:02:34 '728041': connection to MetaQuotes-Demo lost

HJ 0 Network 13:19:25 '728041': connecting to an access point with 83 % quality (previous: 83 %)

...


20110302

...

KJ 0 Network 08:53:17 '728041': scanning network for access points

IL 0 Network 08:54:14 '728041': scanning network finished

ME 0 Network 08:54:14 '728041': auto connecting to a better access point with 93 % quality (previous: 61 %)

LK 1 Network 08:54:14 '728041': connection to MetaQuotes-Demo lost

ES 0 Network 12:05:25 '728041': connecting to an access point with 92 % quality (previous: 0 %)

KN 0 Network 12:05:26 '728041': authorized on MetaQuotes-Demo via Access Point 1 Europe

MF 0 Network 12:05:26 '728041': terminal synchronized with MetaQuotes Software Corp.

OR 0 Network 15:08:22 '728041': scanning network for access points

QD 0 Network 15:09:18 '728041': scanning network finished

...


20110303

...

FI 1 Network 21:26:45 '728041': connection to MetaQuotes-Demo lost

PL 0 Network 10:10:49 '728041': connecting to an access point with 83 % quality (previous: 83 %)

...

 
В скрипте хочу использовать внешние переменные, чтобы перед его запуском можно было установить требуемые значение. В МТ4 это реализовывалось с помощью #property show_iputs, а в МТ5 так не получается (там есть #property script_show_inputs , но это ничего не дает). Если кто-нибудь сталкивался с таким вопросом, подскажите, как это сделать.
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
DenisR:
В скрипте хочу использовать внешние переменные, чтобы перед его запуском можно было установить требуемые значение. В МТ4 это реализовывалось с помощью #property show_iputs, а в МТ5 так не получается (там есть #property script_show_inputs , но это ничего не дает). Если кто-нибудь сталкивался с таким вопросом, подскажите, как это сделать.
input-переменные подойдут?
 
Yedelkin:
input-переменные подойдут?
Спасибо, все работает.
 
DenisR:
В скрипте хочу использовать внешние переменные, чтобы перед его запуском можно было установить требуемые значение. В МТ4 это реализовывалось с помощью #property show_iputs, а в МТ5 так не получается (там есть #property script_show_inputs , но это ничего не дает). Если кто-нибудь сталкивался с таким вопросом, подскажите, как это сделать.
Блин... С терминалом в комплекте идёт столько примеров... мама не горюй... к примеру скрипт SymbolInfoSample.mq5
Причина обращения: