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

 

Для чего нужен модификатор final?

Его можно использовать только для виртуальных методов. Но если я не хочу, что бы метод был переопределен, то я объявлю ее без virtual (и без final). В чем смысл virtual + final?

 
Vladislav Boyko #:

Для чего нужен модификатор final?

Его можно использовать только для виртуальных методов. Но если я не хочу, что бы метод был переопределен, то я объявлю ее без virtual (и без final). В чем смысл virtual + final?

Что будете делать, если ваш класс был порождён от класса, в котором функция, которую больше не должны переопределять, была объявлена виртуальной

 
Ilyas #:

Что будете делать, если ваш класс был порождён от класса, в котором функция, которую больше не должны переопределять, была объявлена виртуальной

Да, до меня как раз дошло, что отсутствие virtual не отменяет виртуальность:

class CParrent
  {
public:
   virtual string method(void) { return("parrent"); }
  };

class CChild : public CParrent
  {
public:
   string method(void) override { return("child"); }
  };

class CGrandson : public CChild
  {
public:
   string method(void) override { return("grandson"); }
  };

Спасибо большое. Простите за глупые вопросы - я только учусь этому.

 

Сделайте пожалуйста еще небольшую подсказку:

Является ли корректной конструкция "override final"?

class CParrent
  {
public:
   virtual string method(void) { return("parrent"); }
  };

class CChild : public CParrent
  {
public:
   string method(void) override final { return("child"); }
  };

Судя по реакциям компилятора, оба ключевых слова работают. Но смущает, что никто это не использует:


 

Доброго времени суток.

Сегодня ставил разного рода эксперименты, обнаружил такой баг(?)

Согласно документации к SymbolInfoDouble : https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants


ENUM с названием SYMBOL_PRICE_VOLATILITY должен что-то вернуть.

double percent_change = SymbolInfoDouble(symbol_name,SYMBOL_PRICE_VOLATILITY);

Но в переменной оказывается 0. Далее пруф.



Спасибо за внимание, всем всего хорошего.

Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
Documentation on MQL5: Constants, Enumerations and Structures / Environment State / Symbol Properties
  • www.mql5.com
Symbol Properties - Environment State - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5
 
Vladislav Boyko #:

Сделайте пожалуйста еще небольшую подсказку:

Является ли корректной конструкция "override final"?

Судя по реакциям компилятора, оба ключевых слова работают. Но смущает, что никто это не использует:

Отвечаю сам себе (как я это понял), раз уж спросил.

Наверное, примеров использования нет в гугле по тому, что обычно final применяется к классу.

А override final - когда можно наследоваться от класса дальше, но нельзя переопределять конкретный метод - такая необходимость возникает, мягко говоря, не часто.


P.S. Возможно стоит перенести 5 постов, связанных с моими вопросами по final в более подходящую ветку типа "вопросы от начинающих". Если модераторы сочтут уместным, то я только за.

 

А разве функции экономического календаря на тестере не работают ?

Результат запуска примера из справочника.


2023.03.31 10:16:28.544 Core 1 EURUSD,H1: testing of Experts\CALENDAR.ex5 from 2023.01.01 00:00 to 2023.03.31 00:00 started

2023.03.31 10:16:28.544 Core 1 2023.01.01 00:00:00   ==================================================

2023.03.31 10:16:28.544 Core 1 2023.01.01 00:00:00   Не удалось получить события для кода страны US, ошибка 4014 

ERR_FUNCTION_NOT_ALLOWED

4014

Системная функция не разрешена для вызова


2023.03.31 10:16:28.544 Core 1 EURUSD,H1: 4680738 ticks, 1512 bars generated. Test passed in 0:00:00.526.

2023.03.31 10:16:28.544 Core 1 318 Mb memory used including 0.47 Mb of history data, 128 Mb of tick data

2023.03.31 10:16:28.544 Core 1 log file "C:\Users\User\AppData\Roaming\MetaQuotes\Tester\CF55F1108BF762299BD3BCB2BFB06D82\Agent-127.0.0.1-3000\logs\20230331.log" written

2023.03.31 10:16:28.549 Core 1 connection closed


 
Igor Zakharev #:

Доброго времени суток.

Сегодня ставил разного рода эксперименты, обнаружил такой баг(?)

Согласно документации к SymbolInfoDouble : https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants


ENUM с названием SYMBOL_PRICE_VOLATILITY должен что-то вернуть.

Но в переменной оказывается 0. Далее пруф.



Спасибо за внимание, всем всего хорошего.

Вся инфа поступает с сервера брокера\дилера. И если такой инфы оттуда нет, то и возвращать ничего не будет.

 

всем привет
проблема:

в отладчике профит по позиции отличается от того что пишется в терминале

может кто знает как это победить?


 
Georgii Bilozor #:

может кто знает как это победить?

Посчитать внимательно.