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

 
Kisolen:
При вхождении в ждущий режим Windows 10 (домашняя не помню какая но современная, и interprise ltsb 1607( довольно старая)) на MT5, советник перестаёт быть присоединённым к графику , сделки перестают совершаться, но остаются работать некоторые функции (вывод графического самописного окошка, которое функционирует). Это баг  MT или проблема в советнике? Спасибо. 

Ждущий режим - это практически выключенный компьютер. Все программы останавливаются.

 
Спасибо за ответ на прошлый комментарий. Еще один вопрос есть. MT5. Делаю шаблон интерфейса , без "сетки" на графике, называю этот шаблон "Default", чтобы он включался по умолчанию, в самом MT все работает, но не работает в окошке визуализации работы советника. Спасибо.
 
Kisolen:
Спасибо за ответ на прошлый комментарий. Еще один вопрос есть. MT5. Делаю шаблон интерфейса , без "сетки" на графике, называю этот шаблон "Default", чтобы он включался по умолчанию, в самом MT все работает, но не работает в окошке визуализации работы советника. Спасибо.

Шаблон графика "default.tpl" применяется, когда Вы открываете новый график в терминале, а шаблон графика "tester.tpl" применяется, когда Вы запускаете тестер стратегий в визуальном режиме.

Справка:  Шаблоны и профили - Дополнительные возможности - Графики котировок, технический и фундаментальный анализ

 

Всем, привет.

Обращаю внимание разработчиков на следующий баг в MT5 (build 2006). При вызове функции ChartGetInteger с идентификаторами свойств CHART_WIDTH_IN_BARS или CHART_VISIBLE_BARS , если при этом вызове активно другое окно с тем же инструментом но меньшим ТФ, функция возвращает некорректные значения. При максимальном масштабировании графика (5), возвращаемое значение меньше реального на 5. Если масштабирование 4, то возвращаемое значение меньше на 10. Если масштабирование 3, то, соответственно, на 20 и т.д. Код тестового индикатора, для воспроизведения глюка - ниже. У меня этот глюк стабильно воспроизводится на ТФ D1 и инструменте RTS-3.19. Также записал видео с демонстрацией бага для наглядности. В билде 274 (судя по истории) похожий глюк уже исправляли, но видимо не до конца. :)

//+------------------------------------------------------------------+
//|                                                     DBS_Bug2.mq5 |
//|                                            Copyright © 2019, DBS |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 1                                         //количество индикаторных буферов
#property indicator_plots   1                                         //количество графических построений
//+------------------------------------------------------------------+ 
//| Функция инициализации индикатора                                 | 
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+ 
//| Функция расчёта индикатора                                       | 
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,                                //количество истории в барах на текущем тике
                const int prev_calculated,                            //количество истории в барах на предыдущем тике
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---Debug
   int chart_bars=int(ChartGetInteger(0,CHART_WIDTH_IN_BARS));     //к-во баров на экране
   int vis_bars=int(ChartGetInteger(0,CHART_VISIBLE_BARS));        //к-во баров видимых на экране
   PrintFormat("%s: Debug #2! rates_total=%i chart_bars=%i vis_bars=%i",__FUNCTION__,rates_total,chart_bars,vis_bars);
   return(rates_total);
  }
//+------------------------------------------------------------------+

Частенько у меня появлялось ещё более забавное возвращаемое значение у этой функции (особенно при загрузке терминала). При максимальном масштабировании графика (5), возвращаемое значение =5 (не зависимо от реального количества баров на графике). Если масштабирование 4, то возвращаемое значение =10. Если масштабирование 3, то, соответственно, =20 и т.д. К сожалению, запечатлеть этот глюк на видео не удалось. Но из-за него я убил целый день, чтобы понять почему мой индикатор работает некорректно на D1, а на других ТФ нормально.


P.S. Лог с того же графика (RTS-3.19,D1) через пару часов (после обрыва связи). Реально на графике отображено 55 баров. А MT5 в логе говорит, что на экран влезает только 5, а видимых нет вообще :)   Скриншот

2019.02.24 21:27:09.692 DBS_Volume (RTS-3.19,D1)        DBS Volume (VOLUME_REAL): SetVolScale: Debug #1! max_vol_idx=3 max_vol=402550 time=2019.02.19 00:00 rates_total=220 chart_bars=5 vis_bars=0
MetaTrader 5 Client Terminal build 274
MetaTrader 5 Client Terminal build 274
  • 2010.05.15
  • MetaQuotes Software Corp.
  • www.metatrader5.com
Terminal: Исправлено отображение истории торговли на чарте. Terminal: Исправлена ошибка в навигации чарта (при отключеном сдвиге и автоскроле). Terminal: Исправления по сообщениям на форуме и крешлогам. Terminal: В файл помощи добавлено описание Тестера Стратегий MetaTester: Исправлена ошибка в загрузке параметров тестирования при смене...
 
Dmitriy Burlachenko:

Разработчики привет.

В справке по стандартной библиотеке MQL5 есть функция WindowHandle, но при её использовании компилятор говорит 'WindowHandle' - function not defined". Вопрос: кто глючит справка или компилятор? :)

Это СБ.

int CChart::WindowHandle(void) const;
 
Dmitriy Burlachenko:

Разработчики привет.

В справке по стандартной библиотеке MQL5 есть функция WindowHandle, но при её использовании компилятор говорит 'WindowHandle' - function not defined". Вопрос: кто глючит справка или компилятор? :)


Вы неправильно используете справку.

Смотрим внимательно: Справочник MQL5 Стандартная библиотека Ценовые графики WindowHandle

Возвратитесь на шаг назад и почитайте раздел Ценовые графики


Добавлено:

Пример использования (обратите внимание - сначала нужно выполнить метод Attach) и только потом работать с объектом

//+------------------------------------------------------------------+
//|                       Gets window handle of the chart (HWND).mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#property description "Gets window handle of the chart (HWND)"
//---
#include <Charts\Chart.mqh>
CChart   m_chart;                      // CChart object
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {

   m_chart.Attach(); // assigns the current chart to the class instance

   Print("CChart.WindowHandle: ",m_chart.WindowHandle());
   Print("CChart.ChartId: ",m_chart.ChartId());
  }
//+------------------------------------------------------------------+

Результат:

2019.02.25 16:01:32.165 Gets window handle of the chart (HWND) (GBPUSD,H1)      CChart.WindowHandle: 13830128
2019.02.25 16:01:32.165 Gets window handle of the chart (HWND) (GBPUSD,H1)      CChart.ChartId: 131571247244850547
 
Dmitriy Burlachenko:

Разработчики привет.

В справке по стандартной библиотеке MQL5 есть функция WindowHandle, но при её использовании компилятор говорит 'WindowHandle' - function not defined". Вопрос: кто глючит справка или компилятор? :)

используйте:

ChartGetInteger(0,CHART_WINDOW_HANDLE,0);
 
Vladimir Karputov:

Вы неправильно используете справку.

Смотрим внимательно: Справочник MQL5 Стандартная библиотека Ценовые графики WindowHandle

Возвратитесь на шаг назад и почитайте раздел Ценовые графики


Добавлено:

Пример использования (обратите внимание - сначала нужно выполнить метод Attach) и только потом работать с объектом

Результат:

Спасибо.

 
Обратите внимание на пост https://www.mql5.com/ru/forum/1111/page2390#comment_10739276
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2019.02.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

MQL5 ME 2006

#property strict

class A
 { 
public:
  int f();
 };

void OnStart()
  {
   A a;
   a.f();
  }

В MQL4 тот же код, как и должно быть, "function 'f' must have a body"

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