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

 
Как сделать, чтобы после изменения Истории кастомного символа, она подсовывалась Агенту, а не бралась Агентом из своего неактуального хранилища?
 
Это баг языка?
struct STRUCT
{
  template <typename T>
  void operator =( const T ) const {}

  template <typename T>
  void operator =( const T &Value ) const {} // Ошибка исчезает, если убрать любой const
};

void OnStart()
{
  STRUCT a;
  const int i = 0;
  
  a = i; // Ошибка: 'operator=' - object required
}
 
fxsaber:
Это баг языка?

В таком виде С++ тоже выдает ошибку E2015

А если так записать:

template<typename T> void f( T& ) {}
template<typename T> void f( T  ) {}
void OnStart()
{
    const int i = 0;
    f( i );
}

то MQL компилирует без ошибок, а С++ сообщает об ошибке E2015 

 

Верно ли, что SymbolInfoTick в MT4/5-индикаторах возвращает не тот тик, который вызвал Calculate-событие?

Если так, то не совсем понятно, на чем основаны сборщики тиков через индикаторы?

 
fxsaber:

Верно ли, что SymbolInfoTick в MT4/5-индикаторах возвращает не тот тик, который вызвал Calculate-событие?

Как правило, это - тот самый тик.

Вы очень странно формулируете вопросы.

- На любой вопрос можно ответить "да" или "нет"!

- Ты давно бросила пить коньяк по утрам? Отвечай сейчас же, да или нет?

(ц) Астрид Линдгрен

 
Slava:

Как правило, это - тот самый тик.

Если пришла пачка из трех тиков, то Calculate-событие вызовется три раза, но SymbolInfoTick будет возвращать самый поздний тик на каждом из этих трех вызовов. Т.е. так называемый сбор тиков без пропусков через индикаторы, мягко говоря, сомнительный.

 
Почему после установки CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_MIN, 0.00035) и CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_STEP, 0.00035) функция SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN)  возвращает 0.0003, а SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP) возвращает 0.01?
 

Очень неприятный баг с кастомными символами. Тиковая история кастомных символов может полностью пропасть.

Несколько раз уже с этим столкнулся. Никаких Custom-записей не делаю. Работаю только на чтение тиков. И в определенный момент, вдруг, вся история пропадает. CopyTicks возвращает нули без ошибок. Средствами GUI - аналогично. tkc становится 1 Кб, а было несколько миллионов тиков.

Получается, что не могу доверить MT5 хранение своих тиков, раз он их может просто стереть во время одного из чтений.

 
Ivan Titov:
Почему после установки CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_MIN, 0.00035) и CustomSymbolSetDouble(symbol, SYMBOL_VOLUME_STEP, 0.00035) функция SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN)  возвращает 0.0003, а SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP) возвращает 0.01?

Даже средствами GUI такие значения не получится установить


 
A100:

В таком виде С++ тоже выдает ошибку E2015

E2015 это неоднозначность.

А в примере fxsaber похоже на то что остается сгенерированный компилятором неконстантный оператор (с объектом в параметрах) и он выбирается.

А происходит это потому что оператор присваивания не должен быть константным

(имхо)