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

 
Alexandr Bryzgalov:
так задумано


спс.

а где почитать о задумке? в справке ни слова

это только для строковой переменной?

любые символы можно в комментарии использовать?

 
Stanislav Korotky:
Я понял вашу мысль. Но тогда следующий вопрос - почему при закрытии окна визуального тестирования не срабатывает OnDeinit как положено? Каким образом отлаживать то, что находится в OnDeinit-е индикатора и связано с обработкой собранной информации процесса выполнения (в частности профилировка, которую невозможно быстро и на длительных исторических данных провести на онлайн чарте)?

Подумаем над этим.

При профилировке на истории можно безболезненно вызывать OnDeinit сразу по окончании данных. Ибо при профилировке индикаторные артефакты как правило не нужны.

 
Slava:

Подумаем над этим.

При профилировке на истории можно безболезненно вызывать OnDeinit сразу по окончании данных. Ибо при профилировке индикаторные артефакты как правило не нужны.

Написал заявку в СД.
 
Stanislav Korotky:
Написал заявку в СД.
Спасибо. Я уже сам написал заявку.
 
Slava:
Спасибо. Я уже сам написал заявку.
Прежде чем писать в СД, я проверил - нет ли ответа здесь ;-), и его на тот момент не было. В любом случае, может быть какое-то из моих предложений из заявки подойдет.
 
Alexandr Bryzgalov:

Как говорят в "Своя игра" - нет такой темы. исправлено, будет так


 
В тестере выбран советник. Каждый раз после его компиляции тестер выбирает другой советник. Ошибка же!
 

При нажатии клавиши "Home" и максимальном отдалении графика в MT5 съезжают графические объекты и индикатор(ы) - на рисунке это видно по ЗигЗагу.


 

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

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

Renat Fatkhullin, 2017.05.13 17:07

Все верно, нельзя приводиться снизу вверх, только сверху вниз. Это ради безопасности.

С С++ сравнивать нельзя - там все что угодно к чему угодно привести можно.

Почему это компилируется?
class A {};

class B : public A
{
public:  
  int i;
};

void OnStart()
{
  A* a = new B;
  
  ((B*)a).i = 1;
  
  dynamic_cast<B*>(a).i = 1;
  
  delete a;
}
 

Вообще есть три варианта.

1. Это баг

2. Этот каст позволяет кастить как reinterpret_cast, который является небезопасным в принципе. Если так, таким кастом можно приводить любые указатели друг к другу, с риском получить исключение доступа потом.

3. Этот каст позволяет кастить как dynamic_cast, но тогда возникает вопрос как различать динамический и статический каст и тогда возможно все касты производятся во время выполнения программы

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