Ошибка в тестере (build 213)

 

При повторном (без перекомпиляции) старте эксперта в тестере (build 213), статическая переменная (static), определенная в библиотечной функции, сохраняет свое последнее значение от предыдущего старта эксперта.

Раньше (build 210) такого не было.

Такая же переменная, определенная в самом эксперте, при повторном старте инициализируется.

 

В ответ – тишина?!

Выложу код!

Советник:

//+------------------------------------------------------------------+

//| Проба.mq4 |

//| Михаил |

//+------------------------------------------------------------------+

#property copyright "Михаил"

#property link ""

#import "proba.ex4"

int proba();

#import

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

Alert("Старт советника Проба");

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

static int Проба_static=0;

Alert("В советнике переменная Проба_static=",Проба_static);

Проба_static=Проба_static+1;

Alert("В библиотеке переменная proba_static=",proba());

}

Библиотека:

//+------------------------------------------------------------------+

//| proba.mq4 |

//| Михаил |

//+------------------------------------------------------------------+

#property copyright "Михаил"

#property link ""

#property library

int proba()

{

static int proba_static=0;

int ret=proba_static;

proba_static=proba_static+1;

return(ret);

}

В журнале тестера:

06:48:29 Проба: loaded successfully

06:49:40 Проба started for testing

06:49:40 2006.01.20 00:00 Проба GBPUSD,M15: Alert: Старт советника Проба

06:49:40 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В советнике переменная Проба_static=0

06:49:40 2006.01.20 00:00 proba GBPUSD,M15: loaded successfully

06:49:40 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В библиотеке переменная proba_static=0

06:49:40 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В советнике переменная Проба_static=1

06:49:40 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В библиотеке переменная proba_static=1

06:50:23 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В советнике переменная Проба_static=2

06:50:23 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В библиотеке переменная proba_static=2

06:50:23 Проба started for testing

06:50:23 2006.01.20 00:00 Проба GBPUSD,M15: Alert: Старт советника Проба

06:50:23 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В советнике переменная Проба_static=0

06:50:23 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В библиотеке переменная proba_static=3

06:50:49 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В советнике переменная Проба_static=1

06:50:49 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В библиотеке переменная proba_static=4

06:52:04 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В советнике переменная Проба_static=2

06:52:04 2006.01.20 00:00 Проба GBPUSD,M15: Alert: В библиотеке переменная proba_static=5

 
Спасибо за код - будем разбираться.
 
Да. Указанная ошибка имеет место. Исправили.
 
stringo:
Да. Указанная ошибка имеет место. Исправили.

Спасибо. Когда можно будет скачать?
 
stringo:
Да. Указанная ошибка имеет место. Исправили.

Закачал версию от 25 марта, а указанная ошибка все еще имеет место.

 

Подождите, пожалуйста, следующего билда. Сегодня - завтра.

 
и сделайте чтоб можно было в висте клавишей хоум качать хистори от ДЦ пожалуйста! почему должны быть такие проблемы я не понимаю?
 

А какие проблемы с клавишей хоум в висте?

 
оказалось что кол-во баров ограничено до 16384, поэтому глубже не качает - вопрос исчерпан
 

Ошибка исправлена, но не полностью.

Если в библиотеке определен массив как статический, то ошибка проявляется начиная с 1-го элемента.

Библиотека:

//+------------------------------------------------------------------+

//| proba.mq4 |

//| Михаил |

//+------------------------------------------------------------------+

#property copyright "Михаил"

#property link ""

#property library

int proba()

{

static int proba_static[2];

int ret=proba_static[1];

proba_static[1]=proba_static[1]+1;

return(ret);

}

Все остальное смотри выше.

Причина обращения: