array out of range при оптимизации в значениях индикатора - страница 5

 
Dmitry Fedoseev:

Выведите размер массива data

Нет, все же есть значение (после остановки оптимизации) Пока копировал файл - перезаписался уже значениями из новой оптимизации - счетчиком Было в нем  значение индюка

Текст по кол-ву элементов

CopyBuffer_size=0

542511296

Файлы:
 
Bid в тестере не работает. 
 
Ask тоже
 
Алексей Тарабанов:
Bid в тестере не работает. 

Не понимаю.

 
Artem Mordvinkin:

Не понимаю.

Замените Bid и Ask на адекватные функции. 

 

Итак, пришло время подвести некоторый итог.

Один локальный агент нормально работает (одно ядро) Работает и обычное тестирование (одно ядро) При оптимизации остальные никак не хотят отрабатывать значения индюков, менять массивы после copybuffer (ну не получилось) и тп Дело не в коде - ничего в нем сверхестественного нет, к тому же все работает на одном ядре оптимизации и на одиночном прогоне тестера. Недавно я сталкивался с проблемой отказа мультивалютника тестироваться с любой парой кроме той, на которой запущен и мы проверяли мои руки - место их роста, степень кривизны, но спасибо разработчикам - в след билде пофиксили баг и все заработало как надо. Не знаю с чем связана текущая проблема, но считаю, что если хотя бы один агент работает как надо, у других нет оснований не работать, ссылаясь на то, что нет данных индюков.

Мне кажется, что все же дело в некоторой рассинхронности обработки данных на стартовом этапе оптимизации, но я не уверен, что прав Либо тик идет один в тестер и многие локальные агенты не успевают (да фиг знает:)) Либо, если на каждом агенте свой тик и свой тайминг, то я просто не знаю что думать.

Надеюсь, что кто-то из уважаемого сообщества сможет помочь мне без отсылок к документации, проверки рук и прочего:) Но я конечно же думаю, что все же сам где-то ошибся и проблема имеет локальный характер - посмотрим:)

Я сделал вывод в OnTester результатов и получил таки то, что должно было быть (файл прикладываю)

CopyBuffer_size=10

CopyBuffer=1.164538511298427

Запись одним своим присутствием в файле свидетельствует о том, что тестер агента дошел до конца, а не отвалился сразу на отсутствии data[0] в массиве - в данном случае записи в файл бы не было

Работает одно ядро как надо:)

Код:

double OnTester(){


   filehandle=FileOpen(InpDirectoryName+"\\CopyBuffer.txt",FILE_READ|FILE_WRITE|FILE_ANSI|FILE_COMMON,"\n");
   
   int count = ArraySize(Envelopes_low[EURUSDId, M15].data);
    FileWrite(filehandle,"CopyBuffer_size="+ count);
    FileWrite(filehandle,"CopyBuffer="+ Envelopes_low[EURUSDId, M15].data[0]);
    
     
  return(param_test);
   
}
UPD Пишу я это подробно для того, чтобы в дальнейшем тот, кто столкнется с проблемой подобного рода, смог бы оперативно получить решение или понять что его нет (в чем я сомневаюсь:)) Всем причастным спасибо на этом промежуточном этапе  Уверен, что разберемся:)
Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
//|                                               Demo_FileWrite.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    | //
Файлы:
 
Dmitry Fedoseev:
В файл можно писать, в общую папку.

Для оптимизатора отсутствие FILE_SHARE_ критично.

 

Я писал, в старте, что данные индюков (их параметры)  грузятся из БД Быть может в этом проблема еще кроется? Может мыть в оптимизаторе при массовом обращении (более одного:))) к БД происходит сбой (пишет и читает перед запуском)?

Оставлю здесь картинку (отваливающиеся ядра) Обратил внимание, что отваливаются рандомно и при этом 05 и 07 раньше всех "занялись делом", потом 01  Может все же БД "виновата"



 

Картинка и последовательность включения агентов в работу навели на правильную мыль

ПРИЧИНА:

перед стартом советник обращается к БД - UPDATE и вот это и было причиной. Перезаписывались названия инструментов в зависимости от брокера в onStart, которые потом забирались для построения индюков Проблема в том, что запись тормозила процесс следующих за записываемым агентом и они, похоже, тупо не могли забрать данные из БД для построения индюков, поскольку пролетали с записью первичных параметров (файл БД был открыт предыдущим агентом и не успевал закрыться до вызова следующего). 

РЕШЕНИЕ

Отключил запись в БД при оптимизации

 
Сергей Таболин:
@Artem Mordvinkin, в коде есть чтение из файлов?

А Ваше сообщение я пропустил Сергей и Вы были очень правы в  определении вектора

И закончилось бы все на пару часов раньше