Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте, скинули мне индикатор МА, там сразу все необходимые для меня уровни. Проблема в том - что при наведении мышки на индикатор (каждый МА) не показывает период данной МА. Как исправить этот момент? Постоянно ошибка синтаксиса при изменении имени IndicatorShortName("MASHKI =)"); Помогите пожалуйста.
имя индикаторного буфера задается с помощью SetIndexLabel
1. Какой самый дешевый способ узнать, что вызов функции происходит на том же тике, что и предыдущий вызов?
Время (TimeCurrent) может остаться тем же, время в мс из SymbolInfoTick, теоретически, тоже.
Сравнивать бид, аск и время в мс — дороговато.
Вариант с организацией контроля в самом советнике не предлагать, хочется именно универсальную независимую функцию получить.
2. Аналогичный вопрос для торговых операций. Как узнать, что с момента последнего запуска что-то изменилось в списке ордеров/позиций (включая уровни открытия, СЛ и ТП)?
В пятерке напрашивается взвод какого-то флага в ОнТрейд (и сброс после выполнения), дешевле не придумать.
Но, опять же, хотелось бы универсального решения.
У кого какие идеи?
Andrey Khatimlianskii:
Пример https://www.mql5.com/ru/code/16997
Файл Resources.mqh
Функция IsNewPeriod
Основная идея - использовать функцию со static внутри.
Для запоминания и сверки тиков можно хранить в ID = GetMicroSecondsCount
Для того же с ордерами - проверять magic
Псевдо-код ниже не проверял :)
2. Аналогичный вопрос для торговых операций. Как узнать, что с момента последнего запуска что-то изменилось в списке ордеров/позиций (включая уровни открытия, СЛ и ТП)?
В пятерке напрашивается взвод какого-то флага в ОнТрейд (и сброс после выполнения), дешевле не придумать.
Но, опять же, хотелось бы универсального решения.
У кого какие идеи?
Добавьте свои условия (SL/TP и т.д.) сюда.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Организация цикла перебора ордеров
fxsaber, 2017.10.18 12:29
1. Какой самый дешевый способ узнать, что вызов функции происходит на том же тике, что и предыдущий вызов?
Время (TimeCurrent) может остаться тем же, время в мс из SymbolInfoTick, теоретически, тоже.
Сравнивать бид, аск и время в мс — дороговато.
Вариант с организацией контроля в самом советнике не предлагать, хочется именно универсальную независимую функцию получить.
Здесь проблема не в дешевизне, а в надежности нумерации тиков. В боевом советнике делаю так.
это версия функции под MT4. Нумерация через индикатор-шпион.
Версию этой же функции под MT5 не привожу, т.к. лишнее нужно удалять. Но основывается на этой функции.
Если вернула не ноль - новый тик.
Основная идея - использовать функцию со static внутри.
Для запоминания и сверки тиков можно хранить в ID = GetMicroSecondsCount
Спасибо!
Весь вопрос как раз в этом уникальном ID (номере тика), которого нет.
GetMicroSecondsCount не поможет, потому что изменится между вызовами (для этого и предназначен), а GetTickCount, теоретически, может не измениться на 2-х соседних тиках.
Здесь проблема не в дешевизне, а в надежности нумерации тиков. В боевом советнике делаю так.
Нет, это точно будет медленнее сравнения бид/аск/мс.
Какая проблема с надежностью? Важен же только факт изменения чего либо.
Добавьте свои условия (SL/TP и т.д.) сюда.
Сразу вспомнил этот код.
Но задача как раз в том, чтобы избежать ненужного перебора всех ордеров.
Понятно, что можно сделать этот цикл одним для всего советника. Но тогда в функцию нужно передавать признак наличия изменений (с таким же успехом, можно ее не вызывать).
Нет, это точно будет медленнее сравнения бид/аск/мс.
Какая проблема с надежностью? Важен же только факт изменения чего либо.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1.
Andrey Khatimlianskii, 2020.03.05 23:46
Время (TimeCurrent) может остаться тем же, время в мс из SymbolInfoTick, теоретически, тоже.
Сравнивать бид, аск и время в мс — дороговато.
Особенно актуально для MT4, где шаг изменение time_msc равен 1000 мс.
Но задача как раз в том, чтобы избежать ненужного перебора всех ордеров.
Понятно, что можно сделать этот цикл одним для всего советника. Но тогда в функцию нужно передавать признак наличия изменений (с таким же успехом, можно ее не вызывать).
Не понял. Если в БД что-то изменилось, то единственный способ узнать это - сравнить с предыдущим состоянием БД.
Можно сравнивать каждый соответствующий элемент БД. Либо вычислить из них хэш и сравнить хэши.