Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
papaklass, c-4
Существующая модель ответов сервера через OnTradeTransaction
меня устраивает, и в моем советнике работает, НО
моё первое сообщение было связано с тем, что от сервера не вернулось(вообще) сообщение,
что сделка была совершена (ордер исполнился на 1) и вторая ошибка заключалась в том,
что вместо ответа, что ордер размещён, пришел ответ, что ордер частично исполнился(продублировалось).
Дело не в обработчике( у меня нет к нему претензий), а в ответах от сервера( одно вообще не пришло, а в второе было не правильным).
Модель работы с ответами сервера в моём советнике НЕ основана на последовательности ответов сервера, НО ответ должен быть и быть правильным.
Смотрите, что произошло(картинка из первого поста):
Советник выставил ордер с объёмом 3.
Ордер исполнился на единицу - ответы сервера правильные.
Далее советник модифицировал ордер - ответ сервера ORDER_STATE_PARTIAL - а должен был быть ORDER_STATE_PLACED.
Далее ордер исполнился еще на 1, НЕ ПРИШЛО НИКАКОГО сообщения от сервера.
Через пару дней (картинка внизу) я повторил эту последовательность - результат изменился(вероятно разработчики что-то исправили),
пришло сообщение, что произошла сделка(вторая 21:15:02.232), но сообщение о модификации осталось не правильным.
Ещё очень настораживает, что три ответа от сервера пришли в одно и то же время(21:14:53.049)!
Понятно, что всё работает в одном потоке, и что сообщения накапливаются, но всё-же.... Я останавливаю работу советника,
чтобы принимать сообщения.
papaklass!
Дело в том, что программы *.ex5 работают в одном потоке, если
будет много обработчиков, то будет ещё хуже.
Сейчас спецом проверил работу OnTrade и OnTradeTransaction.
На один торговый приказ открыть позицию по рынку (маркет ордер) происходит 3-и срабатывания OnTrade или 4-ре срабатывания OnTradeTransaction. А мне нужно срабатывание одного обработчика OnPositionOpened.
На закрытие позиции по стоп-лоссу/тейк-профиту происходит 3-и срабатывания OnTrade или 3-и срабатывания OnTradeTransaction, вмесо одного - OnPositionClosed. Избыточность налицо!
Эти многократные сработки существующих обработчиков событий (OnTrade/OnTradeTransaction), не дают однозначного ответа на вопрос: "Какое торговое событие произошло и каков результат торговой операции?", значит нужно еще организовывать дополнительную со стороны пользователя обработку этих событий. Спрашивается: "К чему весь этот огород?"
При такой избыточной работе торговых событий, легко могут возникать различного рода коллизии, которые будут приводить к ошибкам, особенно, во время массовых отсылок торговых приказов со стороны клиентов.
Поэтому то, что произошло в Вашем случае или в случае с komposter-ом (timeout), лично у меня не вызывает удивления.
То, как реализованы события OnTrade и OnTradeTransaction, невольно напомнило мне эпизод 20-летней давности... Помнится, читал я рецензии на новые игры под Спектрум, особенно запомнилась мне рецензия на одну игру, где было сказано приблизительно так :"...звук в игре хорош тем, что есть возможность его отключить...". Приблизительно такое же отношение у меня и к событиям OnTrade и OnTradeTransaction, они хороши только тем, что можно их не использовать.
А я, наоборот использую(успешно) эти два обработчика!
Если, по какой-то причине не сработал OnTradeTransaction, то я проверяю
в OnTrade - очень удобно, потому что сначала срабатывает OnTradeTransaction,
а потом OnTrade.
А я, наоборот использую(успешно) эти два обработчика!
Если, по какой-то причине не сработал OnTradeTransaction, то я проверяю
в OnTrade - очень удобно, потому что сначала срабатывает OnTradeTransaction,
а потом OnTrade.
Было бы действительно удобно пользоваться этими событиями (по крайней мере мне удобно), если бы советник с требуемой для торгового алгоритма частотой генерировал запрос к серверу в виде типа такого:
А сервер на такой запрос давал бы сразу ответ с исчерпывающей информацией...
Однако, предполагая, что есть "непреодолимые объективные причины", делающие невозможным реализацию такого удобства, обхожусь тем, что есть:)
Кто как может...:)
Кстати, скачайте с сервера биржи Plaza II API, и Вы поймёте откуда "ноги растут".
Пожалуйста, не хамите! Кстати, уже 10!
И Вы в праве совсем не читать, что здесь написано!
Зачем тогда тема? Просто выкричаться?
Если считаете, что есть ошибка, подтвердите ее логами и кодом (никто ваши картинки расшифровывать не будет).
Если хотите найти надежное решение, послушайте, что говорят (откажитесь от событийной модели и анализируйте текущее состояние).
Я бы использовал OnTradeTransaction или OnTrade только для моментальной реакции на изменение торговой ситуации. Но всю обработку поместил бы в один обработчик, как предложил Василий (OnRefresh()).
Удачи!
Зачем тогда тема? Просто выкричаться?
Если считаете, что есть ошибка, подтвердите ее логами и кодом (никто ваши картинки расшифровывать не будет).
Если хотите найти надежное решение, послушайте, что говорят (откажитесь от событийной модели и анализируйте текущее состояние).
Я бы использовал OnTradeTransaction или OnTrade только для моментальной реакции на изменение торговой ситуации. Но всю обработку поместил бы в один обработчик, как предложил Василий (OnRefresh()).
Удачи!
komposter!
1. Или читайте ВСЁ, что написано или...
2.Что бы я не писал на этих страницах - это МОЁ право участника форума,
а ОТКРОВЕННОЕ ХАМСТВО нигде не уместно!
3. Где бы Вы не обрабатывали ошибку, если ответ сервера не тот, который должен быть - результат будет один - ОШИБКА!
4. Вы, вероятно, сам не торгуете.
pronych и ....
1. >> ОТКРОВЕННОЕ ХАМСТВО - ответ на откровенный наезд! Каков вопрос - таков ответ. А мог стать героем... ))
Вероятно, у Вас ИМЕННО такое восприятие окружающего мира...
2. ВЫ ПРОГРАММИСТЫ или "ПИСАТЕЛИ"?
3. Кто-нибудь ответит на простой вопрос: Что должен ответить сервер на команду "Модифицировать ордер"?
4. Зачем тогда документация? Статьи? Закрыл глаза и шпарь что хочешь! Всё-равно ЗАКАЗЧИК ПЛАТИТ(и сливать-то тоже ему)!