Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
***
На данный момент, есть нестыковка логическая, если говорить о OnTradeTransaction() в присутствии TRADE_TRANSACTION_REQUEST. Этот тип полуячается, возвращает признак того, что произолшла какая-то операция(сделка) и всё. Как по мне, это лишнее. Проще проверять конкретно.. сработал тип такой-то, тогда делаем то-то и всё..
Этот абзац я вообще не понял.
Этот абзац я вообще не понял.
Я имел ввиду, странно спроектирована структура работы с событиями в этом плане. TRADE_TRANSACTION_REQUEST не нужен вообще. Проще было бы сразу отлавливать необходимое событие. Приведу пример, без какой-либо конкретики, т.к. мы говорим о том, что я думаю, а не о том, что имеется. Например, мне хочется что-то сделать, если последний открытый ордер перейдёт в состояние позиции.
Вместо того, что бы узнавать от сервера, что произошло событие TRADE_TRANSACTION_REQUEST, что не является конкретным, а лишь даёт возможность дальше по цепочке узнавать необходимую информацию, можно было бы сделать проще:
if (произошло добавление новой позиции.. что означает ордер сработал) { делаем то, что нам нужно }
Вот и всё. А, то что я вижу на самом деле, чутка удивляет. Мы получаем от сервера ответ не канкретный, а то, что что-то произошло. Дальше нужно проверять что.. Вот что я имею ввиду. Это излишество.
Я имел ввиду, странно спроектирована структура работы с событиями в этом плане. TRADE_TRANSACTION_REQUEST не нужен вообще. Проще было бы сразу отлавливать необходимое событие. Приведу пример, без какой-либо конкретики, т.к. мы говорим о том, что я думаю, а не о том, что имеется. Например, мне хочется что-то сделать, если последний открытый ордер перейдёт в состояние позиции.
Вместо того, что бы узнавать от сервера, что произошло событие TRADE_TRANSACTION_REQUEST, что не является конкретным, а лишь даёт возможность дальше по цепочке узнавать необходимую информацию, можно было бы сделать проще:
Вот и всё. А, то что я вижу на самом деле, чутка удивляет. Мы получаем от сервера ответ не канкретный, а то, что что-то произошло. Дальше нужно проверять что.. Вот что я имею ввиду. Это излишество.
Где в моём тексте Вы увидели TRADE_TRANSACTION_REQUEST (Уведомление о том, что торговый запрос обработан сервером, и результат его обработки получен)? Я говорил о TRADE_TRANSACTION_DEAL_ADD (Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета).
Разницу видите?
Даже вот в статье:
Где в моём тексте Вы увидели TRADE_TRANSACTION_REQUEST (Уведомление о том, что торговый запрос обработан сервером, и результат его обработки получен)? Я говорил о TRADE_TRANSACTION_DEAL_ADD (Добавление сделки в историю. Осуществляется в результате исполнения ордера или проведения операций с балансом счета).
Разницу видите?
Да. я же написал, что перескочил на OnTradeTransaction(), потому что у него хоть какие-то возможности есть. а в OnTrade(0 скудно совсем. но не всё так как хотелось бы. Выше написал свои мысли..
Не могу понять Вашу логику - скачите из одного -в другое.
Вышел из дискуссии.
Все просто.
OnTrade() сообщает, что произошли изменения.
OnTradeTransaction() сообщает, что произошли изменения и какие именно.
Соответственно, для задачи типикстартера лучше подходит OnTradeTransaction.
Для обнаружения срабатывания лимитного ордера и превращения его в позицию нужно искать сообщение о свершившейся сделке с номером по этому ордеру.
trans.type == TRADE_TRANSACTION_DEAL_ADD && trans.order == ИНТЕРЕСУЮЩИЙ ОРДЕР
Однако на биржевых инструментах по ордеру может свершиться несколько сделок и остаток объема по ордеру еще останется активным. В этом случае можно проверять, что ордер перемещеается в историю и состояние ордера станет FILLED
Однако на биржевых инструментах по ордеру может свершиться несколько сделок и остаток объема по ордеру еще останется активным. В этом случае можно проверять, что ордер перемещеается в историю и состояние ордера станет FILLED
Если ордер исполнился частично, то его не будет в Истории до тех пор, пока он не исполнится полностью (но здесь делать FILLED-проверку делать бессмыленно), либо будет отменен (но здесь и STATE станет Canceled, т.е. опять же FILLED-проверка не актуальна).