4.1 OrdersChanged срабатывает 2 раза
Atom Ответить
17.04.2012


4.1 OrdersChanged срабатывает 2 раза

Код

    //изменение заявок
    Trader.OrdersChanged += orders => this.GuiAsync(() =>
    {
    
        log("Кол-во изменивших статус заявок: " + orders.Count());
        foreach (Order order in orders)
        {
            log(" Заявка:" + order.Id + "  " + order.Security.Code + " Статус:" + order.State + "" + order.Direction + " цена:" + order.Price + " Остаток=" + order.Balance);


        }


    });




12:16:36.958 Кол-во изменивших статус заявок: 1
12:16:36.958 Заявка:2764620701 GZM2 Статус:DoneSell цена:16728 Остаток=1
12:16:36.963 Кол-во изменивших статус заявок: 1
12:16:36.963 Заявка:2764620701 GZM2 Статус:DoneSell цена:16728 Остаток=1
12:16:36.968 Кол-во изменивших статус заявок: 1


В 4.0.23 такого не было

Теги:


Спасибо:




17 Ответов
Alexander

Фотография
Дата: 17.04.2012
Ответить


Распечатайте все поля order чтоб понять что менялось
К примеру - время
Спасибо:

Макс

Фотография
Дата: 18.04.2012
Ответить


Вроде ничего не менялось.

Код

log(" Заявка:" + order.Id + "  " + order.Security.Code + " Статус:" + order.State + "" + order.Direction + " цена:" + order.Price + " Остаток=" + order.Balance+" снята:"+order.CancelTime+" "+order.Latency+" "+order.State+" "+order.Status+" "+order.Time+" "+order.Type);


12:08:44.723 Кол-во изменивших статус заявок: 1
12:08:44.724 Заявка:2766635123 LKM2 Статус:DoneSell цена:17348 Остаток=0 снята: 00:00:00.2559983 Done 18.04.2012 12:08:44 Limit
12:08:44.724 Кол-во изменивших статус заявок: 1
12:08:44.724 Заявка:2766635123 LKM2 Статус:DoneSell цена:17348 Остаток=0 снята: 00:00:00.2559983 Done 18.04.2012 12:08:44 Limit
Автор топика
Спасибо:

Alexander

Фотография
Дата: 18.04.2012
Ответить


order.Time с мс выведите
Спасибо:

Макс

Фотография
Дата: 18.04.2012
Ответить


Код

log(" Заявка:" + order.Id + "  " + order.Security.Code + " Статус:" + order.State + "" + order.Direction + " цена:" + order.Price + " Остаток=" + order.Balance + " снята:" + order.CancelTime + " " + order.Latency + " " + order.State + " " + order.Status + " вр:" + order.Time + " ms:" + order.Time.Millisecond + " type:"+order.Type);


13:14:38.095 Кол-во изменивших статус заявок: 1
13:14:38.095 Заявка:2766922764 GZM2 Статус:DoneBuy цена:16342 Остаток=0 снята: 00:00:00.3223834 Done вр:18.04.2012 13:14:37 ms:943 type:Limit
13:14:38.096 Кол-во изменивших статус заявок: 1
13:14:38.096 Заявка:2766922764 GZM2 Статус:DoneBuy цена:16342 Остаток=0 снята: 00:00:00.3223834 Done вр:18.04.2012 13:14:37 ms:943 type:Limit
Автор топика
Спасибо:

Alexander

Фотография
Дата: 18.04.2012
Ответить


4.1 последняя?
Я правильно понимаю что это происходит во время сделки по заявке? order.Volume тоже 1?
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 18.04.2012
Ответить


Та же фигня. Событие изменения ордера приходит 2 раза, причем это уже очень давно, не только в последней версии.

UPD: Посмотрел внимательно, два раза приходит только когда ордер отменен, с интервалом 20-50мс, причем это именно события ордер изменен (а не событие отмены ордера). Странно, т.к. после того как ордер отменен по нему вроде как ничего уже придти не может
Спасибо:

Макс

Фотография
Дата: 18.04.2012
Ответить


Alexander Mukhanchikov Перейти
4.1 последняя?

Да
Alexander Mukhanchikov Перейти
Я правильно понимаю что это происходит во время сделки по заявке? order.Volume тоже 1?

При сделке, и при перерегистрации.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 18.04.2012
Ответить


FiNick Перейти
Та же фигня. Событие изменения ордера приходит 2 раза, причем это уже очень давно, не только в последней версии.



