Добрый день. Помогите с написанием функции Алерта по балансу или журналу сделок. (MQL4)
Смысл следующий... Пишется советник- помошник и нужна функция которая смогла бы поймать одно из событий:
- Открытие ордера.
- Закрытие ордера. (SL/TP)
- Сработка отложки.
При этом код не должен обращаться к брокеру. Тоесть использовать данные которые терминал получает автоматом от брокера.
Если возможно подскажите как реализовать.?
банально мониторить OrdersTotal()
А OrdersTotal() запрос на сервер разве не отправляет?
Была BUYSTOP стала BUY... 1 была. 1 осталась.
Как...
На каждом тике обновляем массив ордеров. В массиве хранятся тикеты всех ордеров находящихся в рынке. Перед тем как обновлять массив, сначала проверяется, все ли ордера из массива имеются в рынке. Можно не только массив тикетов иметь, а два массива, например, с типом еще, или структуру вместо массива, но это не принципиально.
OrdersTotal() - это не вариант. Один ордер может закрыться по стоплосс, при этом отложенный ордер сработать (число рыночных ордеров не изменилось).
Запросы на сервер OrdersTotal() не отправляет.
Запросы на сервер OrdersTotal() не отправляет.
Но если так то ,открытие ордера, закрытие ордера мы поймаем а как быть с отложками...
Была BUYSTOP стала BUY... 1 была. 1 осталась.
Но если так то ,открытие ордера, закрытие ордера мы поймаем а как быть с отложками...
Была BUYSTOP стала BUY... 1 была. 1 осталась.
Еще один массив (или поле в структуре) для типа. Определять по смене типа.
Еще один массив (или поле в структуре) для типа. Определять по смене типа.
Но если так то ,открытие ордера, закрытие ордера мы поймаем а как быть с отложками...
Была BUYSTOP стала BUY... 1 была. 1 осталась.
В своих проектах так делаю (описываю упрощённо, на идейном уровне):
- При старте советника запоминаем ордера, которые есть на счёту (динамический массив структур; структура объединяет такие данные как тикет, тип, цена открытия, sl, tp и т.п.).
- Раз в xx секунд (например, по таймеру) вызываю метод проверки изменений. В этом методе фомирую массив структур по ордерам в текущий момент времени.
- Сравниваю массив структур из шага 1 с массивом из шага 2. Если изменился тип какого-то ордера (или ещё что-то, что нам интересно, например sl/tp), то выполняем нужное действие (в моём случае формируется массив, где описываются изменения и отдаётся как результат работы метода).
- Актуализируем массив из шага 1 (обнуляем его, а затем копируем в него массив из шага 2).
Всё это обёрнуто в класс, массив из шага 1 - член класса, массив из шага 2 - локальный массив внутри метода определения различий.
Если делать без ООП, то массив из шага 1 может быть статическим, или глобальным (что не есть гуд).
А чА чтобы тип ордера определить разве не нужно отправлять запрос на сервер? Мне неважно что произошло. Только факт что произошло торговое событие.
Как сказано в этой ветке:
Вообщето история храниться на серверной части и регулярно синхронизируется,
но Roger прав терминал имеет для этих целей всё необходимое у себя и по OrderSelect() к серверу не обращается.
В своих проектах так делаю (описываю упрощённо, на идейном уровне):
- При старте советника запоминаем ордера, которые есть на счёту (динамический массив структур; структура объединяет такие данные как тикет, тип, цена открытия, sl, tp и т.п.).
- Раз в xx секунд (например, по таймеру) вызываю метод проверки изменений. В этом методе фомирую массив структур по ордерам в текущий момент времени.
- Сравниваю массив структур из шага 1 с массивом из шага 2. Если изменился тип какого-то ордера (или ещё что-то, что нам интересно, например sl/tp), то выполняем нужное действие (в моём случае формируется массив, где описываются изменения и отдаётся как результат работы метода).
- Актуализируем массив из шага 1 (обнуляем его, а затем копируем в него массив из шага 2).
Всё это обёрнуто в класс, массив из шага 1 - член класса, массив из шага 2 - локальный массив внутри метода определения различий.
Если делать без ООП, то массив из шага 1 может быть статическим, или глобальным (что не есть гуд).
Примерно также делаю.... ну или пытаюсь. Но интересует как поймать торговое событие не обращаясь к серверу... Совсем...
Насколько я понимаю, все эти функции не вызывают принудительного обращения к серверу. Они работают с тем, что терминалу уже известно. А терминал узнает об этом самостоятельно, без пинков от советников. Обратное было бы серьёзной дырой: злоумышленник запустит несколько тысяч "плохих" советников на счетах одного сервера брокера и тот ляжет :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день. Помогите с написанием функции Алерта по балансу или журналу сделок. (MQL4)
Смысл следующий... Пишется советник- помошник и нужна функция которая смогла бы поймать любое из событий:
При этом код не должен обращаться к брокеру. Тоесть использовать данные которые терминал получает автоматом от брокера.
Неважно что произошло. Только факт что чтото произошло.
Если возможно подскажите как реализовать.?