Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Отлавливаю все события по тику, сравниваю с ранее записанными данными.
все в массивах.
Собственно тормоза иногда есть, когда очень много тиков. Поэтому сделал Задержку между проверками 1 секунда.
Это что касается мониторинга многих позиций.
А если только позиции конкретного робота, то там конечно легче.
Благо дело у меня задача не сложная, а ордеров в работе не более двух-трех десятков всего.
А по сему буду по таймеру тренькать что там в OrdersTotal() имеется и записывать объемы в переменные new и old с замещением на каждой итерации, и если объём изменился - предпринимать дальнейшие шаги.
Благо дело у меня задача не сложная, а ордеров в работе не более двух-трех десятков всего.
А по сему буду по таймеру тренькать что там в OrdersTotal() имеется и записывать объемы в переменные new и old с замещением на каждой итерации, и если объём изменился - предпринимать дальнейшие шаги.
Объём не поменяется при срабатывании отложенного ордера.
Объём не поменяется при срабатывании отложенного ордера.
Ну я в цикле фильтрую ордера по типу и подсчитываю объем открытой совокупной позиции.
Печалит, что надо тренькать вот так бестолково и тратить ресурсы, когда в МТ5 можно просто и без напряга ожидать конкретного события.
Ну я в цикле фильтрую ордера по типу и подсчитываю объем открытой совокупной позиции.
Печалит, что надо тренькать вот так бестолково и тратить ресурсы, когда в МТ5 можно просто и без напряга ожидать конкретного события.ну мт5 на порядок выше, чем мт4.
Это касается и других функций.
В моей конкретной ситуации при сделках раз в сутки, и событии раз в сутки будет совершаться 60*60*24=86,400 лишних телодвижений. А по другому и никак пока.
Зависит от задачи.
Если нужно отловить открытие/закрытие (не частичное) позиции и установку/удаление ордеров, то тут не нужно каждый раз в цикле носиться по списку.
Можно просто проверять значение OrdersTotal() текущее и прошлое. При обнаружении разницы - имеем какое-то событие - тогда и смотрим что там.
Я всё делал при помощи хэш-суммы свойств ордеров и позиций. Как только изменилась - имеем какое-то событие - тогда и смотрим что там конкретно поменялось.
Но у меня была задача отследить все, и любые изменения.
В моей конкретной ситуации при сделках раз в сутки, и событии раз в сутки будет совершаться 60*60*24=86,400 лишних телодвижений. А по другому и никак пока.
Есть еще такой подход (если появление нового ордера возможно только со стороны эксперта):
3. Если ордер есть, то при необходимости обновляем его данные. Это если требуется слежение за SL/TP/объемом. Если не требуется, то вообще ничего больше не делаем.
4. Если ордер обнаружен в списке закрытых (OrderCloseTime() > 0), то удаляем его из массива. Пополнение же массива производим только при открытии ордера советником.
В итоге не нужно будет на каждом тике обходить весь список ордеров. Операции только со своим массивом.
Я попробую пока сделать сравнение значений OrdersTotal() (респект @Artyom Trishkin ), по идее этого должно хватить. Частичных закрытий у меня не будет.
При инициализации буду присваивать старому значение -1, дабы на старте всегда проводилась полная проверка, не зависимо от наличия ордеров в рынке.
А дальше новый ордер либо появится (событие), либо старый удалится (событие), и тут не важен даже символ инструмента - можно и по всем будет проверку полную провести, это все равно на порядки реже, чем тренькать без конца и края.
Я попробую пока сделать сравнение значений OrdersTotal() (респект @Artyom Trishkin ), по идее этого должно хватить. Частичных закрытий у меня не будет.
При инициализации буду присваивать старому значение -1, дабы на старте всегда проводилась полная проверка, не зависимо от наличия ордеров в рынке.
А дальше новый ордер либо появится (событие), либо старый удалится (событие), и тут не важен даже символ инструмента - можно и по всем будет проверку полную провести, это все равно на порядки реже, чем тренькать без конца и края.
Только с этим аккуратно нужно работать, сегодня столкнулся с тем, что одна позиция закрылась, а вторая открылась на другой паре и при этом почти одновременно между тиками.
По итогу OrdersTotal() как был 8, таким и остался. Логика эксперта сбилась - не пересчитал новые данные