Событие на регистрацию заявки
Atom
15.02.2017
NeonNeoxin60


Не приходит событие на регистрацию заявки.

var orderWhenRegistered = order.WhenRegistered(this.Connector); orderWhenRegistered.Do(o => { this.AddWarningLog(string.Format("{0} заявка зарегистрирована: {1}", o.Comment, o)); }).Apply(this);

При регистрации (и последующем исполнении) приходит либо сразу order.WhenMatched, либо ничего. Как получить событие на регистрацию заявки на бирже? Quik 7, S# 3.1.16




Спасибо:


1 2  >
NeonNeoxin60

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


Проблема в принципе аналогична этой. http://stocksharp.com/forum/4692/problema-s-orderwhenregistered()-v-4218/

Спасибо:

Support

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


Проверю ситуацию, тогда отвечу..

Спасибо:

NeonNeoxin60

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


Вот в логе приходит регистрация, а событие не срабатывает.

0001/01/01 00:00:00.000| |QuikTrader|Connect 2017/02/17 12:03:37.538| |Quik LUA. Transactions|Connect to Unspecified/localhost:5001... 2017/02/17 12:03:37.543| |Quik LUA. Transactions|Connect to Unspecified/localhost:5001 is OK. 2017/02/17 12:03:37.557| |Quik LUA. Transactions|Sending logon to Unspecified/localhost:5001... 2017/02/17 12:03:37.578| |Quik LUA. Transactions|Logon sent to Unspecified/localhost:5001 OK. 2017/02/17 12:03:37.579| |Quik LUA. Market data|Connect to Unspecified/localhost:5001... 2017/02/17 12:03:37.581| |Quik LUA. Market data|Connect to Unspecified/localhost:5001 is OK. 2017/02/17 12:03:37.582| |Quik LUA. Market data|Sending logon to Unspecified/localhost:5001... 2017/02/17 12:03:37.583| |Quik LUA. Market data|Logon sent to Unspecified/localhost:5001 OK. 2017/02/17 12:03:37.585| |Quik LUA. Transactions|Start message processing. 2017/02/17 12:03:37.585| |Quik LUA. Market data|Start message processing. 2017/02/17 12:03:39.339| |QuikTrader|Создан новый портфель 4110OFR. 2017/02/17 12:03:39.345| |QuikTrader|Создан новый портфель 100620. 2017/02/17 12:06:56.357| |QuikTrader|RegisterOrder: 0/ Покупка Цена=165,91 Объем=10 Сост=None Бал=0 2017/02/17 12:06:56.367| |QuikTrader|RegisterOrder: 0/ Продажа Цена=16718 Объем=1 Сост=None Бал=0 2017/02/17 12:06:56.367| |QuikTrader|New order: 43405348/ Покупка Цена=165.91 Объем=10 Сост=Pending Бал=10 2017/02/17 12:06:56.367| |QuikTrader|New order: 43405349/ Продажа Цена=16718 Объем=1 Сост=Pending Бал=1 2017/02/17 12:06:56.703| |QuikTrader|Order changed: 43405349/25046406417 Продажа Цена=16718 Объем=1 Сост=Done Бал=0 2017/02/17 12:06:57.311| |QuikTrader|RegisterOrder: 0/ Продажа Цена=165,88 Объем=10 Сост=None Бал=0 2017/02/17 12:06:57.311| |QuikTrader|New order: 43405350/ Продажа Цена=165.88 Объем=10 Сост=Pending Бал=10 2017/02/17 12:06:57.431| |QuikTrader|RegisterOrder: 0/ Покупка Цена=16722 Объем=1 Сост=None Бал=0 2017/02/17 12:06:57.431| |QuikTrader|New order: 43405351/ Покупка Цена=16722 Объем=1 Сост=Pending Бал=1
Спасибо:

Support

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


Полностью этот кусок кода покажите

Спасибо:

NeonNeoxin60

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


  private void EnterStockProcessing(Order order)
        {
            order.Comment = "EnterStockProcessing";
            try {
                order.WhenChanged(this.Connector).Do(o =>
                {
                    if (o.State == OrderStates.Pending && o.TransactionId > 0) { } 
                }).Apply(this);
                var orderWhenRegisterd = order.WhenRegistered(this.Connector);
                orderWhenRegisterd.Do(o =>
                {
                    this.AddWarningLog(string.Format("{0} заявка зарегистрирована: {1}", o.Comment, o));
                    try
                    {
                    }
                    catch (Exception ex)
                    {
                        this.AddErrorLog(string.Format("{0} / {1}", ex.Message, ex.StackTrace));
                    }
                }).Apply(this); 
                var orderWhenMatched = order.WhenMatched(this.Connector);
                orderWhenMatched.Do(o =>
                {
                    this.AddWarningLog(string.Format("Полное исполнение {0} заявки: {1}", o.Comment, o));

                    try {
                    } catch (Exception ex) {
                        this.AddErrorLog(string.Format("{0} / {1}", ex.Message, ex.StackTrace));
                    }
                    this.Rules.RemoveRulesByToken(orderWhenMatched.Token, orderWhenMatched);
                }).Apply(this);
       }     
Спасибо:

NeonNeoxin60

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


WhenMatched приходит быстрее чем WhenRegistered. :
Как WhenRegistered получать всегда быстрее, чем WhenMatched?


Иногда WhenRegistered приходит... О_о"

Спасибо:

Support

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


Так все-таки событие приходит или нет?

Спасибо:

NeonNeoxin60

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


Иногда. WhenMatched видимо опережает WhenRegistered. Как сделать, чтобы WhenRegistered всегда опережал WhenMatched? Брекпоинт стоит внутри события WhenRegistered и попадает ИНОГДА. То есть преимущественно брекпоинт внутри WhenMatched срабатывает чаще.

Спасибо:

Support

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


Думаю, что никак, ведь WhenRegistered и WhenChanged это условные конструкции s# и если от биржи сразу пришел статус, что заявка исполнилась, то статус "зарегистрирована" опускается... Что это за версия S# 3.1.16?

Спасибо:

Support

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


Support: Думаю, что никак, ведь WhenRegistered и WhenChanged это условные конструкции s# и если от биржи сразу пришел статус, что заявка исполнилась, то статус "зарегистрирована" опускается, т.к. ясно что заявка была зарегистрирована.. Что это за версия S# 3.1.16?

Спасибо:
1 2  >

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

loading
clippy