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

 
Andrey Sokolov:

баг редактора при лишнем пробеле

https://photos.app.goo.gl/CK2KSZaKVRKMCz1S8

тут как этот баг изчезает

https://photos.app.goo.gl/bSPtMDL4MKSKpbFP6

копия не компилируемого,  как в примере


в мт5 та-же проблема

Компилятор MQL5 не оценивает значение юникод символов - все символы, у которых код больше 127, считаются буквами (не стоит закладываться - это может измениться).

Не используйте неразрывные пробелы (код символа 0xC2a0).

Документация по MQL5: Общие функции / TranslateKey
Документация по MQL5: Общие функции / TranslateKey
  • www.mql5.com
TranslateKey - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Aliaksandr Hryshyn:

Ошибка при двоичном поиске значения в отсортированном массиве:

Результат:

Вместо 2 должно быть 3

Спасибо за сообщение.

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

 

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

Интересное и Юмор

Valeriy Yastremskiy, 2021.02.22 16:47

Ну это видимо сюда)

Осталось незакрытое окно после тестера в 4ке. Прошло больше пары недель. Завожу терминал, и вижу в этом окне тиковый график)))) А вот как бы штатно так получить) 1320 терминал, обычна 7ка. слабенький нотик. Индюки  грузятся)

странный тик

А можно штатно получить тиковый график на чарте? Воспроизвести не смог. На нотике чарт живет сам по себе в тиковом режиме.
 

Это правильное поведение статических переменных?

При переключении таймфрейма или изменении параметров их значение не меняется:

int OnInit()
  {
   static int my_int=4444;
   Print(my_int);
   my_int=9999;
   return(INIT_SUCCEEDED);
  }

Результат после запуска советника и переключения таймфрейма:

2021.02.24 16:23:27.999 Test1 (EURUSD,M1)       4444
2021.02.24 16:23:29.913 Test1 (EURUSD,M5)       9999
Статические переменные

Это из справки:

Статические переменные существуют с момента выполнения программы и инициализируются однократно перед вызовом специализированной функции OnInit().

Так однократно перед каждым вызовом OnInit() или однократно перед запуском, хотя переинициализация больше похожа на второй запуск.

В тестере тоже так происходит?

Глобальные переменные тоже себя так ведут.

 

При переключении таймфрейма, эксперт не перезапускается, он продолжает работать

https://www.mql5.com/ru/docs/runtime/running

При смене символа или таймфрейма графика, к которому эксперт прикреплен, выгрузка и загрузка эксперта не производится. При этом последовательно вызываются обработчики OnDeinit() на старом символе/таймфрейме и OnInit() на новом символе/таймфрейме (если они есть), значения глобальных переменных и статических переменных не сбрасываются. Все события, поступившие для эксперта до завершения инициализации (функции OnInit()), пропускаются.


Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Выполнение программ - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ilyas:

При переключении таймфрейма, эксперт не перезапускается, он продолжает работать

https://www.mql5.com/ru/docs/runtime/running

Заметил одну особенность, которой раньше не было в MetaTrader. Удаляю эксперта с графика (с помощью команды его контекстного меню), вслед за ним закрывается график. Раньше график не закрывался после удаления эксперта.

 
Mihail Matkovskij:

Заметил одну особенность, которой раньше не было в MetaTrader. Удаляю эксперта с графика (с помощью команды его контекстного меню), вслед за ним закрывается график. Раньше график не закрывался после удаления эксперта.

Это может быть запрограммировано в самом советнике, проверьте с помощью другого советника...

 

в win7 при отладке на исторических данных переменные добавляемые в наблюдение не отображают своих значений. при отладке на реальных данных все работает. в настройках метаэдитора используемые параметры для отладки указал

получается, что при добавлении переменные в окне сразу не отображаются, а появляются только при следующем запуске отладки, но значения их уже <not implemented>. подскажите что настроить надо чтобы отладка заработала

 
Vladimir Pastushak:

Это может быть запрограммировано в самом советнике, проверьте с помощью другого советника...

Действительно, бросил стандартного эксперта на график. Удаляется без проблем. В исходниках своего эксперта попробовал найти ChartClose. Нигде не нашел. У меня и не было такой задумки изначально, закрывать график при удалении эксперта. В нём я использую стандартные элементы UI, такие как CAppDialog. Может быть где-то в стандартных классах прописано закрытие графика...

 
Mihail Matkovskij:

Действительно, бросил стандартного эксперта на график. Удаляется без проблем. В исходниках своего эксперта попробовал найти ChartClose. Нигде не нашел. У меня и не было такой задумки изначально, закрывать график при удалении эксперта. В нём я использую стандартные элементы UI, такие как CAppDialog. Может быть где-то в стандартных классах прописано закрытие графика...

Нашел. В классе CAppDialog есть поле CChart m_chart.

class CAppDialog : public CDialog
  {
...
protected:
   CChart            m_chart;               // object to access chart

Когда CAppDialog удаляется (его наследник используется в моём эксперте), то вероятней всего тогда и происходит закрытие чарта, за счёт срабатывания деструктора объекта  m_chart.

//+------------------------------------------------------------------+
//| Destructor                                                       |
//+------------------------------------------------------------------+
CChart::~CChart(void)
  {
   if(m_chart_id!=-1)
      Close();
  }
//+------------------------------------------------------------------+
//| Chart close                                                      |
//+------------------------------------------------------------------+
void CChart::Close(void)
  {
   if(m_chart_id!=-1)
     {
      ChartClose(m_chart_id);
      m_chart_id=-1;
     }
  }

С помощью отладчика данный процесс к сожалению отследить нельзя. Но просмотрев исходный код CAppDialog, а также CChart, всё становится понятно. Обращаю на это внимание разработчиков.