Переход через сутки корректный. Метод проверки: при включённом терминале стёр файлы тиковой истории. Затем запустил скрипт два раза (так как истории не было, то первый запуск скрипта инициализировал загрузку истории).
Да, спасибо, так же сделал - помогло. Однако, очень странное поведение.
Обратите внимание на тики, пришедшие в 9.44.41 и далее. Теперь история по тому же символу, в за же время, в том же режиме (ALL) только запрошенная уже сегодня:
Я же точно указал - нет никакой структуры или логики в заполнении тиков. Каждое ценовое поле независимо от других. Что придет от поставщика, то и транслируется.
Ренат, получается от поставщика одни и те же тики с зависимости от времени запроса еще и по разному могут приходить!?
Зависит ли формат истории от сервера, к которому подключен?
Это будет, по обещаниям, в следующем билде и, я уверен, там будут свои фишки.
Хорошо было бы если без "фишек", и нормально.. а то устал от таких графиков с надписью 99% кач-во моделирования... а на реале даже близко не пахнет :) Как по мне, такого в принципе быть не должно, иначе это не тестер а игрушка. А на стратегиях по закрытию баров много каши не наваришь..
Хорошо было бы если без "фишек", и нормально.. а то устал от таких графиков с надписью 99% кач-во моделирования... а на реале даже близко не пахнет :) Как по мне, такого в принципе быть не должно, иначе это не тестер а игрушка. А на стратегиях по закрытию баров много каши не наваришь..
Без фишек, сразу редко бывает. Тиковой истории ждали долго и хочется ее скорее довести до ума. И в тестере, и на реале. К сожалению, обратной реакции не много. Надеюсь, работа по доведению до ума идет.
Уточните пожалуйста по флагу получения тиков COPY_TICKS_INFO (только Bid и Ask) - Bid и Ask и дальше могут быть со значением "0" или при режиме COPY_TICKS_INFO – Bid и Ask не будут содержать нулей и поток тиков будет аналогичен тому, что есть в терминале, в окне "Обзор рынка", вкладка "Тики"?
Решат в билде 1200:
MQL5: Расширен формат структуры MqlTick. Теперь в ней передается время прихода тика в миллисекундах, а также флаги, позволяющие определить, какой именно параметр тика изменился.
struct MqlTick
{
datetime time; // Время последнего обновления ценdouble bid; // Текущая цена Biddouble ask; // Текущая цена Askdouble last; // Текущая цена последней сделки (Last)ulong volume; // Объем для текущей цены Lastlong time_msc; // Время последнего обновления цен в миллисекундахuint flags; // Флаги тиков
};
У каждого тика всегда заполняются все параметры, независимо от того, изменились ли данные по сравнению с предыдущим тиком. Это позволяет всегда иметь актуальное состояние цен на любой момент времени без поиска предыдущих значений по тиковой истории. Например, с тиком могла измениться только цена бид, но в структуре помимо новой цены будут указаны и остальные параметры: предыдущая цена аск, объем и т.д. Чтобы узнать, какие именно данные изменились с текущим тиком, анализируйте его флаги:
TICK_FLAG_BID - тик изменил цену бид
TICK_FLAG_ASK - тик изменил цену аск
TICK_FLAG_LAST - тик изменил цену последней сделки
TICK_FLAG_VOLUME - тик изменил объем
TICK_FLAG_BUY - тик возник в результате сделки на покупку
TICK_FLAG_SELL - тик возник в результате сделки на продажу
Структура MqlTick используется в двух методах:
CopyTicks - метод не поддерживает старый формат структуры. Скомпилированные ранее файлы EX5, использующие старый формат тика, при вызове функции CopyTicks будут возвращать ошибку 4006 (ERR_MQL_INVALID_ARRAY).
SymbolInfoTick - метод поддерживает и старый, и новый формат структуры.
А как правильно в терминале отслеживать приход нового тика? Например, в тестере.
"Функция OnTick() не является обработчиком каждого тика, она уведомляет эксперта об изменениях на рынке. Изменения могут быть пакетными: в терминал может одновременно прийти несколько тиков, но функция OnTick() будет вызвана лишь один раз для уведомления эксперта о последнем состоянии рынка."
А как правильно в терминале отслеживать приход нового тика? Например, в тестере.
"Функция OnTick() не является обработчиком каждого тика, она уведомляет эксперта об изменениях на рынке. Изменения могут быть пакетными: в терминал может одновременно прийти несколько тиков, но функция OnTick() будет вызвана лишь один раз для уведомления эксперта о последнем состоянии рынка."
Если нужно отслеживать каждый тик, то тогда это нужно делать в индикаторе. Индикатор, в отличии от советника, обрабатывает каждый тик.
Добавлено: теперь можно и в советнике анализировать все тики - только нужно вводить проверки (например анализировать запрос CopyTicks глубиной 5 тиков).
проверяю закачку тиков. На некоторых инструментах требуемые 500 тиков закачиваются буквально на первом или втором тике и при этом скачивается не более 200 Кб (инструменты просто перетаскиваю из "Обзора рынка" на график).
А вот на некоторых начинаются чудеса: история тиков не желает отдавать мне требуемые 500 тиков, но при этом терминал закачивает около 20 Мб истории (история за 10 и 9 месяцы).
Вот то, что просили:
Переход через сутки корректный.
Метод проверки: при включённом терминале стёр файлы тиковой истории. Затем запустил скрипт два раза (так как истории не было, то первый запуск скрипта инициализировал загрузку истории).
Правда странное поведение на этом не заканчивается. Решил сравнить два момента запроса одной и той же истории.
Первый момент был вчера, когда я писал об ошибке прихода с пятницы на понедельник:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Тиковая история
Tapochun, 2015.10.19 08:48
Немного погодя - картина такая. Режим ALL 3000 тиков:
Дыра в истории. В режиме INFO - аналогично.
Обратите внимание на тики, пришедшие в 9.44.41 и далее. Теперь история по тому же символу, в за же время, в том же режиме (ALL) только запрошенная уже сегодня:
Метод доставки отличается. И, определенно, миллисекунд не хватает.
И как в такой ситуации анализировать тики?!
Все верно.
Я же точно указал - нет никакой структуры или логики в заполнении тиков. Каждое ценовое поле независимо от других. Что придет от поставщика, то и транслируется.
Ренат, получается от поставщика одни и те же тики с зависимости от времени запроса еще и по разному могут приходить!?
Зависит ли формат истории от сервера, к которому подключен?
Это будет, по обещаниям, в следующем билде и, я уверен, там будут свои фишки.
Хорошо было бы если без "фишек", и нормально.. а то устал от таких графиков с надписью 99% кач-во моделирования... а на реале даже близко не пахнет :) Как по мне, такого в принципе быть не должно, иначе это не тестер а игрушка. А на стратегиях по закрытию баров много каши не наваришь..
Хорошо было бы если без "фишек", и нормально.. а то устал от таких графиков с надписью 99% кач-во моделирования... а на реале даже близко не пахнет :) Как по мне, такого в принципе быть не должно, иначе это не тестер а игрушка. А на стратегиях по закрытию баров много каши не наваришь..
Без фишек, сразу редко бывает. Тиковой истории ждали долго и хочется ее скорее довести до ума. И в тестере, и на реале. К сожалению, обратной реакции не много. Надеюсь, работа по доведению до ума идет.
Уточните пожалуйста по флагу получения тиков COPY_TICKS_INFO (только Bid и Ask) - Bid и Ask и дальше могут быть со значением "0" или при режиме COPY_TICKS_INFO – Bid и Ask не будут содержать нулей и поток тиков будет аналогичен тому, что есть в терминале, в окне "Обзор рынка", вкладка "Тики"?
Решат в билде 1200:
У каждого тика всегда заполняются все параметры, независимо от того, изменились ли данные по сравнению с предыдущим тиком. Это позволяет всегда иметь актуальное состояние цен на любой момент времени без поиска предыдущих значений по тиковой истории. Например, с тиком могла измениться только цена бид, но в структуре помимо новой цены будут указаны и остальные параметры: предыдущая цена аск, объем и т.д. Чтобы узнать, какие именно данные изменились с текущим тиком, анализируйте его флаги:
Структура MqlTick используется в двух методах:
Итак:
и обновлённая структура MqlTick:
Итак:
и обновлённая структура MqlTick:
А как правильно в терминале отслеживать приход нового тика? Например, в тестере.
"Функция OnTick() не является обработчиком каждого тика, она уведомляет эксперта об изменениях на рынке. Изменения могут быть пакетными: в терминал может одновременно прийти несколько тиков, но функция OnTick() будет вызвана лишь один раз для уведомления эксперта о последнем состоянии рынка."
А как правильно в терминале отслеживать приход нового тика? Например, в тестере.
"Функция OnTick() не является обработчиком каждого тика, она уведомляет эксперта об изменениях на рынке. Изменения могут быть пакетными: в терминал может одновременно прийти несколько тиков, но функция OnTick() будет вызвана лишь один раз для уведомления эксперта о последнем состоянии рынка."
Если нужно отслеживать каждый тик, то тогда это нужно делать в индикаторе. Индикатор, в отличии от советника, обрабатывает каждый тик.
Добавлено: теперь можно и в советнике анализировать все тики - только нужно вводить проверки (например анализировать запрос CopyTicks глубиной 5 тиков).
Build 1192. Windows 10 x32.
Предварительно полностью удалил папку тиковой истории сервера MetaQuotes-Demo. Индикатором
проверяю закачку тиков. На некоторых инструментах требуемые 500 тиков закачиваются буквально на первом или втором тике и при этом скачивается не более 200 Кб (инструменты просто перетаскиваю из "Обзора рынка" на график).
А вот на некоторых начинаются чудеса: история тиков не желает отдавать мне требуемые 500 тиков, но при этом терминал закачивает около 20 Мб истории (история за 10 и 9 месяцы).