Лечили. Теперь не должно выкидываться если не меняются поля.



Заявка кидается в стакан или лимитка глубоко в стакан? Volume чему равен?
Спасибо:

Макс

Фотография
Дата: 18.04.2012
Ответить


Заявка лимитная по ask при покупке,bid при продаже
Добавил объем, он тоже не меняется.

14:02:44.841 Кол-во изменивших статус заявок: 1
14:02:44.842 Заявка:2767137179 GZM2 Статус:DoneBuy цена:16286 Остаток=0 снята: 00:00:00.1031914 Done вр:18.04.2012 14:02:44 ms:548 type:Limit vol=1
14:02:44.842 Кол-во изменивших статус заявок: 1
14:02:44.842 Заявка:2767137179 GZM2 Статус:DoneBuy цена:16286 Остаток=0 снята: 00:00:00.1031914 Done вр:18.04.2012 14:02:44 ms:548 type:Limit vol=1
Автор топика
Спасибо:

Alexander

Фотография
Дата: 18.04.2012
Ответить


FiNick Перейти
UPD: Посмотрел внимательно, два раза приходит только когда ордер отменен, с интервалом 20-50мс, причем это именно события ордер изменен (а не событие отмены ордера). Странно, т.к. после того как ордер отменен по нему вроде как ничего уже придти не может


Мог измениться CancelTime.
В первом случае мы его выставили по времени шлюза - когда пришёл ответ на транзакцию.
Во второй раз - по времени из ордер лога, т.е. время отмены ордера на бирже, что более правильно.

Т.е. проверяйте все поля в событиях.
Конкретно - CancelTime, Balance, State
Спасибо:

Alexander

Фотография
Дата: 18.04.2012
Ответить


Сделал небольшой фикс, смотрите после апдейта рефов на codeplex
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 14.05.2012
Ответить


Еще раз подниму вопрос, т.к. не все тут ясно.
Допустим приходит некий сигнал на заход в позицию. Я выставляю заявку на покупку 20-ти контрактов. Через 30мс сигнал пропадает и я должен отменить/закрыть позицию. Я ставлю заявку на отмену.
Через 30мс приходит событие OrderChanged, в котором говорится что моя заявка отменена, и мой робот соответственно забывает про эту заявку и про то, что вообще какую-то позицию собирался набрать.
НО! Через еще 20мс опять приходит событие OrderChanged, в котором говорится что моя заявка не просто отменена, а по ней еще успел пройти обьем 10 контрактов. Мой робот на это не реагирует, т.к. уже забыл про отмененную заявку.
Вопрос! Вроде как после первого события заявка уже Done, как мне понять, что по ней еще что-то придти может?
Спасибо:

Alexander

Фотография
Дата: 14.05.2012
Ответить


После снятия 1 заявки биржа присылает ответ сколько лотов осталось (order.Balance).
Что мы и проставляем. Поэтому можете посмотреть в событии OrderChanged на order.Balance

Да, получается что потом тоже может придти OrderChanged, даже после Done, но изменений в заявке кроме LastChangeTime не будет - Balance останется прежним. Какие предложения чтоб этого не было?
Спасибо:

Alexander

Фотография
Дата: 14.05.2012
Ответить


Как вариант - если биржа присылает ответ по транзакции снятия что Balance > 1 и Balance != Volume - не посылать событие изменения заявки.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 14.05.2012
Ответить


Alexander Mukhanchikov Перейти
После снятия 1 заявки биржа присылает ответ сколько лотов осталось (order.Balance).
Что мы и проставляем. Поэтому можете посмотреть в событии OrderChanged на order.Balance


Очень странно. Мне сначало пришло что Balance == 20, а потом что Balance == 10. В обоих случаях IsCanceled == true.
Спасибо:

Alexander

Фотография
Дата: 14.05.2012
Ответить


FiNick Перейти
Alexander Mukhanchikov Перейти
После снятия 1 заявки биржа присылает ответ сколько лотов осталось (order.Balance).
Что мы и проставляем. Поэтому можете посмотреть в событии OrderChanged на order.Balance


Очень странно. Мне сначало пришло что Balance == 20, а потом что Balance == 10. В обоих случаях IsCanceled == true.



Версия PlazaTrader насколько старая? Должна быть хотя бы майская.
Спасибо:

FiNick

Фотография
Благотворитель
Дата: 14.05.2012
Ответить


Не майская, попробую новую поставить. Просто лень было тестить, как в новой версии перерегистрация реализована, потому не обновлял.
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy