Скачать MetaTrader 5

SymbolIsSynchronized() Вопросы

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Yedelkin
4532
Yedelkin  

В Справочнике несколько раз упоминается про такое понятие, как синхронизация данных из базы терминала с серверными данными, но нигде не сказано, что именно представляет собой эта синхронизация, и какие последствия она влечёт. В Википедии говорится следующее: "Синхронизация данных — ликвидация различий между двумя копиями данных; предполагается, что ранее эти копии были одинаковы, а затем одна из них, либо обе были независимо изменены".

Правильно ли я понимаю, что  синхронизация данных терминала с серверными данными означает полную сиюмоментную идентичность баз терминала и сервера по символу? И что при наличии синхронизации не может быть таких ситуаций, при которых ордер или позиция появились (исчезли) на сервере, а в терминал такие  сведения ещё не успели поступить?

Вопрос вызван ранее поднятой темой "OrderSend() Вопросы", когда сведения о новом выставленном ордере не успевали доходить до терминала, и эксперт, не видя изменений на сервере, выставлял дублирующий ордер. Аналогичная ситуация случается и с позициями, коогда сведения об их наличии/закрытии приходят с опозданием, и эксперт не видит реальное состояние дел.

Соответственно, вопрос сводится к тому, можно  при получении SymbolIsSynchronized()==true быть уверенным, что функции OrdersTotal(), PositionsTotal(), PositionSelect() и т.д. возвращают из базы терминала самые актуальные данные, отражающие данные сервера? И чтто при получении SymbolIsSynchronized()==true не может быть ситуации, когда, допустим, позиция закрылась, а сведения о её наличии всё ещё сохраняются в базе терминала?

...Или, скажем так, синхронизация относится только к ценовым данным? 

Slava
Модератор
6922
Slava  

Процесс синхронизации Вы описали вполне точно. Речь идёт именно о ценовых данных в аспекте "ликвидация различий между двумя копиями данных; предполагается, что ранее эти копии были одинаковы, а затем одна из них, либо обе были независимо изменены"

К списку ордеров синхронизированность данных по символу не имеет никакого отношения.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - Документация по MQL5
Yedelkin
4532
Yedelkin  
stringo:

Процесс синхронизации Вы описали вполне точно. Речь идёт именно о ценовых данных в аспекте "ликвидация различий между двумя копиями данных; предполагается, что ранее эти копии были одинаковы, а затем одна из них, либо обе были независимо изменены"

К списку ордеров синхронизированность данных по символу не имеет никакого отношения.

Спасибо, понятно!

Второй вопрос: функции SymbolIsSynchronized() и SeriesInfoInteger(Symbol(),0,SERIES_SYNCRONIZED) полностью идентичны по результату работы, или же первая обеспечивает "общую" синхронизацию по символу, а вторая - только по паре символ/период?

Roffild
1407
Roffild  

И где же точный ответ на последний вопрос?

Период игнорируется?

Slava
Модератор
6922
Slava  
Roffild:

И где же точный ответ на последний вопрос?

Период игнорируется?

Да. Период игнорируется, так как не имеет смысла.

Если символ синхронизирован - это означает, что синхронизированы именно минутки. Все остальные периоды выстраиваются на лету из минуток.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий