Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спасибо за ответ. Это очень странно, я действительно использую режим реальных тиков и не знал, что в MT5 есть опция фиксированного спреда, так что я уверен, что это не так (я больше знаком с MT4).Я не заметил, что спреды одинаковы для каждого бара, на самом деле, просматривая полный файл, кажется, что они меняются только на границах 1 минуты. Я предполагаю, что я прав, думая, что вызовы SymbolInfoDouble() должны возвращать цены для обрабатываемого тика в результате вызова события OnTick() - а не какое-то значение M1?
Я пробовал печатать то, что, как я ожидал, будет фактическим временем тика с миллисекундами, используя приведенный ниже код, но значение миллисекунд всегда равно нулю...
EDIT: Как я уже сказал, я относительно новичок в MQL5 - я только что нашел SymbolInfoTick(), может быть, я должен использовать его вместо того, что я делаю! Я попробую это и посмотрю, что произойдет...
Окей, это ничего не изменило, точно такие же результаты, но ни один из них не связан с диалогом "Symbol Ticks" в терминале. Я ошибся, сказав, что значение миллисекунд всегда нулевое - оно ненулевое ровно в течение одной минуты, а именно за минуту до полуночи!
Мне кажется, это довольно важный вопрос. Мой торговый советник ожидает получать тики с ценами, которые соответствуют исходным импортированным тиковым данным (как и любой другой!). Смею предположить, что я что-то делаю не так, но если это так, то я хотел бы знать, что именно.Если нет, то здесь очень серьезная проблема. Я приложил zip-файл с тестовым советником, таблицу с результатами за час после полуночи, а также несколько скриншотов настроек и тиков.
Боюсь, не совсем понятно, как вы создаете свой пользовательский символ. Приложенные csv-файлы одинаковы (BTW, я не знаю, зачем вам нужны две копии под разными именами), и оба имеют неправильный формат: тиковые файлы должны иметь следующие колонки для импорта в пользовательский символ MT5: дата, время, bid, ask, last, volume. Таким образом, в настоящее время невозможно создать пользовательский символ из тиков без дополнительных манипуляций.
Было бы проще, если бы вы выложили изображения импортированных тиков в MT5 UI и лог вашего советника бок о бок. Представленные выше изображения неполные, и тики выглядят по-разному на изображениях и в сравнении с csv-файлами.
Боюсь, не совсем понятно, как вы создаете свой пользовательский символ. Приложенные csv-файлы одинаковы (BTW, я не знаю, зачем вам нужны две копии под разными именами), и оба имеют неправильный формат: тиковые файлы должны иметь следующие колонки для импорта в пользовательский символ MT5: дата, время, bid, ask, last, volume. Таким образом, в настоящее время невозможно создать пользовательский символ из тиков без дополнительных манипуляций.
Было бы проще, если бы вы выложили изображения импортированных тиков в MT5 UI и лог вашего советника бок о бок. Представленные выше изображения неполные, и тики выглядят по-разному на изображениях и в сравнении с csv-файлами.
Тиковые данные были импортированы в MT5 как пользовательский символ из экспорта из моего MT4 'Tick Data Suite' с использованием данных Dukascopy (CSV файлы размером около 8 ГБ).
Файлы csv, которые я отправил, никоим образом не предназначены для импорта в качестве тиковых данных, они являются выходом моего тестового советника (который прилагался), который записывает цены Bid и Ask и время для каждого полученного события OnTick. Эти два файла просто получены разными методами - один использует SymbolInfoDouble(...) для получения цен Bid и Ask, а другой - SymbolInfoTick(...). Тот факт, что они одинаковые, просто доказывает мне, что между методами нет никакой разницы.
Все дело в том, что цены и время Bid и Ask в CSV-файлах, записанных тестовым советником, не совпадают с изображением импортированных тиков в пользовательском интерфейсе MT5 (который я также отправил). Итак...
Мне кажется, что что-то мешает тиковым данным пользовательского символа на пути между хранилищем и событием OnTick советника.
Ниже я попытался как можно точнее совместить часть данных, записанных тестовым советником (слева) и пользовательским интерфейсом MT5 (справа). Точно совместить их невозможно, потому что тиков, записанных советником, меньше, чем в пользовательском интерфейсе MT5. Также обратите внимание, что значение миллисекунд, записанное тестовым советником, равно нулю до 23:59.
Выделенное событие, вероятно, является одним и тем же тиком, но обратите внимание, что тестовый советник записывает разные цены по сравнению с пользовательским интерфейсом...
У вас много "почему", но трудно дать ответ (без предположений). Возможно, проблема в вашей процедуре или исходном коде.
Вы можете опубликовать небольшую часть из 8 Гб истории тиков, которую легко импортировать в пользовательский символ и проверить ваш код.
В норме SymbolInfoTick должен получать точно такие же тики (включая миллисекунды), которые вы видите в графическом интерфейсе MT5 для того же пользовательского символа.
Некоторые тики могут быть пропущены в вашем советнике, если ему требуется слишком много времени на обработку предыдущего тика. Это "слишком много" может быть очень коротким, потому что тики могут приходить очень быстро. Если вы хотите убедиться, что все тики доступны в истории, вам следует вызвать функцию CopyTicks для периода, прошедшего с момента предыдущей обработки тика. Но это не тот вопрос, которым стоит заниматься прямо сейчас - сначала нужно выяснить, что не так с текущим подходом.
Тиковые данные были импортированы в MT5 как пользовательский символ из экспорта из моего MT4 'Tick Data Suite' с использованием данных Dukascopy (CSV файлы размером около 8 ГБ).
Файлы csv, которые я отправил, никоим образом не предназначены для импорта в качестве тиковых данных, они являются выходом моего тестового советника (который прилагался), который записывает цены Bid и Ask и время для каждого полученного события OnTick. Эти два файла просто получены разными методами - один использует SymbolInfoDouble(...) для получения цен Bid и Ask, а другой - SymbolInfoTick(...). Тот факт, что они одинаковые, просто доказывает мне, что между методами нет никакой разницы.
Все дело в том, что цены и время Bid и Ask в CSV-файлах, записанных тестовым советником, не совпадают с изображением импортированных тиков в пользовательском интерфейсе MT5 (который я также отправил). Так что...
Мне кажется, что что-то мешает тиковым данным пользовательского символа на пути между хранилищем и событием OnTick советника.
Ниже я попытался как можно точнее совместить часть данных, записанных тестовым советником (слева) и пользовательским интерфейсом MT5 (справа). Точно совместить их невозможно, потому что тиков, записанных советником, меньше, чем в пользовательском интерфейсе MT5. Также обратите внимание, что значение миллисекунд, записанное тестовым советником, равно нулю до 23:59.
Выделенное событие, вероятно, является одним и тем же тиком, но обратите внимание, что тестовый советник записывает другие цены, чем пользовательский интерфейс...
Похоже, что тики, которые собирает ваш советник, являются симуляцией тиков, а не реальными тиками. Проверьте журналы тестера стратегий.
Спасибо, Ален, я полностью согласен. Тиковые данные есть в пользовательском интерфейсе, но когда они попадают в советник, создается впечатление, что он берет первую попавшуюся пару Bid/Ask и применяет этот спред в течение следующей минуты - или что-то в этом роде.
В любом случае, я просмотрел лог (прилагается), но я не очень уверен, что ожидал увидеть, так что я был бы обязан, если бы вы взглянули и посмотрели, можете ли вы увидеть, что происходит не так. Я также приложил сгенерированный CSV-файл для информации.
Большое спасибо, Дэвид.
Спасибо, Ален, я полностью согласен. Тиковые данные есть в пользовательском интерфейсе, но когда они попадают в советник, создается впечатление, что он берет первую попавшуюся пару Bid/Ask и применяет этот спред в течение следующей минуты - или что-то в этом роде.
В любом случае я просмотрел журнал (прилагается), но я не очень уверен в том, что ожидаю увидеть, поэтому буду признателен, если вы взглянете и посмотрите, сможете ли вы понять, что происходит не так. Я также приложил сгенерированный CSV-файл для информации.
Большое спасибо, Дэвид.
В вашем журнале написано "генерируется каждый тик", что означает искусственные тики. Должно быть "генерируется на основе реальных тиков". Пожалуйста, ознакомьтесь с документацией тестера.
Опять же, если вы хотите, чтобы кто-то другой протестировал ваш пользовательский символ, предоставьте совместимый CSV-файл, а не свой собственный формат.
В вашем журнале написано "генерация каждого тика", что означает искусственные тики. Должно быть "генерация на основе реальных тиков". Пожалуйста, обратитесь к документации тестера.
Опять же, если вы хотите, чтобы кто-то другой протестировал ваш пользовательский символ, предоставьте совместимый CSV-файл, а не свой собственный формат.
Спасибо, Станислав, я ценю помощь каждого, но я нигде не могу разобраться.
Я проверил документацию и не могу найти ничего, чтобы сказать мне, почему тестер будет генерировать искусственные тики, когда у него есть полный набор тиковых данных! На самом деле, там говорится...
Повторюсь, что CSV-файлы - это выход моего тестового советника, который просто записывает цены полученных тиков и не имеет никакого отношения к тиковым данным, которые я импортировал в пользовательский символ - поэтому их формат совершенно не важен.
Итак, что я сделал...
Потому что вы не выбрали"Каждый тик основан на реальных тиках " в настройках тестера:
Тоже наткнулся на "HistoryCache: container header read error [0]" и следующий за ним "HistoryBase: invalid container (1970.01.01) found".
При этом, из истории пользовательского инструмента удаляется история за январь 2022, получается гэп с 31 декабря по сегодня.
Проявляется только на 2х компьютерах, ресурсов достаточно.
@Slava, какие нужны детали для воспроизведения?
Еще раз случилось. При переходе через полночь, похоже:
В какую сторону копать?
Потому что вы не выбрали"Каждый тик основан на реальных тиках " в настройках тестера:
Аа, наконец-то :-)
Спасибо, Фернандо, я подозревал, что я делаю что-то глупое, но я просто не мог этого увидеть! Как я уже сказал, я гораздо больше знаком с MT4 (около 8 лет) и я не заметил, что в MT5 есть две опции "£Every Tick". Я просто запустил ее, увидел, что она установлена на "Every Tick" и предположил, что если у нее есть реальные тики, она будет использовать их.
Это должно было быть что-то простое, и я еще раз благодарю вас за то, что вы заметили это.
Дэвид.