MetaTrader 4 bild 214

 
Что вдруг случилось?

Сегодня 26.03.2008 30-минут назад терминал bild 213 проапдейтился до bild 214

И сразу УПАЛО ТЕСТИРОВАНИЕ И ОПТИМИЗАЦИЯ ЭКСПЕРТА :(

2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: cannot resize the array
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error
2008.03.26 19:05:08 2007.01.01 00:00 sgnLib EURUSD,H1: ArrayInitialize function internal error

Рекомпиляция эксперта и библиотек в него входящих положение дел не исправило.

Что случилось с функцией ArrayInitialize ???
 
По всей видимости, Вы пытаетесь выставить чрезмерно большой размер массива.

Код для примера:
int start()
  {
   double arr[];
//----
   ArrayResize(arr,2000000000);
   ArrayInitialize(arr,2000000000);
//----
   return(0);
  }
Выдает как раз такие строки в лог файле:
Test EURUSD,M1: ArrayInitialize function internal error
Test EURUSD,M1: cannot resize the array
Явным образом контролируйте размер выделяемых блоков (особенно в библиотеках), пожалуйста.

В 214 билде мы исправили ошибку с непереинициализируемостью статических переменных в библиотеках после окончания работы эксперта. Теперь библиотеки принудительно переинициализируются после выполнения функции deinit. Поищите причины в своих библиотеках.
 
Сразу упало тестирвание и оптимизация. Ни одного прохода не прошло? А если запустить тестирование без оптимизации?
 
Доброе время суток.

Ренат,

я не совсем подробно описал ситуацию.

1. перед апдейтом на 214 на терминале работала оптимизация эксперта, а на графиках N-количество копий оптимизируемого эксперта

2. после перезапуска эксперта по завершении апдейта, я решил продолжить процесс оптимизации. Вот эдесь-то и обнаружилось следующее

а- после начала оптимизации 1-й проход завершился успешно (результаты, статистика и пр.), все следующие проходы проскочили за пару секунд с нулевыми результатами

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

С 213-м билдом (как и с предыдущими) этот код работает и на тестах и в реальном времени.

Относительно размеров массивов - они вполне разумные (если не сказать малые)


#define   DISPLAY_INDIC_MAX  19
// trend dimensions
double UP[][DISPLAY_INDIC_MAX][2];
double DOWN[][DISPLAY_INDIC_MAX][2];
double TOP[][DISPLAY_INDIC_MAX][2];
//double BOT[][DISPLAY_INDIC_MAX][2];
double TRD[][DISPLAY_INDIC_MAX][2];
double TRDS[][DISPLAY_INDIC_MAX][2];

void nnsInit(){ 
  if(inited) return;
  tfInit();
  tfNUM=tfSize();
  ArrayResize(UP,tfNUM);
  ArrayInitialize(UP,0);
  ArrayResize(DOWN,tfNUM);
  ArrayInitialize(DOWN,0);
  ArrayResize(TOP,tfNUM);
  ArrayInitialize(TOP,0);
  ArrayResize(TRD,tfNUM);
  ArrayInitialize(TRD,0);
  ArrayResize(TRDS,tfNUM);
  ArrayInitialize(TRDS,0);
Ну и собственно tfNUM

//+------------------------------------------------------------------+
//| My data                                                       |
//+------------------------------------------------------------------+
static int _TF[]={0,PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
static int _TFUSED[][2];
static datetime _TFCALCTIME[][2];
static bool _TFCALC[][2];
 
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
int tfSize(){
 return(ArraySize(_TF));
}
Гигабайтами тут не пахнет :)

К тому-же на первом проходе тестера или оптимизатора проблем нет.

Сразу к вопросу о компе (Core2 3000Мгц ОЗУ 2 Гб - available 1 040 000)
 
Можете выслать мне на renat AT metaquotes.ru в ZIP архиве полные исходники эксперта с библиотеками для проверки?

Я их удалю после тестов.
 
Renat:
Можете выслать мне на renat AT metaquotes.ru в ZIP архиве полные исходники эксперта с библиотеками для проверки?

Я их удалю после тестов.
Вы писали:
В 214 билде мы исправили ошибку с непереинициализируемостью статических переменных в библиотеках после окончания работы эксперта. Теперь библиотеки принудительно переинициализируются после выполнения функции deinit. Поищите причины в своих библиотеках.
==============================================================================

Это серьезная модификация и скорее всего причина трабла с последующими проходами тестера и оптимизатора именно в инициализации/деинициализации статической памяти.

Спасибо за информацию, сначала проверю повторную входимость с учетом инициализации статики в библиотеках.

Если ситуация окажется блокирующей, сообщу Вам и вышлю тексты.
 
Renat:
Можете выслать мне на renat AT metaquotes.ru в ZIP архиве полные исходники эксперта с библиотеками для проверки?

Я их удалю после тестов.

Простой пример эксперта с необходимыми конструкциями массивов и логами я выслал Вам по почте.
Надеюсь Ваш адрес я понял правильно.

Несколько попутных наблюдений:
1. аналогичные функции работы с массивами в составе библиотек, которые линкуются непосредственно в тело эксперта по типу

#include "libraries\AllOrdersLib.mq4"
#include "libraries\AllSignalsControl.mq4"
#include "libraries\TradeBusyLib.mq4"
#include "libraries\ProcessOrders.mq4"
#include "libraries\TradePauseLib.mq4"
на вскидку работают (по крайней мере без вывала при переинициализации), но полной уверенности пока нет ( см. п 2)

2. более простые по структуре зксперты, в которых используется инициализация и изменение разиеров массивов в принципе стартовали и отработали,
НО !
- с каждым последующим запуском время прохода теста (я 1.1.2007 по сегодня) увеличивается раза в 1.5-2.
- Результат теста "плавает"
- по показаниям Task Manager память утекает с приличной скоростью

К счастью сохранил 213 билд от 18 числа, он на оптимизации работает сутками (как впрочем и предыдущие радакции)
 
Спасибо, будем разбираться.

К сожалению, не получил письма. Попробуйте продублировать его на stringo AT metaquotes.ru (вместо AT нужно поставить @).
 
satco, спасибо за сообщение об ошибке. Мы её нашли и исправили.
 
Renat:
Спасибо, будем разбираться.

К сожалению, не получил письма. Попробуйте продублировать его на stringo AT metaquotes.ru (вместо AT нужно поставить @).
Добрый день,
майлер вроде подтвердил доставку письма, в Вашем адрес, если есть необходимость могу повторить на stringo

Но как я понял из сообщения stringo вы уже разобрались в ситуации.

Спасибо вам за оперативность!

Когда ожидать исправленного билда ?
 
Renat:
Спасибо, будем разбираться.

К сожалению, не получил письма. Попробуйте продублировать его на stringo AT metaquotes.ru (вместо AT нужно поставить @).

Предыдущий вопрос снят.

Скачал и установил 215.

Проблема исчезла.

Успешных Вам разработок и внедрений!

Александр.