Тест в Билд 215 - страница 2

 

Принты к последнему коду на предыдущей странице.

2 теста (не визуал)

00:46:32 Test_Error: loaded successfully
00:46:40 Test_Error started for testing
00:46:40 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: start() ==========================
00:46:40 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 0
00:46:40 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Канала нет. Создаём канал, обращаясь к импортированной функции
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: loaded successfully
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: Import_Fun() --------------
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot вход= 0
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Создаём канал TIME1=1186094700 Time2=1186099200
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot >>>>>>> 1
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Cмотрим что получилось в ИМПОРТНОЙ функции:
00:46:40 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: start() ==========================
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 1
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======His_Name (0)= My_Channel
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======ObjectType = 6
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Канал есть.
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Cмотрим что получилось в ЭКСПЕРТЕ:
00:46:40 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: start() ==========================
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 1
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======His_Name (0)= My_Channel
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======ObjectType = 6
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Канал есть.
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Cмотрим что получилось в ЭКСПЕРТЕ:
00:46:40 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:47:00 Test_Error started for testing
00:47:00 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: start() ==========================
00:47:00 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 0
00:47:00 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Канала нет. Создаём канал, обращаясь к импортированной функции
00:47:00 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: Import_Fun() --------------
00:47:00 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot вход= 0
00:47:00 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Создаём канал TIME1=1186094700 Time2=1186099200
00:47:00 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot >>>>>>> 1
00:47:00 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Cмотрим что получилось в ИМПОРТНОЙ функции:
00:47:00 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: start() ==========================
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 1
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======His_Name (0)= My_Channel
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======ObjectType = 6
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Канал есть.
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Cмотрим что получилось в ЭКСПЕРТЕ:
00:47:00 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: start() ==========================
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 1
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======His_Name (0)= My_Channel
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======ObjectType = 6
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Канал есть.
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Cмотрим что получилось в ЭКСПЕРТЕ:
00:47:00 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:47:00 Import_Fun EURUSD,M15: removed
00:47:00 Test_Error EURUSD,M15: removed

2 теста визуал:


00:47:45 Test_Error: loaded successfully
00:47:45 Test_Error started for testing
00:47:45 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: start() ==========================
00:47:45 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 0
00:47:45 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Канала нет. Создаём канал, обращаясь к импортированной функции
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: loaded successfully
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: Import_Fun() --------------
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot вход= 0
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Создаём канал TIME1=1186094700 Time2=1186099200
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot >>>>>>> 1
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Cмотрим что получилось в ИМПОРТНОЙ функции:
00:47:45 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=0 _P2=0
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: start() ==========================
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 1
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======His_Name (0)= My_Channel
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======ObjectType = 6
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Канал есть.
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Cмотрим что получилось в ЭКСПЕРТЕ:
00:47:45 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=1.3699 _P2=1.3701
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: start() ==========================
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 1
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======His_Name (0)= My_Channel
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======ObjectType = 6
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Канал есть.
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Cмотрим что получилось в ЭКСПЕРТЕ:
00:47:54 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: _T1=1186094700 _T2=1186099200 _P1=1.37 _P2=1.37
00:48:19 Test_Error started for testing
00:48:19 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: start() ==========================
00:48:19 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 0
00:48:19 2007.08.03 00:00 Test_Error EURUSD,M15: Alert: ======Канала нет. Создаём канал, обращаясь к импортированной функции
00:48:19 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: Import_Fun() --------------
00:48:19 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Obj_Tot вход= 1
00:48:19 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------Найден (где?) объект с именем:
00:48:19 2007.08.03 00:00 Import_Fun EURUSD,M15: Alert: ------His_Name = My_Channel
00:48:19 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: start() ==========================
00:48:19 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 0
00:48:19 2007.08.03 00:15 Test_Error EURUSD,M15: Alert: ======Канала нет. Создаём канал, обращаясь к импортированной функции
00:48:19 2007.08.03 00:15 Import_Fun EURUSD,M15: Alert: Import_Fun() --------------
00:48:19 2007.08.03 00:15 Import_Fun EURUSD,M15: Alert: ------Obj_Tot вход= 1
00:48:19 2007.08.03 00:15 Import_Fun EURUSD,M15: Alert: ------Найден (где?) объект с именем:
00:48:19 2007.08.03 00:15 Import_Fun EURUSD,M15: Alert: ------His_Name = My_Channel
00:48:19 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: start() ==========================
00:48:19 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Obj_Tot = 0
00:48:19 2007.08.03 00:30 Test_Error EURUSD,M15: Alert: ======Канала нет. Создаём канал, обращаясь к импортированной функции
00:48:19 2007.08.03 00:30 Import_Fun EURUSD,M15: Alert: Import_Fun() --------------
00:48:19 2007.08.03 00:30 Import_Fun EURUSD,M15: Alert: ------Obj_Tot вход= 1
00:48:19 2007.08.03 00:30 Import_Fun EURUSD,M15: Alert: ------Найден (где?) объект с именем:
00:48:19 2007.08.03 00:30 Import_Fun EURUSD,M15: Alert: ------His_Name = My_Channel
00:48:19 Import_Fun EURUSD,M15: removed
00:48:19 Test_Error EURUSD,M15: removed

 
Спасибо за подробности - будем в понедельник разбираться.
 

