
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Речь шла про лог терминала, а не советника.
Что это даёт. Я пишу про вызов функции OnTradeTransaction на добавление сделки в истории, а не на новую ID позиции или её изменение.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопрос о функции OnTradeTransaction
Andrey Kaunov, 2023.03.18 10:38
Нет нет, ты не ищи совпадение количества лотов и количество вызова функции OnTradeTransaction. Это просто совпадение. И переворота здесь никакого нет, ты видишь сделку in/out хоть одну? ID позиции вообще тут не причём. То что ты пишешь, к делу никакого отношения вообще не имеет.
Функция OnTradeTransaction вызывается на добавление сделки 17157064 и 17157065 (событие TRADE_TRANSACTION_DEAL_ADD) по одному разу. А на остальные по нескольку. Вот что главное! Тогда как должна на каждое добавление сделки в историю вызываться один раз. Или я в этом не прав?
P.S. Я логи привел. На добавление сделки 17157066 в историю функция OnTradeTransaction вызывалась 5 раз, на добавление 17157067 - 4 раза, на добавление 17157068 - 3 раза, на добавление 17157069 - как минимум 2 раза (может ещё там ниже в логах, надо посмотреть). Какие ещё нужны факты?
Почему мне это приходится всем разжевывать.
Мне с первого поста была понятна проблема, но вы решили, что она мне непонятна...
В ваших логах отсутствует вывод ChartID, чтобы исключить, что задвоение в логе не связано с параллельным запуском нескольких советников.
Сам пишу транзакции таким образом. Соответственно, появляется возможность поднять всю хронологию.
Нет, советник один работает. Это абсолютно точно.
И ничуть не сомневаюсь в вашей компетенции, просто пробиваться через толпы крайне поверхностно читающих форум пользователей, отнимает много энергии и времени.
Кстати, мой сигнал про ошибки в отчёте тестера приняли к сведению. Написал в личку одному из разработчиков MQ.
P.S. В проверках исключил все возможности её ошибочности. И это не единичный результат, такое происходит постоянно. В понедельник могу повторить опыт. Попробуйте сами, брокер Открытие, срочный рынок.
Собрал пока вот такой костыль, чтобы повторные вызовы функции по той же сделке отклонялись. Но всё же надеюсь, что разработчики MQ обратят внимание на эту проблему.
Для тех, кто не в теме, поясните пожалуйста, почему в изначально приведенном логе эксперта подсвечены сделки по ROSN-6.23, а в вышеприведенном логе терминала - сделки по SBPR-6.23?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Вопрос о функции OnTradeTransaction
Andrey Kaunov, 2023.03.17 18:33
Я тоже не замечал ранее такого поведения функции OnTradeTransaction. Но в этом советнике требуется открыть позиции по другим инструментам объёмом, пропорционально сработавшему объёму отложенному ордеру. И косяк сразу всплыл. По другим инструментам пошли бОльшие объёмы, чем требовалось.
Конечно, если речь про ордер то трижды. Я пишу про сделку. По каждой сделке должно быть одно срабатывание. А там несколько, и это видно в логах (номер сделки один, это тоже видно). Отложенный ордер там был № 823878027 (14 лотов), и это не все логи его открытия. Там 7 лотов уходило на закрытие BUY (они и отражены в логах) и остальные 7 на открытие SELL, переворот был. Со сделки № 17157069 началось открытие SELL. Можно несложно посчитать, учитывая задублированные срабатывания по сделкам, что 7 (первая сделка 3 лота, остальные по 1) лотов закрыли BUY, и далее пошло открытие.
Но в логах ясно видно, что срабатывание функции OnTradeTransaction по типу TRADE_TRANSACTION_DEAL_ADD происходит для одной сделки несколько раз. Мне не к чему в режиме отладки смотреть, я и так всё вижу по результату и по логам.
Тут ответ на первый вопрос. Сделки по ROSN-6.23 открывает на основании объёмов сработавшей лимитки на SBPR-6.23. А стоит советник вообще на третьей паре. Но вы не туда копаете, я же проверяю тип сделки. Кстати, проверяется тип события TRADE_TRANSACTION_DEAL_ADD, вы ошиблись. Тип сделки тоже там проверяется. Там везде DEAL_TYPE_SELL, типов по комиссии и балансу, типа DEAL_TYPE_BALANCE или DEAL_TYPE_COMMISSION нет. Я тоже сразу об этом подумал.
P.S. К тому же на начисление комиссии предположительно генерировалось бы событие TRADE_TRANSACTION_DEAL_UPDATE, хотя такого, как писал автор статьи, он никогда не встречал. Либо начисление комиссии проходило бы по типу TRADE_TRANSACTION_DEAL_ADD, но другой, отдельной, сделкой с другим типом, не DEAL_TYPE_SELL. Но конечно, от брокера можно ожидать всего. И чей это косяк, брокера или подсистемы терминала? Кто генерирует эти события? Вопросов много.
Собрал пока вот такой костыль, чтобы повторные вызовы функции по той же сделке отклонялись. Но всё же надеюсь, что разработчики MQ обратят внимание на эту проблему.
Андрей, можете вот сюда
перед return поставить распечатку, типа «условие выполнено». И в дальнейшем посмотреть сколько раз встретится такая ситуация.
Да, конечно, Алексей. Вот код:
Вот лог:
P.S. Не заметил очевидных закономерностей в появлении этой ситуации.Да, конечно, Алексей. Вот код:
Вот лог:
P.S. Не заметил очевидных закономерностей в появлении этой ситуации.Это опять «переворот» позиции?
Может это от того, что одна сделка влияет на две позиции? У одной позиции убавляет количество лотов, а у второй прибавляет…