В чем дело не поясню, но попробуйте заменить
if(tickbar.time > 0 && tickbar.time != (((long)tick.time)/60)*60) {
на что-нибудь, похожее на
if( tickbar.time > 0 && tickbar.time != (long)(tick.time/60+0.5)*60 ) {
В чем дело не поясню, но попробуйте заменить ...
Алексей, спасибо за совет. Попробовал, результат все тот же
FXCM-USDDemo02 - все нормально:
2015.12.08 19:10:05.306 TicksAndRatesCompatibility EURUSD,M1: 2015.12.08 19:10: RatesOHLCV[1.0872 1.08721 1.08713 1.08714 94] TickOHLCV[1.0872 1.08721 1.08713 1.08714 81]
2015.12.08 19:09:08.398 TicksAndRatesCompatibility EURUSD,M1: 2015.12.08 19:09: RatesOHLCV[1.08723 1.08733 1.08713 1.0872 161] TickOHLCV[1.08723 1.08733 1.08713 1.0872 139]
2015.12.08 19:08:08.181 TicksAndRatesCompatibility EURUSD,M1: 2015.12.08 19:08: RatesOHLCV[1.08744 1.08744 1.08721 1.08724 131] TickOHLCV[1.08744 1.08744 1.08721 1.08724 99]
FXCM-EURDemo01 - все та же ерунда:
2015.12.08 19:15:03.982 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 17:15: RatesOHLCV[1.08762 1.08786 1.08762 1.08786 119] TickOHLCV[1.08751 1.08775 1.08751 1.08775 105]
2015.12.08 19:14:06.667 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 17:14: RatesOHLCV[1.08738 1.08765 1.08738 1.08765 133] TickOHLCV[1.08727 1.08754 1.08727 1.08754 119]
2015.12.08 19:13:03.765 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 17:13: RatesOHLCV[1.08747 1.08747 1.08734 1.08737 79] TickOHLCV[1.08736 1.08736 1.08723 1.08726 72]
Как мне кажется, тип datetime должен быть достаточно "точным" (в отличие от "неточных", с плавающей точкой), из документации - "The datetime type is intended for storing the date and time as the number of seconds elapsed since January 01, 1970. This type occupies 8 bytes of memory." Т.е., по сути, это ulong. Не думаю что там могут иметь место "floating-point эффекты"...
Не хочется думать, что брокер (сервер) отгружает "несинхронизированные" данные, но пока других объяснений не нахожу...
Если Вы о данных серверов USD и EUR, то они не синхронизированы.
Нет, разумеется. Имеется ввиду несоответствие данных, которые отгружают функции ArrayCopyRates и SymbolInfoTick в обработчике OnTick от одного сервера. Понимаю, что так быть не должно, но в случае с FXCM-EURDemo01 наблюдается явное несоответствие.
FXCM-USDDemo02 и FXCM-EURDemo01 - кто из них один сервер?
Когда МТ4 подключается к торговому счету FXCM-USDDemo02 или FXCM-EURDemo01, в конкретный момент времени он взаимодействует с одним (физическим) сервером.
Если бы эта проблема была лишь на FXCM-EURDemo01, можно было бы заподозрить "демо" в некорректной работе. Но проблема возникла и на реальном торговом сервере FXCM-USDReal05:
2015.12.08 22:13:04.247 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 22:13: RatesOHLCV[1.08931 1.08931 1.0891 1.08911 144] TickOHLCV[1.08942 1.08942 1.08921 1.08922 123]
2015.12.08 22:12:04.014 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 22:12: RatesOHLCV[1.08912 1.08942 1.08911 1.08931 226] TickOHLCV[1.08922 1.08953 1.08922 1.08942 188]
2015.12.08 22:11:04.298 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 22:11: RatesOHLCV[1.08904 1.08913 1.08903 1.08912 167] TickOHLCV[1.08915 1.08924 1.08914 1.08923 155]
Когда МТ4 подключается к торговому счету FXCM-USDDemo02 или FXCM-EURDemo01, в конкретный момент времени он взаимодействует с одним (физическим) сервером.
Если бы эта проблема была лишь на FXCM-EURDemo01, можно было бы заподозрить "демо" в некорректной работе. Но проблема возникла и на реальном торговом сервере FXCM-USDReal05:
2015.12.08 22:13:04.247 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 22:13: RatesOHLCV[1.08931 1.08931 1.0891 1.08911 144] TickOHLCV[1.08942 1.08942 1.08921 1.08922 123]
2015.12.08 22:12:04.014 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 22:12: RatesOHLCV[1.08912 1.08942 1.08911 1.08931 226] TickOHLCV[1.08922 1.08953 1.08922 1.08942 188]
2015.12.08 22:11:04.298 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 22:11: RatesOHLCV[1.08904 1.08913 1.08903 1.08912 167] TickOHLCV[1.08915 1.08924 1.08914 1.08923 155]
Уберите ошибки из программы. Хотя-бы те, которые совпадают с указанной мною.
Обратите внимание на то, что Ваш алерт кричит каждую минуту,- т.е. на каждом баре - и ровно один раз.
Здравствуйте, форумчане!
Столкнулся с проблемой несоответствия тиковых данных и котировок, и никак не возьму в толк как так может быть...
В аттаче простенький эксперт, который сравнивает тиковые данные и котировки за минуту.
Во-первых, эксперт по определению не может получит все тики, дошедшие до терминала. Это возможно только для индикатора.
Во-вторых, никто не гарантирует, что именно Ваш терминал получает все тики, которые транслирует сервер. Пакеты могут и потеряться при передаче по сети.
В-третьих, никто не знает, каким образом формируются данные о количестве тиков на стороне сервера.
Поэтому количество тиков, полученных терминалом, и количество тиков, указанных брокером, вовсе не обязаны совпадать.
Во-первых, эксперт по определению не может получит все тики, дошедшие до терминала. Это возможно только для индикатора.
Во-вторых, никто не гарантирует, что именно Ваш терминал получает все тики, которые транслирует сервер. Пакеты могут и потеряться при передаче по сети.
В-третьих, никто не знает, каким образом формируются данные о количестве тиков на стороне сервера.
Поэтому количество тиков, полученных терминалом, и количество тиков, указанных брокером, вовсе не обязаны совпадать.
Проблема не в количестве тиков, а в том, что тиковые максимум/минимум не могут "вылазить" за максимум/минимум котировочного бара за тот же период. На FXCM-USDDemo02 так и есть, а вот на FXCM-EURDemo01 и FXCM-USDReal05 почему-то "вылазят"...
Уберите ошибки из программы. Хотя-бы те, которые совпадают с указанной мною.
Обратите внимание на то, что Ваш алерт кричит каждую минуту,- т.е. на каждом баре - и ровно один раз.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте, форумчане!
Столкнулся с проблемой несоответствия тиковых данных и котировок, и никак не возьму в толк как так может быть...
В аттаче простенький эксперт, который сравнивает тиковые данные и котировки за минуту.
На FXCM-USDDemo02 все нормально, полное (почти) соответствие, к примеру:
2015.12.08 17:13:03.331 TicksAndRatesCompatibility EURUSD,M1: 2015.12.08 17:13: RatesOHLCV[1.08809 1.08827 1.08805 1.08824 442] TickOHLCV[1.08809 1.08827 1.08805 1.08824 374]
2015.12.08 17:12:03.349 TicksAndRatesCompatibility EURUSD,M1: 2015.12.08 17:12: RatesOHLCV[1.08784 1.0884 1.08784 1.08809 618] TickOHLCV[1.08784 1.0884 1.08784 1.08809 508]
2015.12.08 17:11:03.328 TicksAndRatesCompatibility EURUSD,M1: 2015.12.08 17:11: RatesOHLCV[1.08782 1.08801 1.08771 1.08784 461] TickOHLCV[1.08782 1.08801 1.08771 1.08783 389]
А вот на FXCM-EURDemo01 получается какая-то ерунда:
2015.12.08 17:18:03.369 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 15:18: RatesOHLCV[1.0885 1.08878 1.08843 1.08878 275] TickOHLCV[1.08839 1.08867 1.08832 1.08867 253]
2015.12.08 17:17:04.757 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 15:17: RatesOHLCV[1.08849 1.08859 1.0884 1.08849 400] TickOHLCV[1.08838 1.08848 1.08829 1.08838 347]
2015.12.08 17:16:03.312 TicksAndRatesCompatibility EURUSD,M1: Alert: 2015.12.08 15:16: RatesOHLCV[1.08855 1.0886 1.08843 1.08849 356] TickOHLCV[1.08844 1.08849 1.08832 1.08838 310]
Буду весьма признателен, если кто-нибудь пояснит мне в чем тут дело.