Дополнения:
Ошибки в Тестере Стратегий, окружение: объекты.
Далее по файлам SK2 = советник. SKF2 - библиотека. (логи прикреплены)


Общий вид: от второго старта после компиляции/загрузки и далее в тестере не отображаются объекты создаваемые импортируемой функций.
+ Случайно, непонятно как, иногда возникает плавающая критическая ошибка влекущая выгрузку МТ-4.

Условия возникновения: второй старт в тестере.

Описание 1, если в deinit() не было ObjectDelet:
На втором старте советник стартует в окружении 2 объектов.
Эти 2 объекта уже не видны, Однако они принимают ОbjectSet().


Описание 2. Если deinit() было выполнено ObjectDelet()
То на втором старте число объектов =0,
Объекты создаются, меняется число объектов с 0 на 2, объекты принимают параметры,
но никак не отображаются.

SK2

#import "SKF2.ex4"
void txt();
void Import_Fun();
void blabla();
#import

int deinit()
{
ObjectDelete("My_Channel");
Print(" deinit=",GetLastError());
ObjectDelete("Work");
Print(" deinit=",GetLastError());
}
int start()
   {
   static int Cn = 0;
   Cn++;
   if (Cn>3)
      return; 
  Print(" ========================================================== ","ПРОХОД =",Cn); 
  blabla(); //проверка выдачи из импорта
  Import_Fun();  //создание канала в импортируемой функции
  txt();  //создание текстового объекта в импортируемой функции 
   return;
   }

SKF2

//ДЕМОНСТРАЦИЯ ОШИБКИ СОЗДАНИЯ ОБЪЕКТА ИЗ импортируемой функции
#property library   //три функции
void blabla()
{
Print("Проверка импорта=O.k");
}
//*************************
void txt()
{

  Sleep(1000);//для убедительности
   RefreshRates(); //открестились))))
  ObjectCreate("Work",OBJ_TEXT,0,iTime(NULL,0,10),High[10]);
                     ObjectSetText("Work", "1111111", 14,"",Red);
                     ObjectSet("Work",OBJPROP_TIMEFRAMES,NULL); //на всякий случай
                      ObjectSet("Work",OBJPROP_BACK,FALSE);//тоже
                     WindowRedraw(); //для убедительности
                     Sleep(1000); //для убедительности
                      Print(" Создание текстового объекта, ошибка=",GetLastError());
}

