Проверять, сработал ли СЛ или ТП, нужно только при изменении OrdersHistoryTotal(). Обратный цикл, поиск последнего ордера с нужным магиком и символом. На каждом тике ничего перебирать не надо.
Если стоп сработает с процессе выполнения функции start() (или OnTick()), то советник об этом не узнает. Собственно, как и об изменении цены. Но в этом и нет необходимости, текущий запуск должен обработать текущую ситуацию, а не отслеживать все возможные следующие.
Чтоб посоветовать что-то более конкретное, нужна более конкретная задача.
В оперативной памяти, которая занята процессом MT4. Не файлах, если Вы об этом.
МТ4, независимо от того, нужна трейдеру/программе информация по ордерам или нет, получает эти данные с сервера на каждом тике соответствующего символа. То есть эта информация всегда есть и всегда актуальна (при наличии связи). Эксперт/индикатор запрашивает ее у терминала, а терминал отдает то, что у него уже есть. Лишний запрос на сервер здесь не требуется.
Что-то здесь не так. Между приходами тиков соответствующего символа, выходит, история в терминале может и не совпадать с историей на сервере. У меня в советнике после успешного завершения запроса на открытие сделки вновь открытая сделка сразу же (в следующих строках) обнаруживается в истории. Всегда, без ожидания следующего тика. Это в MT4. В MT5 иначе - приходится ждать 15-30 миллисекунд, пока не актуализируется еще один экземпляр истории, самого советника.
Да и вообще, несолидно как-то для сервера, ждать несколько секунд или десятков секунд посылки тика, не оповещая терминал о случившемся изменении истории.
У меня в советнике после успешного завершения запроса на открытие сделки вновь открытая сделка сразу же (в следующих строках) обнаруживается в истории. Всегда, без ожидания следующего тика.
Мы говорим о событии срабатывания SL/TP. Они не могут сработать без прихода нового тика.
При открытии/установке/закрытии/удалении ордера алгоритм обновления данных диктуется совершением торгового запроса.
Проверять, сработал ли СЛ или ТП, нужно только при изменении OrdersHistoryTotal(). Обратный цикл, поиск последнего ордера с нужным магиком и символом. На каждом тике ничего перебирать не надо.
Такой алгоритм не универсален, т. к. пользователь может поменять порядок сортировки в "Истории счета". Он подходит только для тестера.
Наблюдения показывают, что вызваный через iCustom индикатор "дремлет" до следующего вызова, а после вызова допросчитывается и снова "дремлет". Это действительно так?
И нельзя ли что-нибудь сказать по #1060392 в Сервисдеск?
Наблюдения показывают, что вызваный через iCustom индикатор "дремлет" до следующего вызова, а после вызова допросчитывается и снова "дремлет". Это действительно так?
каждый раз индикатор выгружается, а потом снова загружается и полностью просчитывает все доступные бары при следующем вызове, никакой "дремоты" нет.
Что-то вы очень усложнили.
Проверять, сработал ли СЛ или ТП, нужно только при изменении OrdersHistoryTotal(). Обратный цикл, поиск последнего ордера с нужным магиком и символом.
На каждом тике ничего перебирать не надо.
Если стоп сработает с процессе выполнения функции start() (или OnTick()), то советник об этом не узнает. Собственно, как и об изменении цены.
Но в этом и нет необходимости, текущий запуск должен обработать текущую ситуацию, а не отслеживать все возможные следующие.
Чтоб посоветовать что-то более конкретное, нужна более конкретная задача.
В оперативной памяти, которая занята процессом MT4. Не файлах, если Вы об этом.
МТ4, независимо от того, нужна трейдеру/программе информация по ордерам или нет, получает эти данные с сервера на каждом тике соответствующего символа. То есть эта информация всегда есть и всегда актуальна (при наличии связи). Эксперт/индикатор запрашивает ее у терминала, а терминал отдает то, что у него уже есть. Лишний запрос на сервер здесь не требуется.
Что-то здесь не так. Между приходами тиков соответствующего символа, выходит, история в терминале может и не совпадать с историей на сервере. У меня в советнике после успешного завершения запроса на открытие сделки вновь открытая сделка сразу же (в следующих строках) обнаруживается в истории. Всегда, без ожидания следующего тика. Это в MT4. В MT5 иначе - приходится ждать 15-30 миллисекунд, пока не актуализируется еще один экземпляр истории, самого советника.
Да и вообще, несолидно как-то для сервера, ждать несколько секунд или десятков секунд посылки тика, не оповещая терминал о случившемся изменении истории.
У меня в советнике после успешного завершения запроса на открытие сделки вновь открытая сделка сразу же (в следующих строках) обнаруживается в истории. Всегда, без ожидания следующего тика.
Мы говорим о событии срабатывания SL/TP. Они не могут сработать без прихода нового тика.
При открытии/установке/закрытии/удалении ордера алгоритм обновления данных диктуется совершением торгового запроса.
Что-то вы очень усложнили.
Проверять, сработал ли СЛ или ТП, нужно только при изменении OrdersHistoryTotal(). Обратный цикл, поиск последнего ордера с нужным магиком и символом.
На каждом тике ничего перебирать не надо.
Подскажите, кто-нибудь, если с индикатором идет библиотека ххх.dll, в какую папку ее надо поместить ? Спасибо.
Документация.
Наблюдения показывают, что вызваный через iCustom индикатор "дремлет" до следующего вызова, а после вызова допросчитывается и снова "дремлет". Это действительно так?
И нельзя ли что-нибудь сказать по #1060392 в Сервисдеск?
Документация.
Наблюдения показывают, что вызваный через iCustom индикатор "дремлет" до следующего вызова, а после вызова допросчитывается и снова "дремлет". Это действительно так?
каждый раз индикатор выгружается, а потом снова загружается и полностью просчитывает все доступные бары при следующем вызове, никакой "дремоты" нет.
каждый раз индикатор выгружается, а потом снова загружается и полностью просчитывает все доступные бары при следующем вызове, никакой "дремоты" нет.
Извините, но я только что экспериментировал с принтами.
Допускаю, что Вы много лучше меня знаете язык, но вы ведь не из команды разработчиков и всего про язык знать не можете.
Извините, но я только что экспериментировал с принтами.
Допускаю, что Вы много лучше меня знаете язык, но вы ведь не из команды разработчиков и всего про язык знать не можете.
может и правда индикатор не выгружается, запринтовал иниты-деиниты с подсчётом в теле OnCalculate:
получается, что индикатор не выгружается, по крайней мере в тестере на протяжении теста: