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

 
Ilyas: 2. не воспроизводится, пожалуйста перепроверьте, возможно Вы не указали важные детали для воспроизведения.

Упрощенный пример

class A { public:
    A()          { Print( __FUNCTION__ ); }
    virtual ~A() { Print( __FUNCTION__ ); }
};
void OnStart()
{
    new A();
}

Результат:

2016.08.15 14:17:39.093 Script1 (GBPUSD,M15) A::A

Вывод: деструктор не вызывается и одновременно нет сообщения об утечке памяти (как в следующем примере)

//Script2.mq5
class A { public:
    A()          { Print( __FUNCTION__ ); }
    virtual ~A() { Print( __FUNCTION__ ); }
};
void OnStart()
{
    A *a = new A();
}

Результат:

2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 16 bytes of leaked memory
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 1 object of type A left
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 1 undeleted objects left
2016.08.15 14:26:27.992 Script2 (GBPUSD,M15) A::A

 
Спасибо за пояснение. Воспроизвели - нет сообщения об утечке и вот почему:

Тут перестарался оптимизатор, т.к. нет операций с памятью или указателем, которые были созданы в операторе new, то аллокация этой памяти была удалена.

Мы подумаем над тем, стоит ли исправлять эту "фичу" оптимизатора или улучшить его, чтобы сохранение указателя в неиспользуемую переменную не блокировало удаление операции new.

 
День добрый.
Разработчики подскажите почему в MQL4 и MQL5 функция удаления подокна индикатора из эксперта есть, а функции создания окна индикатора нет.
Приходится подьзоватся шаблонами, либо запускать оконный идикатор в ручную, а это не удобно т.к. теряется информация нанесенная на график.
Да и хотелось бы иметь возможность запускать и отображать индикаторы из файла ресурсов.
Или подскажите как это организовать.
 
Slawa:

А это не Вы ли устраивали "лайфхак с визуализацией"?

С чего Вы решили, что это - баг? Название папки соответствует номеру порта, по которому произошло соединение

Это был я.... спасибо, понял.
 
Делаю макрос
#define MACROS(A) "##A##"
Хочется, чтобы MACROS(Num) заменялся на "Num", но получается всегда "##A##". Возможно ли определить макрос, чтобы получить желаемое?

 

Небольшое для себя открытие сделал

void OnStart()
{  
  double dPrice = 1.08249;
  int iPrice = (int)((dPrice / _Point) + 0.1);
  double dNewPrice = iPrice * _Point; // При этом нормализации это значение не требует в OrderSend
  
  if (dPrice != dNewPrice)
    Print((string)(dPrice - dNewPrice)); 
}

Если открыть ордер по цене Integer * Point (без нормализации) и потом запросить цену открытия, то она будет отличаться от ненормализованного Integer * Point. 

Почему в OrderSEnd ВСЕГДА прокатывают ненормализованные цены вида Integer * Point?

 
fxsaber:
Делаю макросХочется, чтобы MACROS(Num) заменялся на "Num", но получается всегда "##A##". Возможно ли определить макрос, чтобы получить желаемое?

Уберите кавычки из тела макроса

Чтобы преобразовать параметр макроса в строку следует использовать #:

#define MACROS(A) #A
## используется для склеивания токенов
 
Dmitry Voronkov:
День добрый.
Разработчики подскажите почему в MQL4 и MQL5 функция удаления подокна индикатора из эксперта есть, а функции создания окна индикатора нет.
Приходится подьзоватся шаблонами, либо запускать оконный идикатор в ручную, а это не удобно т.к. теряется информация нанесенная на график.
Да и хотелось бы иметь возможность запускать и отображать индикаторы из файла ресурсов.
Или подскажите как это организовать.

Создать подокно графика можно при помощи функции ChartIndicatorAdd

Про индикаторы из ресурсов написано здесь https://www.mql5.com/ru/docs/runtime/resources в самом конце - "Работа с пользовательскими индикаторами, подключенными в качестве ресурсов"

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

Создать подокно графика можно при помощи функции ChartIndicatorAdd

Про индикаторы из ресурсов написано здесь https://www.mql5.com/ru/docs/runtime/resources в самом конце - "Работа с пользовательскими индикаторами, подключенными в качестве ресурсов"

Спасибо за помощь.

Но в четверке этой функции к сожалению нет. Обыдно :)

 
kofesutra:

Косяк тестера МТ5: не совпадают OHLC в тестере и самом МТ5, более того, High и Low находятся внутри диапазона Open/Close :(

Эта свеча, к сожалению, не единственная. И чего делать? Подскажите, как разработчикам написать, ребята! 

 

2016.08.13 12:38:48.956 Terminal C:\Program Files\Alpari Limited MT5
2016.08.13 12:38:48.956 Terminal Microsoft Windows XP (x64 based PC) on Wine, IE 08.00, Intel Pentium 4  2.40GHz, RAM: 6131 / 7688 Mb, HDD: 33959 / 159136 Mb, GMT+02:00
2016.08.13 12:38:48.955 Terminal Alpari Limited MT5 x64 build 1375 started (Alpari Limited)

Я тут ещё раз прогнал тестер и увидел фокус: High перерисовывается О_о по мере формирования свечи. В какой-то момент он меняет значение на меньшее, падает в диапазон Open/Close и далее внутри этого диапазона меняет своё значение.

 

OHLC на М1


Нашли и исправили. Спасибо за сообщение.

Пока нет исправленного билда, этот баг можно обойти, тестируя на дневном (а не недельном) таймфрейме. При этом все недельки формируются правильно