Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 896
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Для эксперта (EA), когда MetaTrader получает новую котировку ("тик"), терминал вызывает стандартную функцию обработки событий OnTick(). Однако стандартной функции обработки событий, связанных с началом нового бара (свечи), не существует.
Чтобы определить это, необходимо следить за временем открытия последнего бара. Когда оно изменится, это будет означать начало нового бара, и вы сможете отреагировать на ситуацию и обработать событие. Следующий пример кода, совместимый как с MQL4, так и с MQL5, демонстрирует один из способов, как этого можно добиться:
// Стандартный обработчик событий тика void OnTick() { // Проверьте наличие нового бара (совместимо с MQL4 и MQL5). static datetime dtBarraCorrente = WRONG_VALUE; datetime dtBarraPrecedente = dtBarraCorrente; dtBarraCorrente = iTime( _Symbol, _Period, 0 ); bool bEventoBarraNova = ( dtBarraCorrente != dtBarraPrecedente ); // Реагируйте на событие появления нового бара и справляйтесь с ситуацией. if( bEventoBarraNova ) { // Определите, является ли это первым полученным тиком, и справьтесь с ситуацией. /* Например, когда он впервые применяется к графику и бар находится где-то в середине своего продвижения и не является началом нового бара. */ if( dtBarraPrecedente == WRONG_VALUE ) { // Сделайте что-нибудь на первом тике или в середине бара ... } else { // Сделайте что-нибудь, когда появится обычный бар ... }; // Сделайте что-нибудь, не зависящее от предыдущего условия ... } else { // Сделайте что-нибудь еще ... }; // Делайте другие вещи ... };
В предыдущем коде статическая переменная отслеживает время открытия бара даже при возврате из функции OnTick(). В отличие от обычной локальной переменной, она запоминает содержимое своих данных и не освобождает их при выходе из функции. Это ключ к обнаружению изменения времени открытия текущего бара.
Также важно отметить, что при первом размещении советника на графике предыдущий код реагирует так, как будто бар только что открылся. Это условие требует особого подхода, если ситуация должна быть обработана по-другому.
Обратите внимание, что исходный код всех моих публикаций в CodeBase теперь также доступен через "Публичные проекты" MetaEditor под именем "FMIC".
Перевод с португальского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/pt/code/41601
Spreads
Индикатор спреда двух символов
Population-based optimization algorithms
Здесь собраны популяционные алгоритмы оптимизации. В архиве все необходимые файлы для запуска алгоритмов на тестовых функциях.
Пан Призма № рычаг 72
Постройте движущуюся линию с полиномом 4 степени. Экстраполирует синусоиду и ее ось. Построенные линии удаляют одно значение на каждом отрезке, и строится скользящая линия экстраполированных значений, которая не перерисовывается.
Базовая библиотека для создания профилей томов
Базовая библиотека для создания профилей объемов на графике.