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

 

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

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

fxsaber, 2017.07.10 20:16

Для снятия большого количества вопросов по правильному заполнению MqlTradeRequest-структуры предлагаю при нажатии F9 в терминале во время ручного заполнения полей сделать сноску "Подробнее", где будут видны все поля соответствующей торговой структуры (с возможностью копирования одним нажатием). Сейчас эта структура полностью доступна, если после нажатия действия F9-окна поймать ее в OnTradeTransaction.

Отказали. Реализацию ловли заполненной структуры через OnTradeTransaction можно посмотреть тут.

 
Yury Kirillov:

Начиная как минимум с билд 1625 МТ5 падает при тестировании.

Билд 1626:

Воспроизводится как минимум в режимах "каждый тик..." и "все тики".


Добрый день. Нужны шаги для воспроизведения. Нужен эксперт/индикатор и настройки тестирования. Напишите, пожалуйста, в сервисдеск.

 
Alexander:

Добрый день. Нужны шаги для воспроизведения. Нужен эксперт/индикатор и настройки тестирования. Напишите, пожалуйста, в сервисдеск.


Написал в ТП #1794147.

Crash по видимому генерируется при использовании HistoryDealGetTicket(i), с параметром превышающим имеющееся количество сделок.

 
Yury Kirillov:

Написал в ТП #1794147.

Crash по видимому генерируется при использовании HistoryDealGetTicket(i), с параметром превышающим имеющееся количество сделок.

Да, увидел. Спасибо

 

Нет сообщения об ошибке

struct A {
        int z;
};
void OnStart()
{
        int const b; //'b' - 'const' variable must be initialized
        A   const a; //нет сообщения об ошибке //по сути равнозначно записи: int const а.z; 
}
Должны присутствовать или явный конструктор или инициализирующая последовательность
 

Из-за конструктора. Так что все норм.

 
fxsaber:

Из-за конструктора. Так что все норм.

Из-за конструктора, который ничего не делает ?

struct A {
        A() {}
        int a;
}; 
void OnStart()
{
        const A a; //нормально
}

Если можно не инициализировать const int A::a то зачем тогда обязательно инициализировать const int b в предыдущем случае?

 
A100:

Из-за конструктора, который ничего не делает ?

Да, из-за пустого конструктора по-умолчанию.

Если можно не инициализировать const int A::a то зачем тогда обязательно инициализировать const int b в предыдущем случае?

Почему вместо Warning выдает Error? Ведь можно же так

void OnStart()
{
  int a;
  const int b = a;
}

ИМХО, должен быть Warning, когда const-переменная простого типа не инициализируется. И не должно быть Warning, когда значение OrderSend не проверяется. Но это, похоже, видение правильного разработчиками. Т.е. аргументация субъективна.

 
fxsaber:

Почему вместо Warning выдает Error? Ведь можно же так

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

 
A100:

Потому что использование неинициализированной константной переменной лишено смысла - поэтому и ошибка (она содержит случайное значение и ее дальнейшее использование приведет к трудноуловимым ошибкам)

В цитате зачеркнул одно слово, но смысл не изменится, если в дальнейшем будут только read-only операции. Для non-const выдает Warning, для const - Error. Это просто одно из спорных решений разработчиков.

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