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

 
fxsaber:
mt5, 1375, случилось после обновления. винхп32

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

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Karputov Vladimir, 2016.08.07 14:11

  1. Какой билд MetaEditor'a? 
  2. Запускаете его из MT4 или MT5? 
  3. До этого, точно в данном MetaEditor'e открывали файлы? 
  4. С правами на файл MetaEditor'a как дела обстоят? 
  5. Это случилось недавно или сразу после установки терминала?
  6. В какой операционной системе запускаете (Windows, из под Wine)?

 

Ошибка при выполнении

Последовательность действий:

1. Запустить эксперта Test.ex5, который построчно выводит на график однотипный текст до появления ошибки

2. На том же графике запустить упрощенный скрипт, демонстрирующий ошибку

//Test.ex5 //Проверочный скрипт void OnStart() {         string text1 = NULL;                        ::ChartGetString( 0, CHART_COMMENT, text1 ); //(1)         string text2 = ::ChartGetString( 0, CHART_COMMENT ); //(2)         if ( text1 != text2 )                 Print( ::StringLen( text1 ), "-", ::StringLen( text2 ));         else                 Print( "OK" ); }

Получаем результат

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... а должен быть "OK"

Файлы:
Test.ex5  13 kb
 
A100:

Ошибка при выполнении

Последовательность действий:

1. Запустить эксперта Test.ex5, который построчно выводит на график однотипный текст до появления ошибки

2. На том же графике запустить упрощенный скрипт, демонстрирующий ошибку

Получаем результат

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

... а должен быть "OK"

Не вижу ошибки, между вызовами ChartGetString, комментарий чарта был изменён, поэтому и разница между строками в 16 символов, как раз на размер добавленной к комментарию чарта строки.
 
Ilyas:
Не вижу ошибки, между вызовами ChartGetString, комментарий чарта был изменён, поэтому и разница между строками в 16 символов, как раз на размер добавленной к комментарию чарта строки.

Эксперт выгружен (т.е. уже не может влиять на график). Загружаем проверочный скрипт (10 строк). Вопрос: какие из приведенных строк меняют комментарий графика?

Между вызовами ::ChartGetString() нет кода

Файлы:
Test.ex5  6 kb
 

Да что с мобильной версией форума?

Нажимаю "Ответить" - появляется цитата с крокозябами htlm- кода. И курсор из нее не вытащишь.

Аndroid 2.3.4


 
A100:

Эксперт выгружен (т.е. уже не может влиять на график). Загружаем проверочный скрипт (10 строк). Вопрос: какие из приведенных строк меняют комментарий графика?

Между вызовами ::ChartGetString() нет кода

По действиям (для чарта операции синхронные/последовательные, эксперт и скрипт работают в своих потоках):

  1. скрипт вызывает первый ChartGetString
  2. эксперт вызывает ChartSetString
  3. эксперт завершает работу
  4. скрипт вызывает второй ChartGetString
 
Ilyas:
По действиям (для чарта операции синхронные/последовательные, эксперт и скрипт работают в своих потоках):

  1. скрипт вызывает первый ChartGetString
  2. эксперт вызывает ChartSetString
  3. эксперт завершает работу
  4. скрипт вызывает второй ChartGetString

Эксперт Test.ex5 не может ничего вызывать (п.2), поскольку к моменту запуска скрипта он уже заблаговременно выгружен,

т.е. п.3 заведомо до п.1

Ниже результат скрипта Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...а должен быть "OK"

 
A100:

Эксперт Test.ex5 не может ничего вызывать (п.2), поскольку к моменту запуска скрипта он уже заблаговременно выгружен,

т.е. п.3 заведомо до п.1

Ниже результат скрипта Test.ex5

2016.08.08 02:21:25.979 Test (EURUSD,M15) 120-136

...а должен быть "OK"

ExpertRemove не удаляет эксперта с графика моментально, а только по завершению OnTick. И не является аналогом функции exit()

Цитата из лога иллюстрирует только факт вызова функции ExpertRemove(). Факт выгрузки эксперта будет отражён в журнале клиентского терминала записью "expert removed"

Покажите исходник эксперта

 
Slawa:

Цитата из лога иллюстрирует только факт вызова функции ExpertRemove(). Факт выгрузки эксперта будет отражён в журнале клиентского терминала записью "expert removed"

Детализированная последовательность действий:

  1. Открыть новый график
  2. Запустить на графике эксперта Test.ex5 (через несколько секунд во вкладке Эксперты появится сообщение вида: '2016.08.08 15:40:47.267 Test (EURUSD,M15) ExpertRemove() function called' и эксперт выгрузится с графика
  3. Убедится что во вкладке Журнал появилось сообщение вида: '2016.08.08 15:40:47.286 Experts expert Test (EURUSD,M15) removed'
  4. Запустить на этом же графике скрипт Script1.ex5 (здесь имя скрипта не перекликается с именем эксперта)

В результате во вкладке Эксперты появится сообщение вида: '2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) 120-136'
А должно быть:                                                                      '2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'

//Script1.mq5
void OnStart()
{
        string text1 = NULL;
                       ChartGetString( 0, CHART_COMMENT, text1 ); //(*)
        string text2 = ChartGetString( 0, CHART_COMMENT );
        if ( text1 != text2 )
                Print( StringLen( text1 ), "-", StringLen( text2 ));
        else
                Print( "OK" );
}
Файлы:
Test.ex5  13 kb
Script1.ex5  7 kb
 
A100:

А должно быть:                                                                      '2016.08.08 15:52:43.173 Scripts1 (EURUSD,M15) OK'

В чем нетрудно убедится заменив в Script1.mq5 строку (*) на

               text1 = ChartGetString( 0, CHART_COMMENT );