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

 
fxsaber:
Не проверял
datetime NewTimeCurrent( void )
{
  static ulong PrevStartTime = GetMicrosecondCount();
  static datetime PrevTimeCurrent = TimeCurrent(); // TimeTradeServer()
  
  const datetime NewTimeCurrent = TimeCurrent(); // TimeTradeServer()
  const ulong NowTime = GetMicrosecondCount();
  
  if (PrevTimeCurrent < NewTimeCurrent)  
  {
    PrevTimeCurrent = NewTimeCurrent;
    
    PrevStartTime = NowTime;
  }
  
  return(PrevTimeCurrent + (datetime)((NowTime - PrevStartTime) / 1000000));
}
Спасибо, но я считаю, пока нет смысла в такой точности, тем более, что время так и так будет "не реальным", а приближенным и будет зависеть от многих факторов. Чтобы все было точно, нужно, чтобы была возможность получить время с сервера, т.е. если я запрашиваю параметр SymbolInfoDouble( _Symbol, SYMBOL_SESSION_INTEREST ), то и чтобы я сразу мог получить время, например так: SymbolInfoInteger( _Symbol, SYMBOL_SESSION_TIME_INTEREST ) (с точностью до миллисекунд). Вот тогда будет все хорошо!
 
fxsaber:
Можно было точнее. Например, пробежаться по всем символам, сделав запрос SymbolInfoTick (+ CopyTicks). Оттуда выцарапать время в миллисекундах. Только не понимаю, какое практическое применение этому может быть.

Все просто - синхронизация! Все дело в ней! Сейчас доступно много данных: тики, сентимент, стакан. Миллисекундное время есть ТОЛЬКО у тиков! А как быть с временем прихода остальных данных? У стакана - его нет. У сентимента - его тоже нет! Соответственно, если собирать все данные вместе - не получится их синхронизовать! Не возможен комплексный анализ! Не понимаю, почему разработчики не уделяют этому должное внимание. Данные есть, а работать с ними точно - невозможно! Вот и приходится выкручиваться, но даже "костыли" работают, как выяснилось, не всегда правильно.

 
Баг с TimeCurrent() исправили, сказали будет сегодня на MQ-Demo.
 
fxsaber:
Давно назрел штатный миллисекундный аналог TimeCurrent, с его отражением в GUI.
+1. Но для значений, описанных мной выше, лучше, все таки сделать отдельную возможность получения.
 
Alexey Kozitsyn:
Баг с TimeCurrent() исправили, сказали будет сегодня на MQ-Demo.
Хорошо бы сделать за правило
 
fxsaber:
Хорошо бы сделать за правило
Спорно, т.к. кроме создателя заявки никто ничего не поймет. Думаю, подробных описаний вполне достаточно.
 

Ошибка при компиляции: нельзя функцию определить позднее даже при наличии объявления до

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}
void OnStart()
{
    g();
}
int f() { return 0; }
 
A100:

Ошибка при компиляции: нельзя функцию определить позднее даже при наличии объявления до

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}
void OnStart()
{
    g();
}
int f() { return 0; }

По-моему, логично.

А вот почему здесь нет ошибки - не понятно.

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}

class A
{
public:  
  A() { f(); }
};

A a;


void OnStart()
{
    g();
}
int f() { return 0; }
 
fxsaber:

По-моему, логично.

А вот почему здесь нет ошибки - не понятно.

Ошибка логична только если возникает какая-либо есть коллизия. Если все выполняется правильно - то излишние ошибки лишают гибкости

class A; //не зря же такую запись придумали
 
Опять чего-то начудили.

Скомпилировал в версии 1531. При запуске получил:

2017.02.16 18:55:19.101    MQL5    'TradePanel.ex5' has newer unsupported version, please update your client terminal

Хорошо, что не на боевом счете.
Причина обращения: