Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1162
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите плз, как проще и быстрее всего получить результат последней сделки по текущему символу? А то из документации все сложно как то. Для получения результата надо найти сначала тикет нужной сделки, что б найти тикет нужно найти сделку в итории по ее индексу, индекс надо искать в истории, не говоря о том, что еще надо по символу отфильтровать. появляется чувство, что я слишком усложняю задачу
Чтобы не лезть в торговую историю каждый раз - просто отлавливайте в OnTradeTransaction сделку с типом
TRADE_TRANSACTION_DEAL_ADD – добавление сделки в историю
m_symbol.Name() - текущий символ, InpMagic - уникальный идентификатор эксперта
далеко не факт, вот проверял что быстрее _Symbol или Symbol() https://www.mql5.com/ru/forum/160683/page933#comment_12780905
т.е. время доступа один в один, оптимизация кода в MQL очень круто работает, поэтому, что удобнее то и используйте
по моим тестам время доступа к переменной может отличаться, смотря где описана переменная и с какими модификаторами, но там 2-5% скорости, что в принципе можно списать на реализацию в конкретном билде, от номера билда точно это зависит
Согласен что оптимизатор работает хорошо, но полагаться всегда на оптимизатор компилятора, не верно.
Как ни странно, они есть в mql как не документированные.Необходимо заранее продумывать как исполняется код на уровне памяти, инициализации и возврата значения.
То есть просчитывать количество выполняемых действий на операцию, меньше действий - быстрее код. И взять за практику сразу писать оптимальный код.
В коротких кодах, возможно разницы нет, а когда будет проект на сотни файлов, вот тогда и появятся задержки,
и потом только профилировщик и переписывание кода. Каждый выбирает свои грабли ))
Так же погугли за ключевые слова
Необходимо заранее продумывать как исполняется код на уровне памяти, инициализации и возврата значения.
не надо ничего продумывать, для этих вещей служат мануалы, а мануала по распределению памяти в MQL никогда не было, только сообщения разработчиков, причем часто с уточнением, что реализация может измениться
ладно, разговор сводится кто какую книжку по программированию читал, я со школы и до сих пор читаю и так последние 30 лет
не надо ничего продумывать, для этих вещей служат мануалы, а мануала по распределению памяти в MQL никогда не было, только сообщения разработчиков, причем часто с уточнением, что реализация может измениться
ладно, разговор сводится кто какую книжку по программированию читал, я со школы и до сих пор читаю и так последние 30 лет
Конечно не надо продумывать, а зачем... компилятор сам всё сделает. ))
C# не С
А по __inline смотри видос.
Там как раз объясняется как работают функции в памяти, для тех кому нет ни какой разницы.
Картинку сначала нарисуйте и укажите что для Вас "нулевой бар" для индикатора с параметром shift.
Нарисовал. Нулевой бар выделен вертикальной линией.
Нарисовал. Нулевой бар выделен вертикальной линией.
Пример кода:
Результат:
Как видите спокойно копируется, без танцев с бубном.
Пример кода:
Результат:
Как видите спокойно копируется, без танцев с бубном.
Пример кода. На основе индикатора. Индикатор занимается распледелением памяти буфера.
Когда start_pos = 0, то значение, соответствующее 0-му бару чарта, мы видим на 5-й позиции. 1.017041 В вашем эксперте оно на нулевой позиции. Ok.
Но мне нужно получить это значение на нулевой позиции.
Я задаю start_pos = 5. Не получаю нужный результат. Опять искомое значение на 5-й позиции.
Я задаю start_pos = -5. Не получаю нужный результат. Опять искомое значение на 5-й позиции.
Я задаю start_pos = -10. И только сейчас получаю нужный результат.
Пример кода. На основе индикатора. Индикатор занимается распледелением памяти буфера.
Когда start_pos = 0, то значение, соответствующее 0-му бару чарта, мы видим на 5-й позиции. 1.017041 В вашем эксперте оно на нулевой позиции. Ok.
Но мне нужно получить это значение на нулевой позиции.
Я задаю start_pos = 5. Не получаю нужный результат. Опять искомое значение на 5-й позиции.
Я задаю start_pos = -5. Не получаю нужный результат. Опять искомое значение на 5-й позиции.
Я задаю start_pos = -10. И только сейчас получаю нужный результат.
Нужно понимать разницу при работе ИЗ советника и ИЗ индикатора. Для работы из индикатора пользуйтесь примером из справки (iMA).