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

 
Vict:

Как CJVal создаёте? наверное new CJVal()?

Вряд ли терминал такое отлавливает.

Нет, как в примере автора библы, на стек

CJAVal js(NULL, jtUNDEF);
 

Обнаружил, что у меня в режиме визуального тестирования функция SymbolInfoTick() возвращает одно значение, а таймсерия Close[0] имеет другое.

Это ошибка моя ? Я что-то делаю не так ?

Вроде как должны быть одинаковые значения:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   MqlTick mtLastTick;
   SymbolInfoTick(Symbol(),mtLastTick);
   
   ArraySetAsSeries(close,true);


   Comment("Close[0] = " + DoubleToString(close[0],5) + "\nLastBid = " + DoubleToString(mtLastTick.bid,5));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Как правило, разница составляет 1-2 пункта, но на резких движениях бывает и больше. 

Это только у меня так ?

Пока что принял таймсерию за "более правильную", если выясняется, что SymbolInfoTick() дает значение, отличающееся от Close[0], считаю, что правильное значение - именно Close[0], спред оставляю тот же, что вернуло SymbolInfoTick().

Но, все же интересно понять, какая цена правильна, на какую цену "смотрит" ДЦ - на SymbolInfoTick() или на Close[0]

Файлы:
TestTick.mq5  2 kb
 
Georgiy Merts:

Обнаружил, что у меня в режиме визуального тестирования функция SymbolInfoTick() возвращает одно значение, а таймсерия Close[0] имеет другое.

Это ошибка моя ? Я что-то делаю не так ?

Вроде как должны быть одинаковые значения:

Как правило, разница составляет 1-2 пункта, но на резких движениях бывает и больше. 

Это только у меня так ?

Пока что принял таймсерию за "более правильную", если выясняется, что SymbolInfoTick() дает значение, отличающееся от Close[0], считаю, что правильное значение - именно Close[0], спред оставляю тот же, что вернуло SymbolInfoTick().

Но, все же интересно понять, какая цена правильна, на какую цену "смотрит" ДЦ - на SymbolInfoTick() или на Close[0]

Еще есть SymbolInfoDouble(_Symbol,SYMBOL_BID)

 
Andrey Barinov:

Еще есть SymbolInfoDouble(_Symbol,SYMBOL_BID)

Да, возвращает тоже самое, что SymbolInfoTick().

 

Подскажите по глобальным переменным. Решил задачу сохранения тиков из Обзора рынка.

Каждый новый тик увеличивает соответствующую глобальную переменную на единицу. На глаз в Обзор рынка приходит около 100 тиков в секунду.

Итого глобальные переменные обновляются с частотой 100 Гц. Меня интересует, не влияет ли это негативно на SSD?

Сами тики записываю через каждые 1000 (за неделю набегает ~1 Gb). Т.е. с этим все в порядке. А вот с глобальными - раньше не задумывался, что они пишутся на SSD  с каждым обновлением.

Поэтому и возник такой вопрос.

 
fxsaber:

Подскажите по глобальным переменным. Решил задачу сохранения тиков из Обзора рынка.

Каждый новый тик увеличивает соответствующую глобальную переменную на единицу. На глаз в Обзор рынка приходит около 100 тиков в секунду.

Итого глобальные переменные обновляются с частотой 100 Гц. Меня интересует, не влияет ли это негативно на SSD?

Сами тики записываю через каждые 1000 (за неделю набегает ~1 Gb). Т.е. с этим все в порядке. А вот с глобальными - раньше не задумывался, что они пишутся на SSD  с каждым обновлением.

Поэтому и возник такой вопрос.

Они не пишутся на диск с каждым обновлением

 
fxsaber:

Подскажите по глобальным переменным. Решил задачу сохранения тиков из Обзора рынка.

Каждый новый тик увеличивает соответствующую глобальную переменную на единицу. На глаз в Обзор рынка приходит около 100 тиков в секунду.

Итого глобальные переменные обновляются с частотой 100 Гц. Меня интересует, не влияет ли это негативно на SSD?

Сами тики записываю через каждые 1000 (за неделю набегает ~1 Gb). Т.е. с этим все в порядке. А вот с глобальными - раньше не задумывался, что они пишутся на SSD  с каждым обновлением.

Поэтому и возник такой вопрос.

Я думаю, что глобальные переменные терминала реализованы через ресурсы с периодическим автосохранением на диск. Не думаю, что автосохранение происходит чаще, чем раз в 3 секунды, скорее всего гораздо реже, и даже не исключено, что только только при наступлении события deinit.

 

не хочу искать что когда то в справке читал по поводу глобальных переменных терминала, но кажется их сохранение происходит в момент закрытия терминала - хотя могу запамятовать, давно читал

проще проверить, в Виндовс в диспетчере задач есть диаграмма использования жесткого диска


 
Igor Makanu:

не хочу искать что когда то в справке читал по поводу глобальных переменных терминала, но кажется их сохранение происходит в момент закрытия терминала - хотя могу запамятовать, давно читал

проще проверить, в Виндовс в диспетчере задач есть диаграмма использования жесткого диска


Наверно тут в примечании

 
Спасибо всем ответившим. Flush-функция сразу отмела все двоякие толкования.
Причина обращения: