Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода) - страница 11
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Отложка, выставленная заранее. Цена касается её, но исполнение происходит позже, по худшей цене.
Нет, если лимитка исполнилась хуже — то брокера нафик, либо разбираться.
А если стоп, то это нормально, как бы. 20-30 мс вполне приемлемо, если ордер выводится куда-то дальше, а не просто плагином проверяется.
Ну а сколько там было тиков — вообще не важно.
как это поможет если комиссия считается в долларах от объема в долларах?
Странно, но влияет валюта счета. Видимо, там при конвертации используется не текущий курс, а какой-то фиксированный. Плюс округление, если лот небольшой.
Нужно было кое-что для себя выяснить, и родился очень простой для воспроизведения пример, который показывает легкость работы с ордерами.
Итак, представим, что запущен советник, который классически работает в OnTick. Поскольку OnTick может прийтись на любое время состояния торгового окружения Терминала, то интересно посмотреть, что же советник может увидеть. Поэтому состояния, с которыми может столкнуться OnTick-советник, выцепил следующим способом.
Этот код просто распечатывает, сколько текущих позиций/ордеров и сколько закрытых сделок/ордеров.
Запускаем и просто руками открываем позицию и закрываем. Больше ничего. У меня получилась такая распечатка (от запуска к запуску может меняться).
Итак, OnTick-советник может нарваться на любую из этих 16-ти ситуаций, интересные из которых прокомментировал выше.
Специально пример не подбирал. Запустил и запостил результат. Запуски могут давать и другие интересные варианты.
Мне удалось прокомментировать результаты, потому что я точно знал, что делал (руками открывал одну единственную позицию и закрывал ее).
Каково советнику, который не знает этого? Просто представим, что на счете параллельно работает несколько советников. Легкость разбора возникающей там каши из симбиоза ситуаций выше, думаю, очевидна.
Лаконичный код приложен, воспроизвести может каждый.
Нужно было кое-что для себя выяснить, и родился очень простой для воспроизведения пример, который показывает легкость работы с ордерами.
Итак, представим, что запущен советник, который классически работает в OnTick. Поскольку OnTick может прийтись на любое время состояния торгового окружения Терминала, то интересно посмотреть, что же советник может увидеть. Поэтому состояния, с которыми может столкнуться OnTick-советник, выцепил следующим способом.
Этот код просто распечатывает, сколько текущих позиций/ордеров и сколько закрытых сделок/ордеров.
Запускаем и просто руками открываем позицию и закрываем. Больше ничего. У меня получилась такая распечатка (от запуска к запуску может меняться).
Итак, OnTick-советник может нарваться на любую из этих 16-ти ситуаций, интересные из которых прокомментировал выше.
Специально пример не подбирал. Запустил и запостил результат. Запуски могут давать и другие интересные варианты.
Мне удалось прокомментировать результаты, потому что я точно знал, что делал (руками открывал одну единственную позицию и закрывал ее).
Каково советнику, который не знает этого? Просто представим, что на счете параллельно работает несколько советников. Легкость разбора возникающей там каши из симбиоза ситуаций выше, думаю, очевидна.
Лаконичный код приложен, воспроизвести может каждый.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
fxsaber, 2021.04.28 21:43
Дискуссии быть не может. Слишком разный уровень владения материалом.
Вам следовало-бы разобраться сколько раз вызывается OnTradeTransaction и что в какой момент можно получить.
TRADE_TRANSACTION_ORDER_ADD
Добавление нового открытого ордера.
TRADE_TRANSACTION_ORDER_UPDATE
Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состояния ORDER_STATE_STARTED в ORDER_STATE_PLACED или из ORDER_STATE_PLACED в ORDER_STATE_PARTIAL и т.д.).
TRADE_TRANSACTION_ORDER_DELETE
Удаление ордера из списка открытых. Ордер может быть удален из открытых в результате выставления соответствующего запроса либо в результате исполнения (заливки) и переноса в историю.
TRADE_TRANSACTION_DEAL_ADD
Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета.
TRADE_TRANSACTION_DEAL_UPDATE
Изменение сделки в истории. Возможны ситуации, когда ранее исполненная сделка изменяется на сервере. Например, сделка была изменена во внешней торговой системе (бирже), куда она была выведена брокером.
TRADE_TRANSACTION_DEAL_DELETE
Удаление сделки из истории. Возможны ситуации, когда ранее исполненная сделка удаляется на сервере. Например, сделка была удалена во внешней торговой системе (бирже), куда она была выведена брокером.
TRADE_TRANSACTION_HISTORY_ADD
Добавление ордера в историю в результате исполнения или отмены.
TRADE_TRANSACTION_HISTORY_UPDATE
Изменение ордера, находящегося в истории ордеров. Данный тип предусмотрен для расширения функциональности на стороне торгового сервера.
TRADE_TRANSACTION_HISTORY_DELETE
Удаление ордера из истории ордеров. Данный тип предусмотрен для расширения функциональности на стороне торгового сервера.
TRADE_TRANSACTION_POSITION
Изменение позиции, не связанное с исполнением сделки. Данный тип транзакции свидетельствует именно о том, что позиция была изменена на стороне торгового сервера. У позиции может быть изменен объем, цена открытия, а также уровни Stop Loss и Take Profit. Информация об изменениях передается в структуре MqlTradeTransaction через обработчик OnTradeTransaction. Изменение позиции (добавление, изменение или ликвидация) в результате совершения сделки не влечет за собой появление транзакции TRADE_TRANSACTION_POSITION.
TRADE_TRANSACTION_REQUEST
Уведомление о том, что торговый запрос обработан сервером, и результат его обработки получен. Для транзакций данного типа в структуре MqlTradeTransaction необходимо анализировать только одно поле - type (тип транзакции). Для получения дополнительной информации необходимо анализировать второй и третий параметры функции OnTradeTransaction (request и result).
Вам следовало-бы разобраться сколько раз вызывается OnTradeTransaction и что в какой момент можно получить.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
fxsaber, 2021.05.03 12:48
Итак, OnTick-советник может нарваться на любую из этих 16-ти ситуаций, интересные из которых прокомментировал выше.
Вроде, разжевал максимально.
При каких делах OnTick() если вы всё это обрабатываете в OnTradeTransaction
Получите причину вызова OnTradeTransaction и соответственно обработайте то, что доступно при этом вызове.При каких делах OnTick() если вы всё это обрабатываете в OnTradeTransaction
Получите причину вызова OnTradeTransaction и соответственно обработайте то, что доступно при этом вызове.Возможно, кто-то из форумчан объяснит. У меня не выходит.
При каких делах OnTick() если вы всё это обрабатываете в OnTradeTransaction
Получите причину вызова OnTradeTransaction и соответственно обработайте то, что доступно при этом вызове.В OnTick абсолютно все эти странности на месте. Просто сделать легко воспроизводимый пример с OnTick затруднительно. В качестве примера был выбран OnTradeTransaction, но сути это не меняет.
В OnTick абсолютно все эти странности на месте. Просто сделать легко воспроизводимый пример с OnTick затруднительно. В качестве примера был выбран OnTradeTransaction, но сути это не меняет.
Продолжайте подражать дон Кихоту…
нет среди живых и мертвых
Было бы здорово обойти этот момент на уровне MT4Orders..
Сейчас случаются задвоения ордеров, к сожалению. Скорее всего, из-за этого.