Особенности языка mql5, тонкости и приёмы работы - страница 203
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мы расширяем инициализирующие последовательности "{ ... }", в ближайшем билде будет разрешено использовать любое выражение, а не только константное.
Вместо с этим изменением, появится и граничение на использование констант для перечислений (как для обычного выражения): если константа не входит в перечисление, то будет выдана соответствующая ошибка.
Анализ существующих кодов показал, что часто неправильно используется последовательность из одного нуля - "{0}"
Например так:
Такая запись означает, выставить значение ноль для первого поля структуры и обнулить остальные поля.
Для приведённой выше строки кода, по новым правилам, будет выдана ошибка, т.к. первое поле имеет тип ENUM_TRADE_REQUEST_ACTIONS, перечисление, в котором отсутствует значение "0"
Правильно будет так:
MqlTradeRequest request={};
Правильно будет так:
MqlTradeRequest request={};
И чему тогда будет равно request.action?
И чему тогда будет равно request.action?
Нолю конечно, как если бы для объекта этой структуры вызвали ZeroMemory
О синхронизации таймсерий и индикаторов на них построенных:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Slava, 2021.05.29 18:16
Хочу напомнить.
1. Для каждого символа, для которого открыт хоть один график, работает отдельный поток для обработки пришедших тиков. Может быть открыто несколько графиков по какому-то символу, но поток будет всё равно один.
2. Поток символа обрабатывает не графики, а таймсерии. То есть, те самые массивы данных, которые отдаются на запрос CopyRates
3. Бесполезно спрашивать у своего символа в OnTick или OnCalculate, синхронизирован ли он. Конечно, да!
4. Все таймсерии обрабатываются по порядку, от младшей к старшей. Сначала применение тика, потом расчёт всех индикаторов, созданных на данной таймсерии. Если вы из индикатора, работающего на M1, спрашиваете данные для этого же символа H1, то вы никогда не получите данных с применённым тиком. Данные всегда будут на один тик назад, какие бы ухищрения вы не применяли. Потому что один поток на символ с последовательной обработкой таймфреймов.
5. Предыдущее утверждение не касается экспертов и скриптов, потому что эксперты и скрипты работают каждый в своём отдельном потоке.
О синхронизации таймсерий и индикаторов на них построенных:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Slava, 2021.06.01 06:34
При первом запросе индикатор может не получить данные со своего символа но другого таймфрейма только по одной причине - нужная таймсерия ещё не построена или уже уничтожена по прошествии какого-то времени, когда не было обращений.
После неудачного запроса просто пошлите своему графику команду на обновление и тут же завершайте работу OnCalculate. Гарантированно будет вызвана OnCalculate и гарантированно нужные таймсерии к этому моменту будут подготовлены
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.11.30 09:48
Памятка
Суть в другом - может это недосмотр, а не осознанное изменение поведения? Узнавали?
Суть в другом - может это недосмотр, а не осознанное изменение поведения? Узнавали?
Не узнавал. Обратная связь почти никакая. Однако, вот такая особенность, о которой только узнал.
Этот советник алертит при переключении между счетами. Казалось бы, он не должен этого делать, согласно правилу
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2017.11.30 09:48
Памятка
Этот советник алертит при переключении между счетами. Казалось бы, он не должен этого делать, согласно правилу
Никто не гарантировал, что будут прерваны (или не будут запущены) другие обработчики событий.
После алерта же происходит и деинит и инит, правда?