//****************
void Import_Fun()
   {    
   string My_Chan_Name = "My_Channel";                      // Имя создаваемого канала
  
   
      RefreshRates(); //открестились))))

      Print("всего объектов=",ObjectsTotal()); //светим число объектов
    
      ObjectCreate (My_Chan_Name, OBJ_STDDEVCHANNEL,0,0,0); // Создаём его.. 
      Print(" канал, ошибка=",GetLastError());
      ObjectSet(My_Chan_Name,OBJPROP_TIMEFRAMES,NULL);
      ObjectSet(My_Chan_Name, OBJPROP_TIME1, Time[5]);      // Устанавливаем координаты
      ObjectSet(My_Chan_Name, OBJPROP_TIME2, Time[1]);      // Устанавливаем координаты 
      Print(" установка координат канала, ошибка=",GetLastError(), "  TIME1=",Time[5],"  TIME2=",Time[5]);
      
   return;
Файлы:
sk2_1.txt  12 kb
 

Да. Мы нашли проблему. Спасибо. После проверок будет доступен обновлённый 215 билд.


Кстати, SK, по поводу ценовых координат канала стандартных отклонений. Здесь проблема следующего рода: канал строится по временным координатам, от времени T1 до времени T2. Ценовые координаты высчитываются в процессе отрисовки канала. То есть, в визуальном режиме тестирования ценовые координаты P1 и P2 будут доступны после первой же отрисовки графика, и они будут отличаться от 0. При простом тестировании график не отрисовывается, и ценовые координаты так и остаются нулевыми. Будем думать, что с этим делать. Пока решения нет.

 
stringo:

Да. Мы нашли проблему. Спасибо. После проверок будет доступен обновлённый 215 билд.


Кстати, SK, по поводу ценовых координат канала стандартных отклонений. Здесь проблема следующего рода: канал строится по временным координатам, от времени T1 до времени T2. Ценовые координаты высчитываются в процессе отрисовки канала. То есть, в визуальном режиме тестирования ценовые координаты P1 и P2 будут доступны после первой же отрисовки графика, и они будут отличаться от 0. При простом тестировании график не отрисовывается, и ценовые координаты так и остаются нулевыми. Будем думать, что с этим делать. Пока решения нет.

С каналами есть ещё такая проблема: они не отдают координаты, пока их не редронёшь. Насколько я понимаю, это побочный эффект общей проблемы, о кот. говорите Вы. По-моему, на объектах других типов это не наблюдается.

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

 

Выложен обновлённый билд 215, датированный 14 апреля. Попробуйте его.

 
stringo:

Выложен обновлённый билд 215, датированный 14 апреля. Попробуйте его.

ОК. Пробую.

Попробовал. Отношения с импорной функцией вроде бы в норме. Возможно, Вам будут интересны пара наблюдений.

1. Если в импортной функции не создаётся канал, то в режиме визуализации появление новых баров происходит равномерно. Если же канал создаётся, то в момент обращения к имп. функции график на некоторое время замирает (прибл. 1.5 сек), а потом бары появляются равномерно. Это было и раньше, возможно это вообще номально.

2. В момент обращения к имп. функции несколько раз конвульсивно моргала надпись в поле тестера Символ. В обновлённом билде явление не наблюдается.

Вопрос координат цены канала, насколько я понимаю, пока не решён.

 

to stringo to Rosh

Плавающие сбои и не работоспособность Gterminal в ТЕСТЕРЕ на некоторых компах МТ-4 215,
были локализируются следующим исполнением:


Создается новая линия TrendLine с координатами старой, существавшей по крайне мере несколько баров.
После чего старая удаляется.
Новая линия изредка может оказаться произвольной, т.е. стать например VerticalLine и обрести произвольные координаты.


Т.е. вроде бы завязывается на вертикальные линии.
Если вертикальныe линии совместно с трендовыми не употреблять, то и ошибок нет.
Сами вертикальные линии в тестере какие то непонятные. Ими трудно управлять, с первого раза не перемещаются.
Теперь пытаюсь эту ошибку поймать опосредовано.

 
Cегодня постоянно работаю с тестером. За это время дважы наблюдалось моргание текста "EURUSD Euro vs US Dollar" в графе тестера Символ. Один раз - при тестировании, второй раз - тестирование не выполнялось.