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

 

Баг нового билда, возможно только на х64 системах (конкретно под windows 7, процессор core i7). В прошлом билде такого не было. Заключается этот баг в следующем.

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

Даже дошло до следующего :

в функцию void OnTick() первой же строчкой вставляю return; :) компилирую, прогоняю, и результат тот же!!!! Хотя вообще линия должна быть.

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

Завтра проверю возникает ли подобное на х32 разрядной ОС.

 

Еще заметил, что на х64 очень долго открываются новые окна с графиками, и удаляются тоже очень долго!

Причем аж терминал подвисает с надписью "не отвечает", секунд на 5. 

 
bobsley:

Баг нового билда, возможно только на х64 системах (конкретно под windows 7, процессор core i7). В прошлом билде такого не было. Заключается этот баг в следующем.

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

Даже дошло до следующего :

в функцию void OnTick() первой же строчкой вставляю return; :) компилирую, прогоняю, и результат тот же!!!! Хотя вообще линия должна быть.

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

Завтра проверю возникает ли подобное на х32 разрядной ОС.

 

Еще заметил, что на х64 очень долго открываются новые окна с графиками, и удаляются тоже очень долго!

Причем аж терминал подвисает с надписью "не отвечает", секунд на 5. 

 

   

проверьте эту папку  (Имя Пользователя\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) возможно ваш эксперт компилиться именно туда
 
bobsley:

Баг нового билда, возможно только на х64 системах (конкретно под windows 7, процессор core i7). В прошлом билде такого не было. Заключается этот баг в следующем.

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

Даже дошло до следующего :

в функцию void OnTick() первой же строчкой вставляю return; :) компилирую, прогоняю, и результат тот же!!!! Хотя вообще линия должна быть.

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

Завтра проверю возникает ли подобное на х32 разрядной ОС.

 ...

Я не отлавливал специально этот баг, но похожее поведение отмечал на 32 битке. Именно ошибка устаняется если компильнёшь недописанное выражение, типа точку с запятой не допишешь.
 
Im_hungry:
конечно история есть, но не у всех черваков есть история спрэда!

1. Мы не за все поговорим, только за этот, сервер разработчиков - access.metatrader5.com:443 (ну не встречал я чтобы на данным момент история у кого-то была лучше в МТ5).

Берем мой скрипт, корявый мягко выражаясь "не доделан", но все же. Запускаем его на ТФ "1 неделя" и количестве баров 930.

Получаем следующий результат

2011.02.22 11:38:50     -   1:1993.05.09 00:00 open = 1.2368, high = 1.2368, low = 1.2084, close = 1.219, volume = 252, spread = 50
2011.02.22 11:38:50     -   0:1993.05.02 00:00 open = 1.2334, high = 1.2466, low = 1.2267, close = 1.2332, volume = 0, spread = 0
2011.02.22 11:38:50     -   Скопировано баров: 930

Судя по всему спреды по недельным барам есть с 1993.05.02, при этом история баров еще глубже. Хотя откуда данным на такую глубину взяться если официально Евро существует с 1999 (хотя бог с ним, это уже вопрос отдельный).

2. Теперь попробуем уточнить глубину информации по спреду на дневных графиках.

Возьмем за основу тот факт что в неделе 5 торговых дней и попробуем найти начало истории данных по спреду на дневных барах (скажу сразу примерное число 4630 баров).

2011.02.22 11:56:06     -   2:1993.05.13 00:00 open = 1.2148, high = 1.2158, low = 1.2084, close = 1.2099, volume = 100, spread = 50
2011.02.22 11:56:06     -   1:1993.05.12 00:00 open = 1.2138, high = 1.2171, low = 1.2105, close = 1.2152, volume = 0, spread = 0
2011.02.22 11:56:06     -   0:1993.05.11 00:00 open = 1.2167, high = 1.2202, low = 1.2121, close = 1.2141, volume = 0, spread = 0
2011.02.22 11:56:06     -   Скопировано баров: 4630

Таким образом видно что история спреда на дневных барах начинается с 1993.05.13.

PS

Думаю дальше разберитесь по аналогии (самая старая дата достуупная на минимальном ТФ как я понимаю и будит тем местом которое мы ищем)...

Укажу только что спреды по:

H12 доступны с 1993.05.13 (но бары там как я понял дневные) - глубина грубо 7790 баров

H6 доступны с 1993.05.13 (бары дневные) - глубина грубо 14100 баров

 
sergey1294:
проверьте эту папку  (Имя Пользователя\AppData\Roaming\MetaQuotes\Terminal\72CEBD0F7A5518983A10360D0E46A5B6\MQL5) возможно ваш эксперт компилиться именно туда

Проверил конечно же, там все пусто. Да и с чего бы, у меня эесперты лежат в ..\Experts\Examples\

там и компиляхи их появляются.

Сегодня проверил на работе на х32 ОС. До обновления норм было, обновил терминал и сразу же тот же глюк! 

 
 double op, sp;
     
     if ( ObjectGetDouble ( 0,"Open", OBJPROP_PRICE,0,op) &&  ObjectGetDouble ( 0,"Stop", OBJPROP_PRICE,0,sp ) ){
     
        if ( is40x_b0[0] > 0 && Tick.bid > op && Tick.bid < sp ){ <--------------- Дает предупреждение possible use of uninitialized variable 'sp'
         Sell(); 
        }
        
        if ( is40x_b1[0] > 0 && Tick.ask < op && Tick.ask > sp ){
         Buy(); 
        }

     }
 
Academic:


надо так
 double op=0, sp=0;
 
sergey1294:
надо так
Почему ?
 
Academic:
Почему ?

на самом деле ничего страшного тут нет.

Переменные при инициализации обнуляются.

 

вот можешь проверить.

  int i;

  printf("i=%d",i); 

 
bobsley:

на самом деле ничего страшного тут нет.

Переменные при инициализации обнуляются.

 

вот можешь проверить.

  int i;

  printf("i=%d",i); 

Этого предупреждения не должно даваться, так как в функцию ObjectGetDouble передается ссылка и в операторе if проверяется истинность возвращаемых обоими вызовами, и следовательно только если обе функции вернули истину то производится работа с этими переменными, а значит обе эти переменные не могут быть не установлены в корректное значение.

Документация по MQL5: Графические объекты / ObjectGetDouble
Документация по MQL5: Графические объекты / ObjectGetDouble
  • www.mql5.com
Графические объекты / ObjectGetDouble - Документация по MQL5
Причина обращения: