Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это опять «переворот» позиции?
Может это от того, что одна сделка влияет на две позиции? У одной позиции убавляет количество лотов, а у второй прибавляет…Алексей, не приплетайте сюда позицию.
TRADE_TRANSACTION_DEAL_ADD
Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета.
Добавление сделки в историю точка
Причём здесь позиция?! Открытие, закрытие или переворот отражается в свойстве DEAL_ENTRY, но не количестве вызовов функции OnTradeTransaction.
Вот логи чистого закрытия путем срабатывания лимитного ордера, если у вас какие то сомнения с переворотом:
Алексей, не приплетайте сюда позицию.
TRADE_TRANSACTION_DEAL_ADD
Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета.
Добавление сделки в историю точка
Причём здесь позиция?! Открытие, закрытие или переворот отражается в свойстве DEAL_ENTRY, но не количестве вызовов функции OnTradeTransaction.
Вот логи чистого закрытия путем срабатывания лимитного ордера, если у вас какие то сомнения с переворотом:
Андрей, сделка сама по себе не существует как что-то видимое… Сделка находится между ордером и позицией. Если ордер может существовать без сделки, то позиция никак не обходится без сделки. Любая сделка так или иначе оказывает какое-то действие с позицией. Иначе не бывает.
Алексей, какое это имеет отношение ко всему описанному на предыдущих трёх страницах ветки?
Вам стоит статью почитать, ссылку на которую любезно предоставил Владимир на 8 странице.
Если у вас после этого будет написать что то конструктивное, то пожалуйста. С отсылкой к документации или каким то вашим результатам тестов. А если нет, давайте не будем пустой болтовни тут разводить.
Алексей, какое это имеет отношение ко всему описанному на предыдущих трёх страницах ветки?
Вам стоит статью почитать, ссылку на которую любезно предоставил Владимир на 8 странице.
Если у вас после этого будет написать что то конструктивное, то пожалуйста. С отсылкой к документации или каким то вашим результатам тестов. А если нет, давайте не будем пустой болтовни тут разводить.
Да просто не ответил бы сам и всё было-бы понятно. Нет проблем…
Неожиданно для себя нашел закономерность в повторных ошибочных вызовах функции OnTradeTransaction.
Разберу на примере последнего лога, он самый первый на этой странице.
Первой добавляется в историю сделка № 17158254 (подчёркнуто), здесь нет никаких проблем. Функция OnTradeTransaction вызывается подсистемой терминала однократно
Следующей добавляется в историю сделка № 17158255 (подчёркнуто). Функция OnTradeTransaction вызывается подсистемой терминала по этому событию, а следом за за этим сразу же вызывается повторно (обратите внимание на таймкод слева)
Далее добавляется в историю третья сделка № 17158256 (подчёркнуто). Функция OnTradeTransaction вызывается как и положено по этому событию. А следом вызывается по событию добавления предыдущей сделки № 17158255, и сразу же дублируется вызов по добавлению сделки № 17158256
Далее в историю добавляется четвёртая сделка № 17158257 (подчёркнуто). Функция вызывается по ней (как и положено), затем вызывается по сделкам №№ 17158255, 17158256, и потом дублируется по ней же № 17158257
Далее пошли, как и положено, однократные вызовы функции. Не буду приводить лог, он есть выше. Закономерность налицо, своеобразный каскад нарастающих вызовов функции OnTradeTransaction. Он такой же точно и в двух приведённых мною ранее логах здесь и здесь.
Обратите внимание на таймкод. Срабатывание лимитника происходит хоть и по частям, но практически мгновенно, за несколько миллисекунд (причем во всех трёх логах). Может в сверх малом промежутке времени кроется ключ к пониманию этой ошибки?! Возможно подсистема не успевает расставить флаги на сделки, событие добавления которых в историю уже было отправлено на вызов в функцию OnTradeTransaction. Здесь я не компетентен, и строить догадки не буду.
Интересно обратить внимание и на объём сделок. Во всех задублированных вызовах он равен 1 лоту, а 2 и более не дублируются. Но в первом логе сделка № 17157065 тоже не продублировалась, хоть и объём её 1 лот. Но что по объёму есть закономерность, утверждать не буду.
Неожиданно для себя нашел закономерность в повторных ошибочных вызовах функции OnTradeTransaction.
Андрей, возможно и ошибаюсь, но надеюсь, что все ответы на Ваши вопросы найдёте в этой статье про OnTradeTransaction.
Особенно мне понравился вот этот абзац статьи:
"... Однако, чтобы объяснить, как это работает, по возможности будем избегать разговоров о данных файла журнала, потому что, если вы попытаетесь увидеть логику, следуя файлам или шаблонам, найденным в файлах журналов, то вы можете сойти с ума. Это связано с тем, что иногда у данных не будет какой-либо закономерности. Причина в том, что эта функция является обработчиком событий. Данные события исходят от торгового сервера, так что забудьте о файлах журнала. Мы сосредоточимся на управлении событиями, которые отправляются с торгового сервера, независимо от порядка их появления..."
С уважением, Владимир.
Андрей, возможно и ошибаюсь, но надеюсь, что все ответы на Ваши вопросы найдёте в этой статье про OnTradeTransaction.
Особенно мне понравился вот этот абзац статьи:
"... Однако, чтобы объяснить, как это работает, по возможности будем избегать разговоров о данных файла журнала, потому что, если вы попытаетесь увидеть логику, следуя файлам или шаблонам, найденным в файлах журналов, то вы можете сойти с ума. Это связано с тем, что иногда у данных не будет какой-либо закономерности. Причина в том, что эта функция является обработчиком событий. Данные события исходят от торгового сервера, так что забудьте о файлах журнала. Мы сосредоточимся на управлении событиями, которые отправляются с торгового сервера, независимо от порядка их появления..."
С уважением, Владимир.
Нет Владимир, дело как раз в том, что журнал заполняется из функции OnTradeTransaction. И соответственно если принимать какое-то решение на основании события, то может получиться принять это решение 2 или 3 и даже больше раз.
Андрей, возможно и ошибаюсь, но надеюсь, что все ответы на Ваши вопросы найдёте в этой статье про OnTradeTransaction.
Особенно мне понравился вот этот абзац статьи:
"... Однако, чтобы объяснить, как это работает, по возможности будем избегать разговоров о данных файла журнала, потому что, если вы попытаетесь увидеть логику, следуя файлам или шаблонам, найденным в файлах журналов, то вы можете сойти с ума. Это связано с тем, что иногда у данных не будет какой-либо закономерности. Причина в том, что эта функция является обработчиком событий. Данные события исходят от торгового сервера, так что забудьте о файлах журнала. Мы сосредоточимся на управлении событиями, которые отправляются с торгового сервера, независимо от порядка их появления..."
С уважением, Владимир.
Это не про то. Это о том, что порядок событий может отличаться, отсюда в некоторых советниках может возникать удвоение сделок.
А тут речь о том, что одно и то же событие, по одной сделке, приходит несколько раз.
Кстати, я у себя храню в стейте тикет последней учтённой сделки.
Это не про то. Это о том, что порядок событий может отличаться, отсюда в некоторых советниках может возникать удвоение сделок.
А тут речь о том, что одно и то же событие, по одной сделке, приходит несколько раз.
Кстати, я у себя храню в стейте тикет последней учтённой сделки.
+1!
Андрей, возможно и ошибаюсь, но надеюсь, что все ответы на Ваши вопросы найдёте в этой статье про OnTradeTransaction.
Особенно мне понравился вот этот абзац статьи:
"... Однако, чтобы объяснить, как это работает, по возможности будем избегать разговоров о данных файла журнала, потому что, если вы попытаетесь увидеть логику, следуя файлам или шаблонам, найденным в файлах журналов, то вы можете сойти с ума. Это связано с тем, что иногда у данных не будет какой-либо закономерности. Причина в том, что эта функция является обработчиком событий. Данные события исходят от торгового сервера, так что забудьте о файлах журнала. Мы сосредоточимся на управлении событиями, которые отправляются с торгового сервера, независимо от порядка их появления..."
С уважением, Владимир.
Да, Владимир, Но статьи пишут люди. А людям свойственно ошибаться, заблуждаться или просто иметь собственное мнение. Главную мысль этого абзаца, на мой взгляд, я выделил.
Я отталкиваюсь лишь от правил работы функции, заявленной в документации и на собственных тестах. Если функция несколько раз срабатывает на событие добавления одной уникальной сделки в историю, то какой от неё в таком случае смысл. Проще использовать тогда OnTrade(), и написать все нужные проверки самому как в MQL4.