Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
да
Спасибо! Вот это новость!
ничего удивительного в этом нет.
наличие экспертов на чарте не мешает ведь индикаторам расчитываться :)
просто наверно имеется ввиду, что событие прихода тика генерируется уже после обсчета индикаторов.
то есть сначала расчет, потом вызов. Но если у вас события не обрабатывается, то обсчет индикаторов все равно произведётся.
Но если у вас события не обрабатывается, то обсчет индикаторов все равно произведётся.
Да, но расчёт индикаторов будет в моём случае синхронизирован с приходом тиков по чужому символу (символу, к которому прикрёплён сам эксперт). Вот это вот стало неожиданностью.
дело в том, что если мы ведем речь про тестер, то чартовые события от объектов... а такие там есть?
по-моему месяц назад еще не было, может что поменялось, чего я не видел?
поэтому эксперт только на чартовых событиях в тестере работать не будет. так как событий нет. да и размера чарта тоже :) попробуйте в тестере получить ChartGetXXX . везде нули возвращает.
дело в том, что если мы ведем речь про тестер, то чартовые события от объектов... а такие там есть?
по-моему месяц назад еще не было, может что поменялось, чего я не видел?
поэтому эксперт только на чартовых событиях в тестере работать не будет. так как событий нет. да и размера чарта тоже :) попробуйте в тестере получить ChartGetXXX . везде нули возвращает.
Сама по себе эта задумка в тестере работает.
Если все работает, то в чем тогда проблема у вас в коде?
OnCalculation далеко находится, чтоб проверку сделать?
Если все работает, то в чем тогда проблема у вас в коде?
Да нет проблем в коде. Вы подтвердили моё предположение, что в описанном выше случае индикаторы пересчитываются в тестере с частотой тиков чужого символа. Это значит, что индикаторы пересчитываются не с той частотой, которую генерировал бы тестер при нахождении каждого индикатора на "своём" символе. Ну что ж, что тут проверять, придётся приспосабливаться. Если, конечно, Ваше подтверждение - правильное :)
Выдержка из статьи:
Наличие обработчика OnTick() в эксперте не является обязательным для того, чтобы его можно было подвергнуть проверке на исторических данных в тестере терминала MetaTrader 5. Достаточно того, чтобы в советнике была хотя бы одна функция-обработчик из перечисленных:
OnTick() - обработчик события прихода нового тика;
OnTrade() - обработчик торгового события;
OnTimer() - обработчик события прихода сигнала от таймера;
OnChartEvent() - обработчик пользовательских событий...
Уважаемые разработчики, просьба прокомментировать, а что с функцией OnTradeTransaction() ?
Есть ли в планах решение по её нормальной работе в Тестере?
По поводу раздела "Синхронизация баров при тестировании в режиме "Только цены открытия""
Если советник для работы запрашивает данные о цене из последней свечи, то функция синхронизации - нужна. Ведь цены Open разных баров могут сильно отличаться.
А если советник использует данные из SymbolInfoDouble(simbol,SYMBOL_BID) и SymbolInfoDouble(simbol,SYMBOL_ASK) - то можно не усложнять код и ресурсоемкость эксперта.
В данном варианте работы, если новый бар по другому символу не появился, то SymbolInfoDouble(simbol,SYMBOL_BID) вернет последнюю известную цену, т.е. цену Close предыдущего бара. А цена Close предудущего бара от цены Open нового бара отличается на движение цены за 1 тик (между последним тиком предыдущего бара и первым тиком нового бара). Т.е. этой разницей можно пренебречь.
Это можно проверить, вставив строку
Print(_Symbol," = ",SymbolInfoDouble(_Symbol,SYMBOL_BID)," ",other_symbol," = ",SymbolInfoDouble(other_symbol,SYMBOL_BID));
до и после цикла синхронизации.
Вот пример лога:
2016.09.01 12:31:00 На символе EURUSD открылся новый бар в 2016.09.01 12:31
2016.09.01 12:31:00 EURUSD = 1.11389 USDJPY = 103.534
2016.09.01 12:31:00 Подождем 5 секунд..
2016.09.01 12:31:05 Время открытия последнего бара на своем символе EURUSD: 2016.09.01 12:31
2016.09.01 12:31:05 Время открытия последнего бара на символе USDJPY: 2016.09.01 12:31
2016.09.01 12:31:05 Бары синхронизировались в 2016.09.01 12:31:05
2016.09.01 12:31:05 EURUSD = 1.11389 USDJPY = 103.532